forked from LBRYCommunity/lbry-sdk
more resilient test
This commit is contained in:
parent
147b9d5ad1
commit
a39f87b3c5
3 changed files with 48 additions and 36 deletions
|
@ -87,7 +87,7 @@ def process_claimtrie(heights):
|
|||
done += chunk_size
|
||||
p.step(done)
|
||||
|
||||
with progress(Event.CLAIM_UPDATE, 250) as p, context().connection.begin():
|
||||
with progress(Event.TRIE_UPDATE, 250) as p, context().connection.begin():
|
||||
claims = chain.db.sync_get_claims()
|
||||
p.start(len(claims))
|
||||
done = 0
|
||||
|
|
|
@ -123,10 +123,20 @@ class TestMultiBlockFileSyncAndEvents(AsyncioTestCase):
|
|||
@staticmethod
|
||||
def extract_events(name, events):
|
||||
return sorted([
|
||||
(p['data'].get('block_file'), p['data']['step'], p['data']['total'])
|
||||
[p['data'].get('block_file'), p['data']['step'], p['data']['total']]
|
||||
for p in events if p['event'].endswith(name)
|
||||
])
|
||||
|
||||
def assertEventsAlmostEqual(self, actual, expected):
|
||||
# this is needed because the sample tx data created
|
||||
# by lbrycrd does not have deterministic number of TXIs,
|
||||
# which throws off the progress reporting steps
|
||||
# adjust the actual to match expected if it's only off by 1
|
||||
for e, a in zip(expected, actual):
|
||||
if a[1] != e[1] and abs(a[1]-e[1]) <= 1:
|
||||
a[1] = e[1]
|
||||
self.assertEqual(expected, actual)
|
||||
|
||||
async def test_multi_block_file_sync(self):
|
||||
self.assertEqual(
|
||||
[(0, 191, 280), (1, 89, 178), (2, 12, 24)],
|
||||
|
@ -153,39 +163,39 @@ class TestMultiBlockFileSyncAndEvents(AsyncioTestCase):
|
|||
)
|
||||
self.assertEqual(
|
||||
self.extract_events('block.read', events), [
|
||||
(0, 0, 191),
|
||||
(0, 100, 191),
|
||||
(0, 191, 191),
|
||||
(1, 0, 89),
|
||||
(1, 89, 89),
|
||||
(2, 0, 12),
|
||||
(2, 12, 12),
|
||||
[0, 0, 191],
|
||||
[0, 100, 191],
|
||||
[0, 191, 191],
|
||||
[1, 0, 89],
|
||||
[1, 89, 89],
|
||||
[2, 0, 12],
|
||||
[2, 12, 12],
|
||||
]
|
||||
)
|
||||
self.assertEqual(
|
||||
self.assertEventsAlmostEqual(
|
||||
self.extract_events('block.save', events), [
|
||||
(0, 0, 280),
|
||||
(0, 19, 280),
|
||||
(0, 47, 280),
|
||||
(0, 267, 280),
|
||||
(0, 278, 280),
|
||||
(0, 280, 280),
|
||||
(1, 0, 178),
|
||||
(1, 6, 178),
|
||||
(1, 19, 178),
|
||||
(1, 166, 178),
|
||||
(1, 175, 178),
|
||||
(1, 178, 178),
|
||||
(2, 0, 24),
|
||||
(2, 1, 24),
|
||||
(2, 21, 24),
|
||||
(2, 22, 24),
|
||||
(2, 24, 24)
|
||||
[0, 0, 280],
|
||||
[0, 19, 280],
|
||||
[0, 47, 280],
|
||||
[0, 267, 280],
|
||||
[0, 278, 280],
|
||||
[0, 280, 280],
|
||||
[1, 0, 178],
|
||||
[1, 6, 178],
|
||||
[1, 19, 178],
|
||||
[1, 166, 178],
|
||||
[1, 175, 178],
|
||||
[1, 178, 178],
|
||||
[2, 0, 24],
|
||||
[2, 1, 24],
|
||||
[2, 21, 24],
|
||||
[2, 22, 24],
|
||||
[2, 24, 24]
|
||||
]
|
||||
)
|
||||
claim_events = self.extract_events('claim.update', events)
|
||||
self.assertEqual((1000, 3610), claim_events[10][1:])
|
||||
self.assertEqual((3610, 3610), claim_events[-1][1:])
|
||||
self.assertEqual([3402, 3610], claim_events[2][1:])
|
||||
self.assertEqual([3610, 3610], claim_events[-1][1:])
|
||||
|
||||
events.clear()
|
||||
await self.sync.advance() # should be no-op
|
||||
|
@ -210,14 +220,14 @@ class TestMultiBlockFileSyncAndEvents(AsyncioTestCase):
|
|||
)
|
||||
self.assertEqual(
|
||||
self.extract_events('block.read', events), [
|
||||
(2, 0, 1),
|
||||
(2, 1, 1),
|
||||
[2, 0, 1],
|
||||
[2, 1, 1],
|
||||
]
|
||||
)
|
||||
self.assertEqual(
|
||||
self.extract_events('block.save', events), [
|
||||
(2, 0, 1),
|
||||
(2, 1, 1),
|
||||
[2, 0, 1],
|
||||
[2, 1, 1],
|
||||
]
|
||||
)
|
||||
|
||||
|
@ -304,19 +314,19 @@ class TestBasicSyncScenarios(BaseSyncTestCase):
|
|||
async def test_claim_create_update_and_delete(self):
|
||||
txid = await self.claim_name('foo', '0.01')
|
||||
await self.generate(1)
|
||||
claims, _, _ = await self.db.search_claims()
|
||||
claims = await self.db.search_claims()
|
||||
self.assertEqual(1, len(claims))
|
||||
self.assertEqual(claims[0].claim_name, 'foo')
|
||||
self.assertEqual(dewies_to_lbc(claims[0].amount), '0.01')
|
||||
txid = await self.claim_update(await self.get_transaction(txid), '0.02')
|
||||
await self.generate(1)
|
||||
claims, _, _ = await self.db.search_claims()
|
||||
claims = await self.db.search_claims()
|
||||
self.assertEqual(1, len(claims))
|
||||
self.assertEqual(claims[0].claim_name, 'foo')
|
||||
self.assertEqual(dewies_to_lbc(claims[0].amount), '0.02')
|
||||
await self.claim_abandon(await self.get_transaction(txid))
|
||||
await self.generate(1)
|
||||
claims, _, _ = await self.db.search_claims()
|
||||
claims = await self.db.search_claims()
|
||||
self.assertEqual(0, len(claims))
|
||||
|
||||
|
||||
|
|
2
tox.ini
2
tox.ini
|
@ -11,6 +11,8 @@ passenv =
|
|||
commands =
|
||||
blockchain: coverage run -p --rcfile={toxinidir}/setup.cfg -m unittest -vv integration.blockchain.test_claim_commands.ChannelCommands.test_create_channel_names {posargs}
|
||||
blockchain: coverage run -p --rcfile={toxinidir}/setup.cfg -m unittest -vv integration.blockchain.test_blockchain.TestBlockchainEvents {posargs}
|
||||
blockchain: coverage run -p --rcfile={toxinidir}/setup.cfg -m unittest -vv integration.blockchain.test_blockchain.TestMultiBlockFileSyncAndEvents {posargs}
|
||||
blockchain: coverage run -p --rcfile={toxinidir}/setup.cfg -m unittest -vv integration.blockchain.test_blockchain.TestBasicSyncScenarios {posargs}
|
||||
#blockchain: coverage run -p --source={envsitepackagesdir}/lbry -m unittest discover -vv integration.blockchain {posargs}
|
||||
#datanetwork: coverage run -p --source={envsitepackagesdir}/lbry -m unittest discover -vv integration.datanetwork {posargs}
|
||||
#other: coverage run -p --source={envsitepackagesdir}/lbry -m unittest discover -vv integration.other {posargs}
|
||||
|
|
Loading…
Reference in a new issue