merge bitcoin#25794: don't rely on block_connected USDT event order in tests

This commit is contained in:
Kittywhiskers Van Gogh 2022-08-06 13:52:29 +02:00
parent 457bbd3f8b
commit 88696129f3
No known key found for this signature in database
GPG Key ID: 30CD0C065E5C4AAD

View File

@ -91,7 +91,7 @@ class ValidationTracepointTest(BitcoinTestFramework):
# that the handle_* functions succeeded. # that the handle_* functions succeeded.
BLOCKS_EXPECTED = 2 BLOCKS_EXPECTED = 2
blocks_checked = 0 blocks_checked = 0
expected_blocks = list() expected_blocks = dict()
self.log.info("hook into the validation:block_connected tracepoint") self.log.info("hook into the validation:block_connected tracepoint")
ctx = USDT(path=str(self.options.bitcoind)) ctx = USDT(path=str(self.options.bitcoind))
@ -104,15 +104,16 @@ class ValidationTracepointTest(BitcoinTestFramework):
nonlocal expected_blocks, blocks_checked nonlocal expected_blocks, blocks_checked
event = ctypes.cast(data, ctypes.POINTER(Block)).contents event = ctypes.cast(data, ctypes.POINTER(Block)).contents
self.log.info(f"handle_blockconnected(): {event}") self.log.info(f"handle_blockconnected(): {event}")
block = expected_blocks.pop(0) block_hash = bytes(event.hash[::-1]).hex()
assert_equal(block["hash"], bytes(event.hash[::-1]).hex()) block = expected_blocks[block_hash]
assert_equal(block["hash"], block_hash)
assert_equal(block["height"], event.height) assert_equal(block["height"], event.height)
assert_equal(len(block["tx"]), event.transactions) assert_equal(len(block["tx"]), event.transactions)
assert_equal(len([tx["vin"] for tx in block["tx"]]), event.inputs) assert_equal(len([tx["vin"] for tx in block["tx"]]), event.inputs)
assert_equal(0, event.sigops) # no sigops in coinbase tx assert_equal(0, event.sigops) # no sigops in coinbase tx
# only plausibility checks # only plausibility checks
assert(event.duration > 0) assert(event.duration > 0)
del expected_blocks[block_hash]
blocks_checked += 1 blocks_checked += 1
bpf["block_connected"].open_perf_buffer( bpf["block_connected"].open_perf_buffer(
@ -122,7 +123,7 @@ class ValidationTracepointTest(BitcoinTestFramework):
block_hashes = self.nodes[0].generatetoaddress( block_hashes = self.nodes[0].generatetoaddress(
BLOCKS_EXPECTED, ADDRESS_BCRT1_UNSPENDABLE) BLOCKS_EXPECTED, ADDRESS_BCRT1_UNSPENDABLE)
for block_hash in block_hashes: for block_hash in block_hashes:
expected_blocks.append(self.nodes[0].getblock(block_hash, 2)) expected_blocks[block_hash] = self.nodes[0].getblock(block_hash, 2)
bpf.perf_buffer_poll(timeout=200) bpf.perf_buffer_poll(timeout=200)
bpf.cleanup() bpf.cleanup()