1 import errno, platform, tempfile
3 from bup.helpers import *
6 bup_tmp = os.path.realpath('../../../t/tmp')
11 initial_failures = wvfailure_count()
12 tmpdir = tempfile.mkdtemp(dir=bup_tmp, prefix='bup-tbloom-')
13 hashes = [os.urandom(20) for i in range(100)]
18 ix.shatable = ''.join(hashes)
20 b = bloom.create(tmpdir + '/pybuptest.bloom', expected=100, k=k)
22 WVPASSLT(b.pfalse_positive(), .1)
24 b = bloom.ShaBloom(tmpdir + '/pybuptest.bloom')
27 all_present &= b.exists(h)
30 for h in [os.urandom(20) for i in range(1000)]:
33 WVPASSLT(false_positives, 5)
34 os.unlink(tmpdir + '/pybuptest.bloom')
36 tf = tempfile.TemporaryFile()
37 b = bloom.create('bup.bloom', f=tf, expected=100)
38 WVPASSEQ(b.rwfile, tf)
41 # Test large (~1GiB) filter. This may fail on s390 (31-bit
42 # architecture), and anywhere else where the address space is
43 # sufficiently limited.
44 tf = tempfile.TemporaryFile()
47 b = bloom.create('bup.bloom', f=tf, expected=2**28, delaywrite=False)
48 except EnvironmentError, ex:
49 (ptr_width, linkage) = platform.architecture()
50 if ptr_width == '32bit' and ex.errno == errno.ENOMEM:
51 WVMSG('skipping large bloom filter test (mmap probably failed) '
58 if wvfailure_count() == initial_failures:
59 subprocess.call(['rm', '-rf', tmpdir])