2 import errno, platform, subprocess, tempfile
5 from bup.helpers import mkdirp
10 bup_tmp = os.path.realpath('../../../t/tmp')
15 initial_failures = wvfailure_count()
16 tmpdir = tempfile.mkdtemp(dir=bup_tmp, prefix='bup-tbloom-')
17 hashes = [os.urandom(20) for i in range(100)]
22 ix.shatable = ''.join(hashes)
24 b = bloom.create(tmpdir + '/pybuptest.bloom', expected=100, k=k)
26 WVPASSLT(b.pfalse_positive(), .1)
28 b = bloom.ShaBloom(tmpdir + '/pybuptest.bloom')
31 all_present &= b.exists(h)
34 for h in [os.urandom(20) for i in range(1000)]:
37 WVPASSLT(false_positives, 5)
38 os.unlink(tmpdir + '/pybuptest.bloom')
40 tf = tempfile.TemporaryFile()
41 b = bloom.create('bup.bloom', f=tf, expected=100)
42 WVPASSEQ(b.rwfile, tf)
45 # Test large (~1GiB) filter. This may fail on s390 (31-bit
46 # architecture), and anywhere else where the address space is
47 # sufficiently limited.
48 tf = tempfile.TemporaryFile()
51 b = bloom.create('bup.bloom', f=tf, expected=2**28, delaywrite=False)
52 except EnvironmentError as ex:
53 (ptr_width, linkage) = platform.architecture()
54 if ptr_width == '32bit' and ex.errno == errno.ENOMEM:
55 WVMSG('skipping large bloom filter test (mmap probably failed) '
62 if wvfailure_count() == initial_failures:
63 subprocess.call(['rm', '-rf', tmpdir])