Add mock block generator
This commit is contained in:
parent
61d7ee49f3
commit
55e30eb13b
@ -28,6 +28,27 @@ class MockFilterError(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class MockBlockGenerator:
|
||||
|
||||
def __init__(self, offset=0):
|
||||
self.blocks = {}
|
||||
self.offset = offset
|
||||
self.cursor = offset
|
||||
|
||||
|
||||
def generate(self, spec=[], driver=None):
|
||||
for v in spec:
|
||||
txs = []
|
||||
for i in range(v):
|
||||
tx_hash = os.urandom(32).hex()
|
||||
tx = MockTx(0, tx_hash)
|
||||
txs.append(tx)
|
||||
|
||||
block = MockBlock(self.cursor, txs)
|
||||
driver.add_block(block)
|
||||
self.cursor += 1
|
||||
|
||||
|
||||
class MockConn:
|
||||
"""Noop connection mocker.
|
||||
|
||||
@ -72,6 +93,7 @@ class MockBlock:
|
||||
"""
|
||||
self.number = number
|
||||
self.txs = txs
|
||||
self.hash = os.urandom(32).hex()
|
||||
|
||||
|
||||
def tx(self, i):
|
||||
@ -141,6 +163,7 @@ class MockDriver(SyncDriver):
|
||||
|
||||
|
||||
def add_block(self, block):
|
||||
logg.debug('add block {} {} with {} txs'.format(block.number, block.hash, len(block.txs)))
|
||||
self.blocks[block.number] = block
|
||||
|
||||
|
||||
|
@ -16,6 +16,7 @@ from chainsyncer.error import (
|
||||
SyncDone,
|
||||
)
|
||||
from chainsyncer.unittest import (
|
||||
MockBlockGenerator,
|
||||
MockFilter,
|
||||
MockConn,
|
||||
MockTx,
|
||||
@ -63,18 +64,8 @@ class TestFilter(unittest.TestCase):
|
||||
|
||||
def test_driver(self):
|
||||
drv = MockDriver(self.store, target=1)
|
||||
|
||||
tx_hash = os.urandom(32).hex()
|
||||
tx = MockTx(0, tx_hash)
|
||||
block = MockBlock(0, [tx_hash])
|
||||
drv.add_block(block)
|
||||
|
||||
tx_hash_one = os.urandom(32).hex()
|
||||
tx = MockTx(0, tx_hash_one)
|
||||
tx_hash_two = os.urandom(32).hex()
|
||||
tx = MockTx(1, tx_hash_two)
|
||||
block = MockBlock(1, [tx_hash_one, tx_hash_two])
|
||||
drv.add_block(block)
|
||||
generator = MockBlockGenerator()
|
||||
generator.generate([1, 2], driver=drv)
|
||||
|
||||
fltr_one = MockFilter('foo')
|
||||
self.store.register(fltr_one)
|
||||
@ -86,11 +77,8 @@ class TestFilter(unittest.TestCase):
|
||||
|
||||
def test_driver_interrupt_noresume(self):
|
||||
drv = MockDriver(self.store, target=1)
|
||||
|
||||
tx_hash = os.urandom(32).hex()
|
||||
tx = MockTx(0, tx_hash)
|
||||
block = MockBlock(0, [tx_hash])
|
||||
drv.add_block(block)
|
||||
generator = MockBlockGenerator()
|
||||
generator.generate([1], driver=drv)
|
||||
|
||||
fltr_one = MockFilter('foo', brk_hard=1)
|
||||
self.store.register(fltr_one)
|
||||
@ -110,30 +98,11 @@ class TestFilter(unittest.TestCase):
|
||||
with self.assertRaises(LockError):
|
||||
drv = MockDriver(store, target=1)
|
||||
|
||||
# drv.add_block(block)
|
||||
#
|
||||
# tx_hash_one = os.urandom(32).hex()
|
||||
# tx = MockTx(0, tx_hash_one)
|
||||
# tx_hash_two = os.urandom(32).hex()
|
||||
# tx = MockTx(1, tx_hash_two)
|
||||
# block = MockBlock(1, [tx_hash_one, tx_hash_two])
|
||||
# drv.add_block(block)
|
||||
|
||||
# drv.run(self.conn)
|
||||
|
||||
|
||||
def test_driver_interrupt_resume(self):
|
||||
def test_driver_interrupt_filter(self):
|
||||
drv = MockDriver(self.store, target=1)
|
||||
|
||||
tx_hash = os.urandom(32).hex()
|
||||
tx = MockTx(0, tx_hash)
|
||||
block = MockBlock(0, [tx_hash])
|
||||
drv.add_block(block)
|
||||
|
||||
tx_hash = os.urandom(32).hex()
|
||||
tx = MockTx(0, tx_hash)
|
||||
block = MockBlock(1, [tx_hash])
|
||||
drv.add_block(block)
|
||||
generator = MockBlockGenerator()
|
||||
generator.generate([1, 1], driver=drv)
|
||||
|
||||
fltr_one = MockFilter('foo', brk=1)
|
||||
self.store.register(fltr_one)
|
||||
@ -147,5 +116,11 @@ class TestFilter(unittest.TestCase):
|
||||
drv.run(self.conn)
|
||||
|
||||
|
||||
def test_driver_interrupt_sync(self):
|
||||
generator = MockBlockGenerator()
|
||||
drv = MockDriver(self.store, target=1)
|
||||
generator.generate([1, 2], driver=drv)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
Loading…
Reference in New Issue
Block a user