Skip to content

Commit

Permalink
saves/loads elements_added on BloomFilters during export
Browse files Browse the repository at this point in the history
  • Loading branch information
volker48 committed Aug 6, 2020
1 parent ef4d8ab commit c64ddf3
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 9 deletions.
12 changes: 7 additions & 5 deletions probables/blooms/expandingbloom.py
Expand Up @@ -150,8 +150,8 @@ def export(self, filepath):
with open(filepath, 'wb') as fileobj:
# add all the different Bloom bit arrays...
for blm in self._blooms:
rep = 'B' * blm.bloom_length
fileobj.write(pack(rep, *blm.bloom))
rep = 'Q' + 'B' * blm.bloom_length
fileobj.write(pack(rep, blm.elements_added, *blm.bloom))
fileobj.write(pack('QQQf', len(self._blooms),
self.estimated_elements,
self.elements_added,
Expand All @@ -175,9 +175,11 @@ def __load(self, filename):
false_positive_rate=self.__fpr,
hash_function=self.__hash_func)
# now we need to read in the correct number of bytes...
offset = calcsize('B') * blm.bloom_length
rep = 'B' * blm.bloom_length
blm._bloom = list(unpack(rep, fileobj.read(offset)))
offset = calcsize('Q') + calcsize('B') * blm.bloom_length
rep = 'Q' + 'B' * blm.bloom_length
elements_added, *bloom_bytes = list(unpack(rep, fileobj.read(offset)))
blm._bloom = bloom_bytes
blm.elements_added = elements_added
self._blooms.append(blm)


Expand Down
8 changes: 4 additions & 4 deletions tests/expandingbloom_test.py
Expand Up @@ -81,14 +81,14 @@ def test_ebf_export(self):
''' basic expanding Bloom Filter export test '''
blm = ExpandingBloomFilter(est_elements=25, false_positive_rate=0.05)
blm.export('test.ebf')
self.assertEqual(calc_file_md5('test.ebf'), '1581beab91f83b7e5aaf0f059ee94eaf')
self.assertEqual(calc_file_md5('test.ebf'), 'eb5769ae9babdf7b37d6ce64d58812bc')
os.remove('test.ebf')

def test_ebf_import_empty(self):
''' test that expanding Bloom Filter is correct on import '''
blm = ExpandingBloomFilter(est_elements=25, false_positive_rate=0.05)
blm.export('test.ebf')
self.assertEqual(calc_file_md5('test.ebf'), '1581beab91f83b7e5aaf0f059ee94eaf')
self.assertEqual(calc_file_md5('test.ebf'), 'eb5769ae9babdf7b37d6ce64d58812bc')

blm2 = ExpandingBloomFilter(filepath='test.ebf')
for bloom in blm2._blooms:
Expand Down Expand Up @@ -217,14 +217,14 @@ def test_rfb_basic_export(self):
''' basic rotating Bloom Filter export test '''
blm = RotatingBloomFilter(est_elements=25, false_positive_rate=0.05)
blm.export('test.rbf')
self.assertEqual(calc_file_md5('test.rbf'), '1581beab91f83b7e5aaf0f059ee94eaf')
self.assertEqual(calc_file_md5('test.rbf'), 'eb5769ae9babdf7b37d6ce64d58812bc')
os.remove('test.rbf')

def test_rbf_import_empty(self):
''' test that rotating Bloom Filter is correct on import '''
blm = RotatingBloomFilter(est_elements=25, false_positive_rate=0.05)
blm.export('test.rbf')
self.assertEqual(calc_file_md5('test.rbf'), '1581beab91f83b7e5aaf0f059ee94eaf')
self.assertEqual(calc_file_md5('test.rbf'), 'eb5769ae9babdf7b37d6ce64d58812bc')

blm2 = ExpandingBloomFilter(filepath='test.rbf')
for bloom in blm2._blooms:
Expand Down

0 comments on commit c64ddf3

Please sign in to comment.