Move zmq test skipping logic into individual test case.
This commit uses the new skip test funcationality added in
232b6665bc
to skip the zmq tests if the
python zmq module is not available or if bitcoind has been built without
zmq support.
This removes the zmq-specific logic from test_runner.py. In general it's
better if test_runner.py has no knowledge of special cases for
individual tests and is a general purpose test runner.
This commit is contained in:
parent
987a6c0956
commit
6803e09e6e
2 changed files with 23 additions and 23 deletions
|
@ -77,6 +77,7 @@ BASE_SCRIPTS= [
|
|||
'rawtransactions.py',
|
||||
'reindex.py',
|
||||
# vv Tests less than 30s vv
|
||||
"zmq_test.py",
|
||||
'mempool_resurrect_test.py',
|
||||
'txn_doublespend.py --mineblock',
|
||||
'txn_clone.py',
|
||||
|
@ -110,11 +111,6 @@ BASE_SCRIPTS= [
|
|||
'p2p-leaktests.py',
|
||||
]
|
||||
|
||||
ZMQ_SCRIPTS = [
|
||||
# ZMQ test can only be run if bitcoin was built with zmq-enabled.
|
||||
# call test_runner.py with -nozmq to explicitly exclude these tests.
|
||||
'zmq_test.py']
|
||||
|
||||
EXTENDED_SCRIPTS = [
|
||||
# These tests are not run by the travis build process.
|
||||
# Longest test should go first, to favor running tests in parallel
|
||||
|
@ -149,7 +145,7 @@ EXTENDED_SCRIPTS = [
|
|||
]
|
||||
|
||||
# Place EXTENDED_SCRIPTS first since it has the 3 longest running tests
|
||||
ALL_SCRIPTS = EXTENDED_SCRIPTS + BASE_SCRIPTS + ZMQ_SCRIPTS
|
||||
ALL_SCRIPTS = EXTENDED_SCRIPTS + BASE_SCRIPTS
|
||||
|
||||
NON_SCRIPTS = [
|
||||
# These are python files that live in the functional tests directory, but are not test scripts.
|
||||
|
@ -174,7 +170,6 @@ def main():
|
|||
parser.add_argument('--jobs', '-j', type=int, default=4, help='how many test scripts to run in parallel. Default=4.')
|
||||
parser.add_argument('--keepcache', '-k', action='store_true', help='the default behavior is to flush the cache directory on startup. --keepcache retains the cache from the previous testrun.')
|
||||
parser.add_argument('--quiet', '-q', action='store_true', help='only print results summary and failure logs')
|
||||
parser.add_argument('--nozmq', action='store_true', help='do not run the zmq tests')
|
||||
args, unknown_args = parser.parse_known_args()
|
||||
|
||||
# Create a set to store arguments and create the passon string
|
||||
|
@ -192,7 +187,6 @@ def main():
|
|||
enable_wallet = config["components"].getboolean("ENABLE_WALLET")
|
||||
enable_utils = config["components"].getboolean("ENABLE_UTILS")
|
||||
enable_bitcoind = config["components"].getboolean("ENABLE_BITCOIND")
|
||||
enable_zmq = config["components"].getboolean("ENABLE_ZMQ") and not args.nozmq
|
||||
|
||||
if config["environment"]["EXEEXT"] == ".exe" and not args.force:
|
||||
# https://github.com/bitcoin/bitcoin/commit/d52802551752140cf41f0d9a225a43e84404d3e9
|
||||
|
@ -205,15 +199,6 @@ def main():
|
|||
print("Rerun `configure` with -enable-wallet, -with-utils and -with-daemon and rerun make")
|
||||
sys.exit(0)
|
||||
|
||||
# python3-zmq may not be installed. Handle this gracefully and with some helpful info
|
||||
if enable_zmq:
|
||||
try:
|
||||
import zmq
|
||||
except ImportError:
|
||||
print("ERROR: \"import zmq\" failed. Use -nozmq to run without the ZMQ tests."
|
||||
"To run zmq tests, see dependency info in /test/README.md.")
|
||||
raise
|
||||
|
||||
# Build list of tests
|
||||
if tests:
|
||||
# Individual tests have been specified. Run specified tests that exist
|
||||
|
@ -221,11 +206,9 @@ def main():
|
|||
test_list = [t for t in ALL_SCRIPTS if
|
||||
(t in tests or re.sub(".py$", "", t) in tests)]
|
||||
else:
|
||||
# No individual tests have been specified. Run base tests, and
|
||||
# optionally ZMQ tests and extended tests.
|
||||
# No individual tests have been specified.
|
||||
# Run all base tests, and optionally run extended tests.
|
||||
test_list = BASE_SCRIPTS
|
||||
if enable_zmq:
|
||||
test_list += ZMQ_SCRIPTS
|
||||
if args.extended:
|
||||
# place the EXTENDED_SCRIPTS first since the three longest ones
|
||||
# are there and the list is shorter
|
||||
|
|
|
@ -3,11 +3,13 @@
|
|||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
"""Test the ZMQ API."""
|
||||
import configparser
|
||||
import os
|
||||
import struct
|
||||
import sys
|
||||
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
import zmq
|
||||
import struct
|
||||
|
||||
class ZMQTest (BitcoinTestFramework):
|
||||
|
||||
|
@ -18,6 +20,21 @@ class ZMQTest (BitcoinTestFramework):
|
|||
port = 28332
|
||||
|
||||
def setup_nodes(self):
|
||||
# Try to import python3-zmq. Skip this test if the import fails.
|
||||
try:
|
||||
import zmq
|
||||
except ImportError:
|
||||
self.log.warning("python3-zmq module not available. Skipping zmq tests!")
|
||||
sys.exit(self.TEST_EXIT_SKIPPED)
|
||||
|
||||
# Check that bitcoin has been built with ZMQ enabled
|
||||
config = configparser.ConfigParser()
|
||||
config.read_file(open(os.path.dirname(__file__) + "/config.ini"))
|
||||
|
||||
if not config["components"].getboolean("ENABLE_ZMQ"):
|
||||
self.log.warning("bitcoind has not been built with zmq enabled. Skipping zmq tests!")
|
||||
sys.exit(self.TEST_EXIT_SKIPPED)
|
||||
|
||||
self.zmqContext = zmq.Context()
|
||||
self.zmqSubSocket = self.zmqContext.socket(zmq.SUB)
|
||||
self.zmqSubSocket.setsockopt(zmq.SUBSCRIBE, b"hashblock")
|
||||
|
|
Loading…
Reference in a new issue