Feedback: Reuse IntegrationTestcase.generate() in generate_and_wait().

This commit is contained in:
Jonathan Moody 2022-09-20 08:35:50 -05:00 committed by Lex Berezhny
parent bd1cebdb4c
commit 5a26aea398

View file

@ -298,23 +298,11 @@ class IntegrationTestCase(AsyncioTestCase):
async def generate_and_wait(self, blocks_to_generate, txids, ledger=None):
if blocks_to_generate > 0:
watcher1 = (ledger or self.ledger).on_transaction.where(
watcher = (ledger or self.ledger).on_transaction.where(
lambda e: ((e.tx.id in txids and txids.remove(e.tx.id)), len(txids) <= 0)[-1] # multi-statement lambda
)
watcher2 = (ledger or self.ledger).on_header.where(self.blockchain.is_expected_block)
self.conductor.spv_node.server.synchronized.clear()
await self.blockchain.generate(blocks_to_generate)
height = self.blockchain.block_expected
await watcher1
await watcher2
while True:
await self.conductor.spv_node.server.synchronized.wait()
self.conductor.spv_node.server.synchronized.clear()
if self.conductor.spv_node.server.db.db_height < height:
continue
if self.conductor.spv_node.server._es_height < height:
continue
break
await self.generate(blocks_to_generate)
await watcher
def on_address_update(self, address):
return self.ledger.on_transaction.where(