Add thread range generator

This commit is contained in:
nolash
2021-09-27 20:37:13 +02:00
parent db6128f823
commit a49c152e24
11 changed files with 243 additions and 12 deletions

View File

@@ -184,5 +184,16 @@ class TestDatabase(TestBase):
self.assertEqual(flags, 5)
def test_backend_sql_custom(self):
chain_spec = ChainSpec('evm', 'bloxberg', 8996, 'foo')
flags = 5
flags_target = 1023
flag_count = 10
backend = SQLBackend.custom(chain_spec, 666, 42, 2, flags, flag_count)
self.assertEqual(((42, 2), flags), backend.start())
self.assertEqual(((42, 2), flags), backend.get())
self.assertEqual((666, flags_target), backend.target())
if __name__ == '__main__':
unittest.main()

29
tests/test_mem.py Normal file
View File

@@ -0,0 +1,29 @@
# standard imports
import unittest
# external imports
from chainlib.chain import ChainSpec
# local imports
from chainsyncer.backend.memory import MemBackend
# testutil imports
from tests.chainsyncer_base import TestBase
class TestMem(TestBase):
def test_backend_mem_custom(self):
chain_spec = ChainSpec('evm', 'bloxberg', 8996, 'foo')
flags = int(5).to_bytes(2, 'big')
#flags_target = int(1024-1).to_bytes(2, 'big')
flag_count = 10
backend = MemBackend.custom(chain_spec, 666, 42, 2, flags, flag_count, object_id='xyzzy')
self.assertEqual(((42, 2), flags), backend.start())
self.assertEqual(((42, 2), flags), backend.get())
self.assertEqual((666, flags), backend.target())
self.assertEqual(backend.object_id, 'xyzzy')
if __name__ == '__main__':
unittest.main()

12
tests/test_thread.py Normal file
View File

@@ -0,0 +1,12 @@
# standard imports
import logging
import unittest
# test imports
from tests.chainsyncer_base import TestBase
class TestThreadRange(TestBase):
def test_hello(self):
ThreadPoolRangeHistorySyncer(None, 3)

View File

@@ -0,0 +1,56 @@
# standard imports
import unittest
import logging
# external imports
from chainlib.chain import ChainSpec
# local imports
from chainsyncer.backend.memory import MemBackend
from chainsyncer.driver.threadrange import (
range_to_backends,
ThreadPoolRangeHistorySyncer,
)
from chainsyncer.unittest.base import MockConn
# testutil imports
from tests.chainsyncer_base import TestBase
logging.basicConfig(level=logging.DEBUG)
logg = logging.getLogger()
class TestThreadRange(TestBase):
def test_range_split_even(self):
chain_spec = ChainSpec('evm', 'bloxberg', 8996, 'foo')
backends = range_to_backends(chain_spec, 5, 3, 20, 5, 10, MemBackend, 3)
self.assertEqual(len(backends), 3)
self.assertEqual(((5, 3), 5), backends[0].start())
self.assertEqual((9, 1023), backends[0].target())
self.assertEqual(((10, 0), 0), backends[1].start())
self.assertEqual((14, 1023), backends[1].target())
self.assertEqual(((15, 0), 0), backends[2].start())
self.assertEqual((19, 1023), backends[2].target())
def test_range_split_underflow(self):
chain_spec = ChainSpec('evm', 'bloxberg', 8996, 'foo')
backends = range_to_backends(chain_spec, 5, 3, 7, 5, 10, MemBackend, 3)
self.assertEqual(len(backends), 2)
self.assertEqual(((5, 3), 5), backends[0].start())
self.assertEqual((5, 1023), backends[0].target())
self.assertEqual(((6, 0), 0), backends[1].start())
self.assertEqual((6, 1023), backends[1].target())
def test_range_syncer(self):
chain_spec = ChainSpec('evm', 'bloxberg', 8996, 'foo')
backends = range_to_backends(chain_spec, 5, 3, 20, 5, 10, MemBackend, 3)
syncer = ThreadPoolRangeHistorySyncer(MockConn, 3, backends, self.interface)
syncer.loop(1, None)
if __name__ == '__main__':
unittest.main()