fix(test): wait for chainlock before mining a block we expect to include said chainlock

Most of the time, while generating the cycle quorum, there is sufficient time to generate a chainlock; however, this is racey, and I've observed locally where the block gets generated before a chainlock is present and as such `test_coinbase_best_cl` fails. We should instead wait for the chainlock first, and then mine the block. This was we can ensure the mined block will include that chainlock.

This was observed locally maybe 1/10 times or so
This commit is contained in:
pasta 2024-11-19 10:38:44 -06:00
parent f39c1e6f4c
commit 5078baea2b
No known key found for this signature in database
GPG Key ID: E2F3D7916E722D38

View File

@ -56,11 +56,10 @@ class LLMQChainLocksTest(DashTestFramework):
self.move_to_next_cycle()
self.log.info("Cycle H+2C height:" + str(self.nodes[0].getblockcount()))
self.mine_cycle_quorum(llmq_type_name="llmq_test_dip0024", llmq_type=103)
self.log.info("Mine single block, wait for chainlock")
self.generate(self.nodes[0], 1, sync_fun=self.no_op)
self.wait_for_chainlocked_block_all_nodes(self.nodes[0].getbestblockhash())
self.log.info("Mine single block, ensure it includes latest chainlock")
self.generate(self.nodes[0], 1, sync_fun=self.sync_blocks)
self.test_coinbase_best_cl(self.nodes[0])
# ChainLock locks all the blocks below it so nocl_block_hash should be locked too