From c2fcf849a7f59a9e8d77c0c99e6ea83392d80d20 Mon Sep 17 00:00:00 2001 From: MarcoFalke Date: Fri, 11 Aug 2017 16:57:51 +0200 Subject: [PATCH] Merge #11025: qa: Fix inv race in example_test faa76d1b7 qa: Fix inv race in example_test (MarcoFalke) Pull request description: There have been intermittent test failures on this script. ```py File "./test/functional/example_test.py", line 216, in run_test assert_equal(block, 1) AssertionError: not(2 == 1) ``` Probably the simplest way to fix them is overriding the `on_inv` method, so that no "colliding" getdata for the blocks are sent out. Additionally, all getdata are now sent in a single message. Tree-SHA512: 809c2bbfa90a67fc97905769fcbe90ba9abe1aac1f145530934f56a364835973b94d3302b6be68f4f2987acf333bce146bcc4c878c283301871ba5bb1a9bedb6 --- test/functional/example_test.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/test/functional/example_test.py b/test/functional/example_test.py index 1ba5f756cd..7709524f23 100755 --- a/test/functional/example_test.py +++ b/test/functional/example_test.py @@ -58,6 +58,10 @@ class BaseNode(NodeConnCB): message.block.calc_sha256() self.block_receive_map[message.block.sha256] += 1 + def on_inv(self, conn, message): + """Override the standard on_inv callback""" + pass + def custom_function(): """Do some custom behaviour @@ -198,10 +202,10 @@ class ExampleTest(BitcoinTestFramework): self.log.info("Wait for node2 reach current tip. Test that it has propogated all the blocks to us") + getdata_request = msg_getdata() for block in blocks: - getdata_request = msg_getdata() getdata_request.inv.append(CInv(2, block)) - node2.send_message(getdata_request) + node2.send_message(getdata_request) # wait_until() will loop until a predicate condition is met. Use it to test properties of the # NodeConnCB objects.