From 2eadeb27ed40d4dcb252a9d993d3946435f6e22e Mon Sep 17 00:00:00 2001 From: dexX7 Date: Mon, 20 Apr 2015 11:50:33 +0200 Subject: [PATCH 1/2] QA: stop nodes after RPC tests, even with --nocleanup `--nocleanup` should provide a way to preserve test data, but should not have an impact on whether nodes are to be stopped after the test execution. In particular, when currently running RPC tests with `--nocleanup`, then it may result in several active `bitcoind` processes, which are not terminated properly. --- qa/rpc-tests/test_framework.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/qa/rpc-tests/test_framework.py b/qa/rpc-tests/test_framework.py index 4c8a11b82..8de7a4b5e 100755 --- a/qa/rpc-tests/test_framework.py +++ b/qa/rpc-tests/test_framework.py @@ -128,10 +128,12 @@ class BitcoinTestFramework(object): print("Unexpected exception caught during testing: "+str(e)) traceback.print_tb(sys.exc_info()[2]) + print("Stopping nodes") + stop_nodes(self.nodes) + wait_bitcoinds() + if not self.options.nocleanup: print("Cleaning up") - stop_nodes(self.nodes) - wait_bitcoinds() shutil.rmtree(self.options.tmpdir) if success: From 688da79e4a9e262d7aa643cb0f9b46c7781ac655 Mon Sep 17 00:00:00 2001 From: dexX7 Date: Thu, 23 Apr 2015 14:19:00 +0200 Subject: [PATCH 2/2] QA: add --noshutdown option to prevent stopping nodes With `--noshutdown`, the nodes are not stopped explicitly. `--noshutdown` implies `--nocleanup`, to prevent removing datadirs, which are still in use. --- qa/rpc-tests/test_framework.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/qa/rpc-tests/test_framework.py b/qa/rpc-tests/test_framework.py index 8de7a4b5e..6f3cc19dd 100755 --- a/qa/rpc-tests/test_framework.py +++ b/qa/rpc-tests/test_framework.py @@ -89,8 +89,10 @@ class BitcoinTestFramework(object): parser = optparse.OptionParser(usage="%prog [options]") parser.add_option("--nocleanup", dest="nocleanup", default=False, action="store_true", help="Leave bitcoinds and test.* datadir on exit or error") + parser.add_option("--noshutdown", dest="noshutdown", default=False, action="store_true", + help="Don't stop bitcoinds after the test execution") parser.add_option("--srcdir", dest="srcdir", default="../../src", - help="Source directory containing bitcoind/bitcoin-cli (default: %default%)") + help="Source directory containing bitcoind/bitcoin-cli (default: %default)") parser.add_option("--tmpdir", dest="tmpdir", default=tempfile.mkdtemp(prefix="test"), help="Root directory for datadirs") parser.add_option("--tracerpc", dest="trace_rpc", default=False, action="store_true", @@ -128,11 +130,14 @@ class BitcoinTestFramework(object): print("Unexpected exception caught during testing: "+str(e)) traceback.print_tb(sys.exc_info()[2]) - print("Stopping nodes") - stop_nodes(self.nodes) - wait_bitcoinds() + if not self.options.noshutdown: + print("Stopping nodes") + stop_nodes(self.nodes) + wait_bitcoinds() + else: + print("Note: bitcoinds were not stopped and may still be running") - if not self.options.nocleanup: + if not self.options.nocleanup and not self.options.noshutdown: print("Cleaning up") shutil.rmtree(self.options.tmpdir)