diff options
author | MarcoFalke <falke.marco@gmail.com> | 2017-09-29 20:23:52 +0200 |
---|---|---|
committer | MarcoFalke <falke.marco@gmail.com> | 2017-09-29 20:23:59 +0200 |
commit | ff4cd6075b12fb32b9a906deea3ed033e3f9560a (patch) | |
tree | f2eb79a88a5ef8f9ba87a8f31094551e1cd368b0 /test/functional | |
parent | 9c3c9cdae3e20b5bdea91a0631edac5116bbc89f (diff) | |
parent | f97ab35fa9687fd5c110ad6cca5be5b4a5c2142d (diff) | |
download | bitcoin-ff4cd6075b12fb32b9a906deea3ed033e3f9560a.tar.xz |
Merge #11319: [qa] Fix error introduced into p2p-segwit.py, and prevent future similar errors
f97ab35fa qa: Fix bug introduced in p2p-segwit.py (Suhas Daftuar)
a7820422e qa: Treat mininode p2p exceptions as fatal (Suhas Daftuar)
Pull request description:
#11121 inadvertently broke the constructor for the `TestNode()` object in `p2p-segwit.py`, silently breaking at least one of the tests.
Although the python code was raising exceptions due to a `TestNode()` object not existing (or having the right type), mininode was masking these from anyone running the test through the test_runner (like travis), because it catches all exceptions during message delivery and just prints a log message and continues. Such "graceful" handling of errors is almost certainly something we don't want in our test suite, so the first commit here attempts to prevent that type of failure from ever being masked.
The second commit fixes the particular bug in `p2p-segwit.py`.
Tree-SHA512: b6646e3cb1e05c35c28e8899c44104bf2e2d0384643ca87042ab7f6ec0960d89f5bf25a7b95bab6e32d401c20a6018226160500f6ddceb923e81ffb04adb4f2f
Diffstat (limited to 'test/functional')
-rwxr-xr-x | test/functional/p2p-segwit.py | 4 | ||||
-rwxr-xr-x | test/functional/test_framework/mininode.py | 14 |
2 files changed, 9 insertions, 9 deletions
diff --git a/test/functional/p2p-segwit.py b/test/functional/p2p-segwit.py index 943bc2c6d2..a9ef47559b 100755 --- a/test/functional/p2p-segwit.py +++ b/test/functional/p2p-segwit.py @@ -32,8 +32,8 @@ def get_virtual_size(witness_block): return vsize class TestNode(NodeConnCB): - def set_test_params(self): - self.num_nodes = 3 + def __init__(self): + super().__init__() self.getdataset = set() def on_getdata(self, conn, message): diff --git a/test/functional/test_framework/mininode.py b/test/functional/test_framework/mininode.py index abed661f37..d072969d7f 100755 --- a/test/functional/test_framework/mininode.py +++ b/test/functional/test_framework/mininode.py @@ -1502,6 +1502,7 @@ class NodeConnCB(object): except: print("ERROR delivering %s (%s)" % (repr(message), sys.exc_info()[0])) + raise def get_deliver_sleep_time(self): with mininode_lock: @@ -1702,13 +1703,10 @@ class NodeConn(asyncore.dispatcher): self.cb.on_close(self) def handle_read(self): - try: - t = self.recv(8192) - if len(t) > 0: - self.recvbuf += t - self.got_data() - except: - pass + t = self.recv(8192) + if len(t) > 0: + self.recvbuf += t + self.got_data() def readable(self): return True @@ -1774,8 +1772,10 @@ class NodeConn(asyncore.dispatcher): self.got_message(t) else: logger.warning("Received unknown command from %s:%d: '%s' %s" % (self.dstaddr, self.dstport, command, repr(msg))) + raise ValueError("Unknown command: '%s'" % (command)) except Exception as e: logger.exception('got_data:', repr(e)) + raise def send_message(self, message, pushbuf=False): if self.state != "connected" and not pushbuf: |