From a39f87b3c5cf99ebd615a40dd134b06a9d8b0cfc Mon Sep 17 00:00:00 2001 From: Lex Berezhny Date: Wed, 10 Jun 2020 15:25:45 -0400 Subject: [PATCH] more resilient test --- lbry/blockchain/sync.py | 2 +- .../integration/blockchain/test_blockchain.py | 80 +++++++++++-------- tox.ini | 2 + 3 files changed, 48 insertions(+), 36 deletions(-) diff --git a/lbry/blockchain/sync.py b/lbry/blockchain/sync.py index 341b6212c..0a153f814 100644 --- a/lbry/blockchain/sync.py +++ b/lbry/blockchain/sync.py @@ -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 diff --git a/tests/integration/blockchain/test_blockchain.py b/tests/integration/blockchain/test_blockchain.py index 41bf1db60..b841b0f65 100644 --- a/tests/integration/blockchain/test_blockchain.py +++ b/tests/integration/blockchain/test_blockchain.py @@ -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)) diff --git a/tox.ini b/tox.ini index 45d8cd53d..664033ca4 100644 --- a/tox.ini +++ b/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}