80 lines
1.6 KiB
Python
80 lines
1.6 KiB
Python
# third-party imports
|
|
import pytest
|
|
|
|
# local imports
|
|
from cic_eth.db.models.sync import BlockchainSync
|
|
from cic_eth.sync.backend import SyncerBackend
|
|
|
|
|
|
def test_scratch(
|
|
init_database,
|
|
):
|
|
|
|
with pytest.raises(ValueError):
|
|
s = SyncerBackend('Testchain:666', 13)
|
|
|
|
syncer = SyncerBackend.live('Testchain:666', 13)
|
|
|
|
s = SyncerBackend('Testchain:666', syncer.object_id)
|
|
|
|
|
|
|
|
def test_live(
|
|
init_database,
|
|
):
|
|
|
|
s = SyncerBackend.live('Testchain:666', 13)
|
|
|
|
s.connect()
|
|
assert s.db_object.target() == None
|
|
s.disconnect()
|
|
|
|
assert s.get() == (13, 0)
|
|
|
|
s.set(14, 1)
|
|
assert s.get() == (14, 1)
|
|
|
|
|
|
def test_resume(
|
|
init_database,
|
|
):
|
|
|
|
live = SyncerBackend.live('Testchain:666', 13)
|
|
live.set(13, 2)
|
|
|
|
resumes = SyncerBackend.resume('Testchain:666', 26)
|
|
|
|
assert len(resumes) == 1
|
|
resume = resumes[0]
|
|
|
|
assert resume.get() == (13, 2)
|
|
|
|
resume.set(13, 4)
|
|
assert resume.get() == (13, 4)
|
|
assert resume.start() == (13, 2)
|
|
assert resume.target() == 26
|
|
|
|
|
|
def test_unsynced(
|
|
init_database,
|
|
):
|
|
|
|
live = SyncerBackend.live('Testchain:666', 13)
|
|
live.set(13, 2)
|
|
|
|
resumes = SyncerBackend.resume('Testchain:666', 26)
|
|
live = SyncerBackend.live('Testchain:666', 26)
|
|
resumes[0].set(18, 12)
|
|
|
|
resumes = SyncerBackend.resume('Testchain:666', 42)
|
|
|
|
assert len(resumes) == 2
|
|
|
|
assert resumes[0].start() == (13, 2)
|
|
assert resumes[0].get() == (18, 12)
|
|
assert resumes[0].target() == 26
|
|
|
|
assert resumes[1].start() == (26, 0)
|
|
assert resumes[1].get() == (26, 0)
|
|
assert resumes[1].target() == 42
|