2 import errno, platform, tempfile
7 from bup.helpers import mkdirp
8 from buptest import no_lingering_errors, test_tempdir
13 with no_lingering_errors():
14 with test_tempdir('bup-tbloom-') as tmpdir:
15 hashes = [os.urandom(20) for i in range(100)]
20 ix.shatable = ''.join(hashes)
22 b = bloom.create(tmpdir + '/pybuptest.bloom', expected=100, k=k)
24 WVPASSLT(b.pfalse_positive(), .1)
26 b = bloom.ShaBloom(tmpdir + '/pybuptest.bloom')
29 all_present &= b.exists(h)
32 for h in [os.urandom(20) for i in range(1000)]:
35 WVPASSLT(false_positives, 5)
36 os.unlink(tmpdir + '/pybuptest.bloom')
38 tf = tempfile.TemporaryFile(dir=tmpdir)
39 b = bloom.create('bup.bloom', f=tf, expected=100)
40 WVPASSEQ(b.rwfile, tf)
43 # Test large (~1GiB) filter. This may fail on s390 (31-bit
44 # architecture), and anywhere else where the address space is
45 # sufficiently limited.
46 tf = tempfile.TemporaryFile(dir=tmpdir)
49 b = bloom.create('bup.bloom', f=tf, expected=2**28,
51 except EnvironmentError as ex:
52 (ptr_width, linkage) = platform.architecture()
53 if ptr_width == '32bit' and ex.errno == errno.ENOMEM:
54 WVMSG('skipping large bloom filter test (mmap probably failed) '