mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-04-18 11:37:40 +02:00
Merge #19804: test/refactor: reference p2p objects explicitly and remove confusing Test_Node.p2p property
10d61505fe[test] remove confusing p2p property (gzhao408)549d30faf0scripted-diff: replace p2p with p2ps[0] in p2p_invalid_tx (gzhao408)7a0de46aea[doc] sample code for test framework p2p objects (gzhao408)784f757994[refactor] clarify tests by referencing p2p objects directly (gzhao408) Pull request description: The `TestNode` has a `p2p` property which is an alias for `p2ps[0]`. I think this should be removed because it can be confusing and misleading (to both the test writer and reviewer), especially if a TestNode has multiple p2ps connected (which is the case for many tests). Another example is when a test has multiple subtests that connect 1 p2p and use the `p2p` property to reference it. If the subtests don't completely clean up after themselves, the subtests may affect one another. The best way to refer to a connected p2p is use the object returned by `add_p2p_connection` like this: ```py p2p_conn = node.add_p2p_connection(P2PInterface()) ``` A good example is [p2p_invalid_locator.py](https://github.com/bitcoin/bitcoin/blob/master/test/functional/p2p_invalid_locator.py), which cleans up after itself (waits in both `wait_for_disconnect` and in `disconnect_p2ps`) but wouldn't need so much complexity if it just referenced the connections directly. If there is only one connected, it's not really that tedious to just use `node.p2ps[0]` instead of `node.p2p` (and it can always be aliased inside the test itself). ACKs for top commit: robot-dreams: utACK10d61505fejnewbery: utACK10d61505feguggero: Concept ACK10d61505. Tree-SHA512: 5965548929794ec660dae03467640cb2156d7d826cefd26d3a126472cbc2494b855c1d26bbb7b412281fbdc92b9798b9765a85c27bc1a97f7798f27f64db6f13
This commit is contained in:
@@ -542,15 +542,6 @@ class TestNode():
|
||||
|
||||
return p2p_conn
|
||||
|
||||
@property
|
||||
def p2p(self):
|
||||
"""Return the first p2p connection
|
||||
|
||||
Convenience property - most tests only use a single p2p connection to each
|
||||
node, so this saves having to write node.p2ps[0] many times."""
|
||||
assert self.p2ps, self._node_msg("No p2p connection")
|
||||
return self.p2ps[0]
|
||||
|
||||
def num_test_p2p_connections(self):
|
||||
"""Return number of test framework p2p connections to the node."""
|
||||
return len([peer for peer in self.getpeerinfo() if peer['subver'] == MY_SUBVERSION])
|
||||
|
||||
Reference in New Issue
Block a user