qa: Normalize executable location
This commit is contained in:
parent
39cf27faf3
commit
fa811b0b1d
5 changed files with 21 additions and 30 deletions
|
@ -4,7 +4,6 @@
|
||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
"""Test the ZMQ notification interface."""
|
"""Test the ZMQ notification interface."""
|
||||||
import configparser
|
import configparser
|
||||||
import os
|
|
||||||
import struct
|
import struct
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework, SkipTest
|
from test_framework.test_framework import BitcoinTestFramework, SkipTest
|
||||||
|
@ -47,8 +46,6 @@ class ZMQTest (BitcoinTestFramework):
|
||||||
|
|
||||||
# Check that bitcoin has been built with ZMQ enabled.
|
# Check that bitcoin has been built with ZMQ enabled.
|
||||||
config = configparser.ConfigParser()
|
config = configparser.ConfigParser()
|
||||||
if not self.options.configfile:
|
|
||||||
self.options.configfile = os.path.abspath(os.path.join(os.path.dirname(__file__), "../config.ini"))
|
|
||||||
config.read_file(open(self.options.configfile))
|
config.read_file(open(self.options.configfile))
|
||||||
|
|
||||||
if not config["components"].getboolean("ENABLE_ZMQ"):
|
if not config["components"].getboolean("ENABLE_ZMQ"):
|
||||||
|
|
|
@ -57,12 +57,8 @@ from test_framework.util import *
|
||||||
import time
|
import time
|
||||||
from test_framework.blocktools import create_block, create_coinbase, create_transaction
|
from test_framework.blocktools import create_block, create_coinbase, create_transaction
|
||||||
|
|
||||||
class AcceptBlockTest(BitcoinTestFramework):
|
|
||||||
def add_options(self, parser):
|
|
||||||
parser.add_option("--testbinary", dest="testbinary",
|
|
||||||
default=os.getenv("BITCOIND", "bitcoind"),
|
|
||||||
help="bitcoind binary to test")
|
|
||||||
|
|
||||||
|
class AcceptBlockTest(BitcoinTestFramework):
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.setup_clean_chain = True
|
self.setup_clean_chain = True
|
||||||
self.num_nodes = 2
|
self.num_nodes = 2
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
"""Base class for RPC testing."""
|
"""Base class for RPC testing."""
|
||||||
|
|
||||||
|
import configparser
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
import logging
|
import logging
|
||||||
import optparse
|
import optparse
|
||||||
|
@ -97,10 +98,10 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
||||||
help="Leave bitcoinds and test.* datadir on exit or error")
|
help="Leave bitcoinds and test.* datadir on exit or error")
|
||||||
parser.add_option("--noshutdown", dest="noshutdown", default=False, action="store_true",
|
parser.add_option("--noshutdown", dest="noshutdown", default=False, action="store_true",
|
||||||
help="Don't stop bitcoinds after the test execution")
|
help="Don't stop bitcoinds after the test execution")
|
||||||
parser.add_option("--srcdir", dest="srcdir", default=os.path.normpath(os.path.dirname(os.path.realpath(__file__)) + "/../../../src"),
|
parser.add_option("--srcdir", dest="srcdir", default=os.path.abspath(os.path.dirname(os.path.realpath(__file__)) + "/../../../src"),
|
||||||
help="Source directory containing bitcoind/bitcoin-cli (default: %default)")
|
help="Source directory containing bitcoind/bitcoin-cli (default: %default)")
|
||||||
parser.add_option("--cachedir", dest="cachedir", default=os.path.normpath(os.path.dirname(os.path.realpath(__file__)) + "/../../cache"),
|
parser.add_option("--cachedir", dest="cachedir", default=os.path.abspath(os.path.dirname(os.path.realpath(__file__)) + "/../../cache"),
|
||||||
help="Directory for caching pregenerated datadirs")
|
help="Directory for caching pregenerated datadirs (default: %default)")
|
||||||
parser.add_option("--tmpdir", dest="tmpdir", help="Root directory for datadirs")
|
parser.add_option("--tmpdir", dest="tmpdir", help="Root directory for datadirs")
|
||||||
parser.add_option("-l", "--loglevel", dest="loglevel", default="INFO",
|
parser.add_option("-l", "--loglevel", dest="loglevel", default="INFO",
|
||||||
help="log events at this level and higher to the console. Can be set to DEBUG, INFO, WARNING, ERROR or CRITICAL. Passing --loglevel DEBUG will output all logs to console. Note that logs at all levels are always written to the test_framework.log file in the temporary test directory.")
|
help="log events at this level and higher to the console. Can be set to DEBUG, INFO, WARNING, ERROR or CRITICAL. Passing --loglevel DEBUG will output all logs to console. Note that logs at all levels are always written to the test_framework.log file in the temporary test directory.")
|
||||||
|
@ -111,7 +112,8 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
||||||
parser.add_option("--coveragedir", dest="coveragedir",
|
parser.add_option("--coveragedir", dest="coveragedir",
|
||||||
help="Write tested RPC commands into this directory")
|
help="Write tested RPC commands into this directory")
|
||||||
parser.add_option("--configfile", dest="configfile",
|
parser.add_option("--configfile", dest="configfile",
|
||||||
help="Location of the test framework config file")
|
default=os.path.abspath(os.path.dirname(os.path.realpath(__file__)) + "/../../config.ini"),
|
||||||
|
help="Location of the test framework config file (default: %default)")
|
||||||
parser.add_option("--pdbonfailure", dest="pdbonfailure", default=False, action="store_true",
|
parser.add_option("--pdbonfailure", dest="pdbonfailure", default=False, action="store_true",
|
||||||
help="Attach a python debugger if test fails")
|
help="Attach a python debugger if test fails")
|
||||||
parser.add_option("--usecli", dest="usecli", default=False, action="store_true",
|
parser.add_option("--usecli", dest="usecli", default=False, action="store_true",
|
||||||
|
@ -129,6 +131,11 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
||||||
|
|
||||||
self.options.cachedir = os.path.abspath(self.options.cachedir)
|
self.options.cachedir = os.path.abspath(self.options.cachedir)
|
||||||
|
|
||||||
|
config = configparser.ConfigParser()
|
||||||
|
config.read_file(open(self.options.configfile))
|
||||||
|
self.options.bitcoind = os.getenv("BITCOIND", default=config["environment"]["BUILDDIR"] + '/src/bitcoind' + config["environment"]["EXEEXT"])
|
||||||
|
self.options.bitcoincli = os.getenv("BITCOINCLI", default=config["environment"]["BUILDDIR"] + '/src/bitcoin-cli' + config["environment"]["EXEEXT"])
|
||||||
|
|
||||||
# Set up temp directory and start logging
|
# Set up temp directory and start logging
|
||||||
if self.options.tmpdir:
|
if self.options.tmpdir:
|
||||||
self.options.tmpdir = os.path.abspath(self.options.tmpdir)
|
self.options.tmpdir = os.path.abspath(self.options.tmpdir)
|
||||||
|
@ -246,12 +253,12 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
||||||
if extra_args is None:
|
if extra_args is None:
|
||||||
extra_args = [[]] * num_nodes
|
extra_args = [[]] * num_nodes
|
||||||
if binary is None:
|
if binary is None:
|
||||||
binary = [None] * num_nodes
|
binary = [self.options.bitcoind] * num_nodes
|
||||||
assert_equal(len(extra_confs), num_nodes)
|
assert_equal(len(extra_confs), num_nodes)
|
||||||
assert_equal(len(extra_args), num_nodes)
|
assert_equal(len(extra_args), num_nodes)
|
||||||
assert_equal(len(binary), num_nodes)
|
assert_equal(len(binary), num_nodes)
|
||||||
for i in range(num_nodes):
|
for i in range(num_nodes):
|
||||||
self.nodes.append(TestNode(i, get_datadir_path(self.options.tmpdir, i), rpchost=rpchost, timewait=timewait, binary=binary[i], stderr=None, mocktime=self.mocktime, coverage_dir=self.options.coveragedir, extra_conf=extra_confs[i], extra_args=extra_args[i], use_cli=self.options.usecli))
|
self.nodes.append(TestNode(i, get_datadir_path(self.options.tmpdir, i), rpchost=rpchost, timewait=timewait, bitcoind=binary[i], bitcoin_cli=self.options.bitcoincli, stderr=None, mocktime=self.mocktime, coverage_dir=self.options.coveragedir, extra_conf=extra_confs[i], extra_args=extra_args[i], use_cli=self.options.usecli))
|
||||||
|
|
||||||
def start_node(self, i, *args, **kwargs):
|
def start_node(self, i, *args, **kwargs):
|
||||||
"""Start a bitcoind"""
|
"""Start a bitcoind"""
|
||||||
|
@ -399,10 +406,10 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
||||||
# Create cache directories, run bitcoinds:
|
# Create cache directories, run bitcoinds:
|
||||||
for i in range(MAX_NODES):
|
for i in range(MAX_NODES):
|
||||||
datadir = initialize_datadir(self.options.cachedir, i)
|
datadir = initialize_datadir(self.options.cachedir, i)
|
||||||
args = [os.getenv("BITCOIND", "bitcoind"), "-datadir=" + datadir]
|
args = [self.options.bitcoind, "-datadir=" + datadir]
|
||||||
if i > 0:
|
if i > 0:
|
||||||
args.append("-connect=127.0.0.1:" + str(p2p_port(0)))
|
args.append("-connect=127.0.0.1:" + str(p2p_port(0)))
|
||||||
self.nodes.append(TestNode(i, get_datadir_path(self.options.cachedir, i), extra_conf=["bind=127.0.0.1"], extra_args=[],rpchost=None, timewait=None, binary=None, stderr=None, mocktime=self.mocktime, coverage_dir=None))
|
self.nodes.append(TestNode(i, get_datadir_path(self.options.cachedir, i), extra_conf=["bind=127.0.0.1"], extra_args=[], rpchost=None, timewait=None, bitcoind=self.options.bitcoind, bitcoin_cli=self.options.bitcoincli, stderr=None, mocktime=self.mocktime, coverage_dir=None))
|
||||||
self.nodes[i].args = args
|
self.nodes[i].args = args
|
||||||
self.start_node(i)
|
self.start_node(i)
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,6 @@ from enum import Enum
|
||||||
import http.client
|
import http.client
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import os
|
|
||||||
import re
|
import re
|
||||||
import subprocess
|
import subprocess
|
||||||
import tempfile
|
import tempfile
|
||||||
|
@ -57,7 +56,7 @@ class TestNode():
|
||||||
To make things easier for the test writer, any unrecognised messages will
|
To make things easier for the test writer, any unrecognised messages will
|
||||||
be dispatched to the RPC connection."""
|
be dispatched to the RPC connection."""
|
||||||
|
|
||||||
def __init__(self, i, datadir, rpchost, timewait, binary, stderr, mocktime, coverage_dir, extra_conf=None, extra_args=None, use_cli=False):
|
def __init__(self, i, datadir, rpchost, timewait, bitcoind, bitcoin_cli, stderr, mocktime, coverage_dir, extra_conf=None, extra_args=None, use_cli=False):
|
||||||
self.index = i
|
self.index = i
|
||||||
self.datadir = datadir
|
self.datadir = datadir
|
||||||
self.rpchost = rpchost
|
self.rpchost = rpchost
|
||||||
|
@ -66,10 +65,7 @@ class TestNode():
|
||||||
else:
|
else:
|
||||||
# Wait for up to 60 seconds for the RPC server to respond
|
# Wait for up to 60 seconds for the RPC server to respond
|
||||||
self.rpc_timeout = 60
|
self.rpc_timeout = 60
|
||||||
if binary is None:
|
self.binary = bitcoind
|
||||||
self.binary = os.getenv("BITCOIND", "bitcoind")
|
|
||||||
else:
|
|
||||||
self.binary = binary
|
|
||||||
self.stderr = stderr
|
self.stderr = stderr
|
||||||
self.coverage_dir = coverage_dir
|
self.coverage_dir = coverage_dir
|
||||||
if extra_conf != None:
|
if extra_conf != None:
|
||||||
|
@ -90,7 +86,7 @@ class TestNode():
|
||||||
"-noprinttoconsole"
|
"-noprinttoconsole"
|
||||||
]
|
]
|
||||||
|
|
||||||
self.cli = TestNodeCLI(os.getenv("BITCOINCLI", "bitcoin-cli"), self.datadir)
|
self.cli = TestNodeCLI(bitcoin_cli, self.datadir)
|
||||||
self.use_cli = use_cli
|
self.use_cli = use_cli
|
||||||
|
|
||||||
self.running = False
|
self.running = False
|
||||||
|
|
|
@ -281,9 +281,9 @@ def main():
|
||||||
if not args.keepcache:
|
if not args.keepcache:
|
||||||
shutil.rmtree("%s/test/cache" % config["environment"]["BUILDDIR"], ignore_errors=True)
|
shutil.rmtree("%s/test/cache" % config["environment"]["BUILDDIR"], ignore_errors=True)
|
||||||
|
|
||||||
run_tests(test_list, config["environment"]["SRCDIR"], config["environment"]["BUILDDIR"], config["environment"]["EXEEXT"], tmpdir, args.jobs, args.coverage, passon_args, args.combinedlogslen)
|
run_tests(test_list, config["environment"]["SRCDIR"], config["environment"]["BUILDDIR"], tmpdir, args.jobs, args.coverage, passon_args, args.combinedlogslen)
|
||||||
|
|
||||||
def run_tests(test_list, src_dir, build_dir, exeext, tmpdir, jobs=1, enable_coverage=False, args=[], combined_logs_len=0):
|
def run_tests(test_list, src_dir, build_dir, tmpdir, jobs=1, enable_coverage=False, args=[], combined_logs_len=0):
|
||||||
# Warn if bitcoind is already running (unix only)
|
# Warn if bitcoind is already running (unix only)
|
||||||
try:
|
try:
|
||||||
if subprocess.check_output(["pidof", "bitcoind"]) is not None:
|
if subprocess.check_output(["pidof", "bitcoind"]) is not None:
|
||||||
|
@ -296,11 +296,6 @@ def run_tests(test_list, src_dir, build_dir, exeext, tmpdir, jobs=1, enable_cove
|
||||||
if os.path.isdir(cache_dir):
|
if os.path.isdir(cache_dir):
|
||||||
print("%sWARNING!%s There is a cache directory here: %s. If tests fail unexpectedly, try deleting the cache directory." % (BOLD[1], BOLD[0], cache_dir))
|
print("%sWARNING!%s There is a cache directory here: %s. If tests fail unexpectedly, try deleting the cache directory." % (BOLD[1], BOLD[0], cache_dir))
|
||||||
|
|
||||||
#Set env vars
|
|
||||||
if "BITCOIND" not in os.environ:
|
|
||||||
os.environ["BITCOIND"] = build_dir + '/src/bitcoind' + exeext
|
|
||||||
os.environ["BITCOINCLI"] = build_dir + '/src/bitcoin-cli' + exeext
|
|
||||||
|
|
||||||
tests_dir = src_dir + '/test/functional/'
|
tests_dir = src_dir + '/test/functional/'
|
||||||
|
|
||||||
flags = ["--srcdir={}/src".format(build_dir)] + args
|
flags = ["--srcdir={}/src".format(build_dir)] + args
|
||||||
|
|
Loading…
Reference in a new issue