test: refactor: usdt_mempool: store all events

Even though we expect these functions to only produce one event,
we still keep a counter to check if that's true. By simply storing
all the events, we can remove the counters and make debugging
easier, by allowing pdb to access the events.
This commit is contained in:
stickies-v 2023-06-23 12:05:34 +01:00
parent bc43270450
commit 9f55773a37
No known key found for this signature in database
GPG key ID: 5CB1CE6E5E66A757

View file

@ -137,9 +137,7 @@ class MempoolTracepointTest(BitcoinTestFramework):
"""Add a transaction to the mempool and make sure the tracepoint returns """Add a transaction to the mempool and make sure the tracepoint returns
the expected txid, vsize, and fee.""" the expected txid, vsize, and fee."""
EXPECTED_ADDED_EVENTS = 1 events = []
handled_added_events = 0
event = None
self.log.info("Hooking into mempool:added tracepoint...") self.log.info("Hooking into mempool:added tracepoint...")
node = self.nodes[0] node = self.nodes[0]
@ -148,9 +146,7 @@ class MempoolTracepointTest(BitcoinTestFramework):
bpf = BPF(text=MEMPOOL_TRACEPOINTS_PROGRAM, usdt_contexts=[ctx], debug=0) bpf = BPF(text=MEMPOOL_TRACEPOINTS_PROGRAM, usdt_contexts=[ctx], debug=0)
def handle_added_event(_, data, __): def handle_added_event(_, data, __):
nonlocal event, handled_added_events events.append(bpf["added_events"].event(data))
event = bpf["added_events"].event(data)
handled_added_events += 1
bpf["added_events"].open_perf_buffer(handle_added_event) bpf["added_events"].open_perf_buffer(handle_added_event)
@ -165,7 +161,8 @@ class MempoolTracepointTest(BitcoinTestFramework):
self.generate(node, 1) self.generate(node, 1)
self.log.info("Ensuring mempool:added event was handled successfully...") self.log.info("Ensuring mempool:added event was handled successfully...")
assert_equal(EXPECTED_ADDED_EVENTS, handled_added_events) assert_equal(1, len(events))
event = events[0]
assert_equal(bytes(event.hash)[::-1].hex(), tx["txid"]) assert_equal(bytes(event.hash)[::-1].hex(), tx["txid"])
assert_equal(event.vsize, tx["tx"].get_vsize()) assert_equal(event.vsize, tx["tx"].get_vsize())
assert_equal(event.fee, fee) assert_equal(event.fee, fee)
@ -177,9 +174,7 @@ class MempoolTracepointTest(BitcoinTestFramework):
"""Expire a transaction from the mempool and make sure the tracepoint returns """Expire a transaction from the mempool and make sure the tracepoint returns
the expected txid, expiry reason, vsize, and fee.""" the expected txid, expiry reason, vsize, and fee."""
EXPECTED_REMOVED_EVENTS = 1 events = []
handled_removed_events = 0
event = None
self.log.info("Hooking into mempool:removed tracepoint...") self.log.info("Hooking into mempool:removed tracepoint...")
node = self.nodes[0] node = self.nodes[0]
@ -188,9 +183,7 @@ class MempoolTracepointTest(BitcoinTestFramework):
bpf = BPF(text=MEMPOOL_TRACEPOINTS_PROGRAM, usdt_contexts=[ctx], debug=0) bpf = BPF(text=MEMPOOL_TRACEPOINTS_PROGRAM, usdt_contexts=[ctx], debug=0)
def handle_removed_event(_, data, __): def handle_removed_event(_, data, __):
nonlocal event, handled_removed_events events.append(bpf["removed_events"].event(data))
event = bpf["removed_events"].event(data)
handled_removed_events += 1
bpf["removed_events"].open_perf_buffer(handle_removed_event) bpf["removed_events"].open_perf_buffer(handle_removed_event)
@ -212,7 +205,8 @@ class MempoolTracepointTest(BitcoinTestFramework):
bpf.perf_buffer_poll(timeout=200) bpf.perf_buffer_poll(timeout=200)
self.log.info("Ensuring mempool:removed event was handled successfully...") self.log.info("Ensuring mempool:removed event was handled successfully...")
assert_equal(EXPECTED_REMOVED_EVENTS, handled_removed_events) assert_equal(1, len(events))
event = events[0]
assert_equal(bytes(event.hash)[::-1].hex(), txid) assert_equal(bytes(event.hash)[::-1].hex(), txid)
assert_equal(event.reason.decode("UTF-8"), "expiry") assert_equal(event.reason.decode("UTF-8"), "expiry")
assert_equal(event.vsize, tx["tx"].get_vsize()) assert_equal(event.vsize, tx["tx"].get_vsize())
@ -226,9 +220,7 @@ class MempoolTracepointTest(BitcoinTestFramework):
"""Replace one and two transactions in the mempool and make sure the tracepoint """Replace one and two transactions in the mempool and make sure the tracepoint
returns the expected txids, vsizes, and fees.""" returns the expected txids, vsizes, and fees."""
EXPECTED_REPLACED_EVENTS = 1 events = []
handled_replaced_events = 0
event = None
self.log.info("Hooking into mempool:replaced tracepoint...") self.log.info("Hooking into mempool:replaced tracepoint...")
node = self.nodes[0] node = self.nodes[0]
@ -237,9 +229,7 @@ class MempoolTracepointTest(BitcoinTestFramework):
bpf = BPF(text=MEMPOOL_TRACEPOINTS_PROGRAM, usdt_contexts=[ctx], debug=0) bpf = BPF(text=MEMPOOL_TRACEPOINTS_PROGRAM, usdt_contexts=[ctx], debug=0)
def handle_replaced_event(_, data, __): def handle_replaced_event(_, data, __):
nonlocal event, handled_replaced_events events.append(bpf["replaced_events"].event(data))
event = bpf["replaced_events"].event(data)
handled_replaced_events += 1
bpf["replaced_events"].open_perf_buffer(handle_replaced_event) bpf["replaced_events"].open_perf_buffer(handle_replaced_event)
@ -261,7 +251,8 @@ class MempoolTracepointTest(BitcoinTestFramework):
bpf.perf_buffer_poll(timeout=200) bpf.perf_buffer_poll(timeout=200)
self.log.info("Ensuring mempool:replaced event was handled successfully...") self.log.info("Ensuring mempool:replaced event was handled successfully...")
assert_equal(EXPECTED_REPLACED_EVENTS, handled_replaced_events) assert_equal(1, len(events))
event = events[0]
assert_equal(bytes(event.replaced_hash)[::-1].hex(), original_tx["txid"]) assert_equal(bytes(event.replaced_hash)[::-1].hex(), original_tx["txid"])
assert_equal(event.replaced_vsize, original_tx["tx"].get_vsize()) assert_equal(event.replaced_vsize, original_tx["tx"].get_vsize())
assert_equal(event.replaced_fee, original_fee) assert_equal(event.replaced_fee, original_fee)
@ -277,9 +268,7 @@ class MempoolTracepointTest(BitcoinTestFramework):
"""Create an invalid transaction and make sure the tracepoint returns """Create an invalid transaction and make sure the tracepoint returns
the expected txid, rejection reason, peer id, and peer address.""" the expected txid, rejection reason, peer id, and peer address."""
EXPECTED_REJECTED_EVENTS = 1 events = []
handled_rejected_events = 0
event = None
self.log.info("Adding P2P connection...") self.log.info("Adding P2P connection...")
node = self.nodes[0] node = self.nodes[0]
@ -291,9 +280,7 @@ class MempoolTracepointTest(BitcoinTestFramework):
bpf = BPF(text=MEMPOOL_TRACEPOINTS_PROGRAM, usdt_contexts=[ctx], debug=0) bpf = BPF(text=MEMPOOL_TRACEPOINTS_PROGRAM, usdt_contexts=[ctx], debug=0)
def handle_rejected_event(_, data, __): def handle_rejected_event(_, data, __):
nonlocal event, handled_rejected_events events.append(bpf["rejected_events"].event(data))
event = bpf["rejected_events"].event(data)
handled_rejected_events += 1
bpf["rejected_events"].open_perf_buffer(handle_rejected_event) bpf["rejected_events"].open_perf_buffer(handle_rejected_event)
@ -305,7 +292,8 @@ class MempoolTracepointTest(BitcoinTestFramework):
bpf.perf_buffer_poll(timeout=200) bpf.perf_buffer_poll(timeout=200)
self.log.info("Ensuring mempool:rejected event was handled successfully...") self.log.info("Ensuring mempool:rejected event was handled successfully...")
assert_equal(EXPECTED_REJECTED_EVENTS, handled_rejected_events) assert_equal(1, len(events))
event = events[0]
assert_equal(bytes(event.hash)[::-1].hex(), tx["tx"].hash) assert_equal(bytes(event.hash)[::-1].hex(), tx["tx"].hash)
assert_equal(event.reason.decode("UTF-8"), "min relay fee not met") assert_equal(event.reason.decode("UTF-8"), "min relay fee not met")