Add filter to file backend

This commit is contained in:
nolash
2021-04-10 00:11:10 +02:00
parent c2d3d243b0
commit 3b40f0e6f6
3 changed files with 130 additions and 3 deletions

View File

@@ -1,4 +1,5 @@
# standard imports
import logging
import uuid
import os
import unittest
@@ -10,6 +11,9 @@ from chainlib.chain import ChainSpec
# local imports
from chainsyncer.backend_file import SyncerFileBackend
logging.basicConfig(level=logging.DEBUG)
logg = logging.getLogger().getChild(__name__)
script_dir = os.path.dirname(__file__)
tmp_test_dir = os.path.join(script_dir, 'testdata', 'tmp')
chainsyncer_test_dir = os.path.join(tmp_test_dir, 'chainsyncer')
@@ -21,6 +25,7 @@ class TestFile(unittest.TestCase):
def setUp(self):
self.chain_spec = ChainSpec('foo', 'bar', 42, 'baz')
self.uu = SyncerFileBackend.create_object(self.chain_spec, None, base_dir=tmp_test_dir)
logg.debug('made uu {} for {}'.format(self.uu, self.chain_spec))
self.o = SyncerFileBackend(self.chain_spec, self.uu, base_dir=tmp_test_dir)
@@ -30,6 +35,7 @@ class TestFile(unittest.TestCase):
shutil.rmtree(chainsyncer_test_dir)
@unittest.skip('foo')
def test_set(self):
self.o.set(42, 13)
@@ -41,6 +47,7 @@ class TestFile(unittest.TestCase):
self.assertEqual(state[1], 13)
@unittest.skip('foo')
def test_initial(self):
local_uu = SyncerFileBackend.initial(self.chain_spec, 1337, start_block_height=666, base_dir=tmp_test_dir)
@@ -55,6 +62,7 @@ class TestFile(unittest.TestCase):
self.assertEqual(pair[1], 0)
@unittest.skip('foo')
def test_resume(self):
for i in range(1, 10):
local_uu = SyncerFileBackend.initial(self.chain_spec, 666, start_block_height=i, base_dir=tmp_test_dir)
@@ -69,6 +77,7 @@ class TestFile(unittest.TestCase):
last = o.block_height_offset
@unittest.skip('foo')
def test_first(self):
for i in range(1, 10):
local_uu = SyncerFileBackend.initial(self.chain_spec, 666, start_block_height=i, base_dir=tmp_test_dir)
@@ -78,5 +87,35 @@ class TestFile(unittest.TestCase):
self.assertEqual(first_entry.block_height_offset, 9)
def test_filter(self):
self.assertEqual(len(self.o.filter), 1)
self.o.register_filter('foo')
self.o.register_filter('bar')
o = SyncerFileBackend(self.chain_spec, self.uu, base_dir=tmp_test_dir)
self.assertEqual(o.filter_count, 2)
self.assertEqual(o.filter_names, ['foo', 'bar'])
self.assertEqual(len(o.filter), 1)
self.o.complete_filter(1)
self.assertEqual(self.o.filter, b'\x40')
self.o.complete_filter(0)
self.assertEqual(self.o.filter, b'\xc0')
o = SyncerFileBackend(self.chain_spec, self.uu, base_dir=tmp_test_dir)
self.assertEqual(o.filter, b'\xc0')
with self.assertRaises(IndexError):
self.o.complete_filter(2)
self.o.register_filter('baz')
self.o.complete_filter(2)
if __name__ == '__main__':
unittest.main()