2021-09-27 20:37:13 +02:00
|
|
|
# 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 (
|
2021-09-27 21:37:48 +02:00
|
|
|
# range_to_backends,
|
|
|
|
sync_split,
|
2021-09-27 20:37:13 +02:00
|
|
|
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):
|
|
|
|
|
2021-09-27 21:37:48 +02:00
|
|
|
|
2021-09-27 20:37:13 +02:00
|
|
|
def test_range_split_even(self):
|
2021-09-27 21:37:48 +02:00
|
|
|
ranges = sync_split(5, 20, 3)
|
|
|
|
self.assertEqual(len(ranges), 3)
|
|
|
|
self.assertEqual(ranges[0], (5, 9))
|
|
|
|
self.assertEqual(ranges[1], (10, 14))
|
|
|
|
self.assertEqual(ranges[2], (15, 19))
|
2021-09-27 20:37:13 +02:00
|
|
|
|
2021-09-27 21:37:48 +02:00
|
|
|
# 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())
|
2021-09-27 20:37:13 +02:00
|
|
|
|
|
|
|
|
2021-09-27 21:37:48 +02:00
|
|
|
# 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)
|
|
|
|
#
|
2021-09-27 20:37:13 +02:00
|
|
|
def test_range_syncer(self):
|
|
|
|
chain_spec = ChainSpec('evm', 'bloxberg', 8996, 'foo')
|
2021-09-27 21:37:48 +02:00
|
|
|
backend = MemBackend.custom(chain_spec, 20, 5, 3, 5, 10)
|
|
|
|
syncer = ThreadPoolRangeHistorySyncer(MockConn, 3, backend, self.interface)
|
|
|
|
syncer.loop(0.1, None)
|
2021-09-27 20:37:13 +02:00
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
unittest.main()
|