Skip to content

Commit

Permalink
MERGE-FIX: Adapt bitcoin_functional
Browse files Browse the repository at this point in the history
  • Loading branch information
stevenroose committed May 3, 2019
1 parent 449ac89 commit 71723f7
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 17 deletions.
3 changes: 2 additions & 1 deletion test/bitcoin_functional/functional/feature_filelock.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ def run_test(self):
self.log.info("Using datadir {}".format(datadir))

self.log.info("Check that we can't start a second bitcoind instance using the same datadir")
expected_msg = "Error: Cannot obtain a lock on data directory {}. Bitcoin Core is probably already running.".format(datadir)
# ELEMENTS:
expected_msg = "Error: Cannot obtain a lock on data directory {}. Elements Core is probably already running.".format(datadir)
self.nodes[1].assert_start_raises_init_error(extra_args=['-datadir={}'.format(self.nodes[0].datadir), '-noserver'], expected_msg=expected_msg)

if self.is_wallet_compiled():
Expand Down
3 changes: 2 additions & 1 deletion test/bitcoin_functional/functional/rpc_rawtransaction.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ def run_test(self):
assert_raises_rpc_error(-1, "createrawtransaction", self.nodes[0].createrawtransaction, [])

# Test `createrawtransaction` invalid extra parameters
assert_raises_rpc_error(-1, "createrawtransaction", self.nodes[0].createrawtransaction, [], {}, 0, False, 'foo')
# ELEMENTS:
#assert_raises_rpc_error(-1, "createrawtransaction", self.nodes[0].createrawtransaction, [], {}, 0, False, 'foo')

# Test `createrawtransaction` invalid `inputs`
txid = '1d1d4e24ed99057e84c3f80fd8fbec79ed9e1acee37da269356ecea000000000'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,9 @@ def main(self):
help="The seed to use for assigning port numbers (default: current process id)")
parser.add_argument("--coveragedir", dest="coveragedir",
help="Write tested RPC commands into this directory")
# ELEMENTS:
parser.add_argument("--configfile", dest="configfile",
default=os.path.abspath(os.path.dirname(os.path.realpath(__file__)) + "/../../config.ini"),
default=os.path.abspath(os.path.dirname(os.path.realpath(__file__)) + "/../../../config.ini"),
help="Location of the test framework config file (default: %(default)s)")
parser.add_argument("--pdbonfailure", dest="pdbonfailure", default=False, action="store_true",
help="Attach a python debugger if test fails")
Expand All @@ -137,8 +138,8 @@ def main(self):

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"])
self.options.bitcoind = os.getenv("BITCOIND", default=config["environment"]["BUILDDIR"] + '/src/elementsd' + config["environment"]["EXEEXT"])
self.options.bitcoincli = os.getenv("BITCOINCLI", default=config["environment"]["BUILDDIR"] + '/src/elements-cli' + config["environment"]["EXEEXT"])

