chainsyncer/tests/test_thread_range.py

57 lines
1.9 KiB
Python

# 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()