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(), test_tempdir('bup-tbloom-') as tmpdir:
14 hashes = [os.urandom(20) for i in range(100)]
19 ix.shatable = ''.join(hashes)
21 b = bloom.create(tmpdir + '/pybuptest.bloom', expected=100, k=k)
23 WVPASSLT(b.pfalse_positive(), .1)
25 b = bloom.ShaBloom(tmpdir + '/pybuptest.bloom')
28 all_present &= b.exists(h)
31 for h in [os.urandom(20) for i in range(1000)]:
34 WVPASSLT(false_positives, 5)
35 os.unlink(tmpdir + '/pybuptest.bloom')
37 tf = tempfile.TemporaryFile(dir=tmpdir)
38 b = bloom.create('bup.bloom', f=tf, expected=100)
39 WVPASSEQ(b.rwfile, tf)
42 # Test large (~1GiB) filter. This may fail on s390 (31-bit
43 # architecture), and anywhere else where the address space is
44 # sufficiently limited.
45 tf = tempfile.TemporaryFile(dir=tmpdir)
48 b = bloom.create('bup.bloom', f=tf, expected=2**28,
50 except EnvironmentError as ex:
51 (ptr_width, linkage) = platform.architecture()
52 if ptr_width == '32bit' and ex.errno == errno.ENOMEM:
53 WVMSG('skipping large bloom filter test (mmap probably failed) '