mirror of
https://github.com/dashpay/dash.git
synced 2024-12-26 04:22:55 +01:00
[tests] add TestNodeCLI class for calling bitcoin-cli for a node
This commit is contained in:
parent
85aec87b11
commit
b23549f6e6
@ -4,8 +4,10 @@
|
|||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
"""Class for bitcoind node under test"""
|
"""Class for bitcoind node under test"""
|
||||||
|
|
||||||
|
import decimal
|
||||||
import errno
|
import errno
|
||||||
import http.client
|
import http.client
|
||||||
|
import json
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
@ -45,6 +47,8 @@ class TestNode():
|
|||||||
self.extra_args = extra_args
|
self.extra_args = extra_args
|
||||||
self.args = [self.binary, "-datadir=" + self.datadir, "-server", "-keypool=1", "-discover=0", "-rest", "-logtimemicros", "-debug", "-debugexclude=libevent", "-debugexclude=leveldb", "-mocktime=" + str(mocktime), "-uacomment=testnode%d" % i]
|
self.args = [self.binary, "-datadir=" + self.datadir, "-server", "-keypool=1", "-discover=0", "-rest", "-logtimemicros", "-debug", "-debugexclude=libevent", "-debugexclude=leveldb", "-mocktime=" + str(mocktime), "-uacomment=testnode%d" % i]
|
||||||
|
|
||||||
|
self.cli = TestNodeCLI(os.getenv("BITCOINCLI", "bitcoin-cli"), self.datadir)
|
||||||
|
|
||||||
self.running = False
|
self.running = False
|
||||||
self.process = None
|
self.process = None
|
||||||
self.rpc_connected = False
|
self.rpc_connected = False
|
||||||
@ -132,3 +136,28 @@ class TestNode():
|
|||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
self.rpc = None
|
self.rpc = None
|
||||||
self.rpc_connected = False
|
self.rpc_connected = False
|
||||||
|
|
||||||
|
class TestNodeCLI():
|
||||||
|
"""Interface to bitcoin-cli for an individual node"""
|
||||||
|
|
||||||
|
def __init__(self, binary, datadir):
|
||||||
|
self.binary = binary
|
||||||
|
self.datadir = datadir
|
||||||
|
|
||||||
|
def __getattr__(self, command):
|
||||||
|
def dispatcher(*args, **kwargs):
|
||||||
|
return self.send_cli(command, *args, **kwargs)
|
||||||
|
return dispatcher
|
||||||
|
|
||||||
|
def send_cli(self, command, *args, **kwargs):
|
||||||
|
"""Run bitcoin-cli command. Deserializes returned string as python object."""
|
||||||
|
|
||||||
|
pos_args = [str(arg) for arg in args]
|
||||||
|
named_args = [str(key) + "=" + str(value) for (key, value) in kwargs.items()]
|
||||||
|
assert not (pos_args and named_args), "Cannot use positional arguments and named arguments in the same bitcoin-cli call"
|
||||||
|
p_args = [self.binary, "-datadir=" + self.datadir]
|
||||||
|
if named_args:
|
||||||
|
p_args += ["-named"]
|
||||||
|
p_args += [command] + pos_args + named_args
|
||||||
|
cli_output = subprocess.check_output(p_args, universal_newlines=True)
|
||||||
|
return json.loads(cli_output, parse_float=decimal.Decimal)
|
||||||
|
@ -279,6 +279,7 @@ def run_tests(test_list, src_dir, build_dir, exeext, tmpdir, jobs=1, enable_cove
|
|||||||
#Set env vars
|
#Set env vars
|
||||||
if "BITCOIND" not in os.environ:
|
if "BITCOIND" not in os.environ:
|
||||||
os.environ["BITCOIND"] = build_dir + '/src/bitcoind' + exeext
|
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/'
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user