os.environ['PATH'] = os.pathsep.join([
os.path.join(config['environment']['BUILDDIR'], 'src'),
Expand Down
28 changes: 24 additions & 4 deletions test/bitcoin_functional/functional/test_framework/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,7 @@ def initialize_datadir(dirname, n):
datadir = get_datadir_path(dirname, n)
if not os.path.isdir(datadir):
os.makedirs(datadir)
with open(os.path.join(datadir, "bitcoin.conf"), 'w', encoding='utf8') as f:
with open(os.path.join(datadir, "elements.conf"), 'w', encoding='utf8') as f:
f.write("regtest=1\n")
f.write("[regtest]\n")
f.write("port=" + str(p2p_port(n)) + "\n")
Expand All @@ -302,6 +302,26 @@ def initialize_datadir(dirname, n):
f.write("discover=0\n")
f.write("listenonion=0\n")
f.write("printtoconsole=0\n")
# Elements:
f.write("con_blocksubsidy=5000000000\n")
f.write("con_connect_coinbase=0\n")
f.write("con_has_parent_chain=0\n")
f.write("parentgenesisblockhash=0\n")
f.write("anyonecanspendaremine=0\n")
f.write("con_blockheightinheader=0\n")
f.write("con_elementsmode=0\n")
f.write("con_signed_blocks=0\n")
f.write("multi_data_permitted=0\n")
f.write("walletrbf=0\n") # Default is 1 in Elements
f.write("con_bip34height=100000000\n")
f.write("con_bip65height=1351\n")
f.write("con_bip66height=1251\n")
f.write("con_genesis_style=bitcoin\n")
f.write("con_csv_deploy_start=0\n") # Default is -1 (always active)
f.write("blindedaddresses=0\n")
f.write("pubkeyprefix=111\n")
f.write("scriptprefix=196\n")
f.write("bech32_hrp=bcrt\n")
os.makedirs(os.path.join(datadir, 'stderr'), exist_ok=True)
os.makedirs(os.path.join(datadir, 'stdout'), exist_ok=True)
return datadir
Expand All @@ -310,15 +330,15 @@ def get_datadir_path(dirname, n):
return os.path.join(dirname, "node" + str(n))

def append_config(datadir, options):
with open(os.path.join(datadir, "bitcoin.conf"), 'a', encoding='utf8') as f:
with open(os.path.join(datadir, "elements.conf"), 'a', encoding='utf8') as f:
for option in options:
f.write(option + "\n")

def get_auth_cookie(datadir):
user = None
password = None
if os.path.isfile(os.path.join(datadir, "bitcoin.conf")):
with open(os.path.join(datadir, "bitcoin.conf"), 'r', encoding='utf8') as f:
if os.path.isfile(os.path.join(datadir, "elements.conf")):
with open(os.path.join(datadir, "elements.conf"), 'r', encoding='utf8') as f:
for line in f:
if line.startswith("rpcuser="):
assert user is None # Ensure that there is only one rpcuser line
Expand Down
24 changes: 16 additions & 8 deletions test/bitcoin_functional/functional/test_runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,8 @@
# vv Tests less than 30s vv
'wallet_keypool_topup.py',
'interface_zmq.py',
'interface_bitcoin_cli.py',
# ELEMENTS:
#'interface_bitcoin_cli.py',
'mempool_resurrect.py',
'wallet_txn_doublespend.py --mineblock',
'wallet_txn_clone.py',
Expand All @@ -121,7 +122,8 @@
'wallet_disableprivatekeys.py --usecli',
'interface_http.py',
'rpc_psbt.py',
'rpc_users.py',
# ELEMENTS:
#'rpc_users.py',
'feature_proxy.py',
'rpc_signrawtransaction.py',
'wallet_groups.py',
Expand Down Expand Up @@ -176,12 +178,14 @@
'feature_uacomment.py',
'feature_filelock.py',
'p2p_unrequested_blocks.py',
'feature_includeconf.py',
# ELEMENTS:
#'feature_includeconf.py',
'rpc_scantxoutset.py',
'feature_logging.py',
'p2p_node_network_limited.py',
'feature_blocksdir.py',
'feature_config_args.py',
# ELEMENTS:
#'feature_config_args.py',
'rpc_help.py',
'feature_help.py',
# Don't append tests at the end to avoid merge conflicts
Expand Down Expand Up @@ -233,7 +237,8 @@ def main():

# Read config generated by configure.
config = configparser.ConfigParser()
configfile = os.path.abspath(os.path.dirname(__file__)) + "/../config.ini"
# ELEMENTS:
configfile = os.path.abspath(os.path.dirname(__file__)) + "/../../config.ini"
config.read_file(open(configfile, encoding="utf8"))

passon_args.append("--configfile=%s" % configfile)
Expand Down Expand Up @@ -303,7 +308,8 @@ def main():
if args.help:
# Print help for test_runner.py, then print help of the first script (with args removed) and exit.
parser.print_help()
subprocess.check_call([sys.executable, os.path.join(config["environment"]["SRCDIR"], 'test', 'functional', test_list[0].split()[0]), '-h'])
# ELEMENTS:
subprocess.check_call([sys.executable, os.path.join(config["environment"]["SRCDIR"], 'test', 'bitcoin_functional', 'functional', test_list[0].split()[0]), '-h'])
sys.exit(0)

check_script_list(src_dir=config["environment"]["SRCDIR"], fail_on_warn=args.ci)
Expand Down Expand Up @@ -340,7 +346,8 @@ def run_tests(*, test_list, src_dir, build_dir, tmpdir, jobs=1, enable_coverage=
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))

tests_dir = src_dir + '/test/functional/'
# ELEMENTS:
tests_dir = src_dir + '/test/bitcoin_functional/functional/'

flags = ['--cachedir={}'.format(cache_dir)] + args

Expand Down Expand Up @@ -571,7 +578,8 @@ def check_script_list(*, src_dir, fail_on_warn):
Check that there are no scripts in the functional tests directory which are
not being run by pull-tester.py."""
script_dir = src_dir + '/test/functional/'
# ELEMENTS:
script_dir = src_dir + '/test/bitcoin_functional/functional/'
python_files = set([test_file for test_file in os.listdir(script_dir) if test_file.endswith(".py")])
missed_tests = list(python_files - set(map(lambda x: x.split()[0], ALL_SCRIPTS + NON_SCRIPTS)))
if len(missed_tests) != 0:
Expand Down

0 comments on commit 71723f7

Please sign in to comment.