소스 검색

[tests] add TestNodeCLI class for calling bitcoin-cli for a node

Github-Pull: #10798
Rebased-From: b23549f6e6
tags/v0.15.1
John Newbery 4 년 전
부모
커밋
016b9ada21
2개의 변경된 파일30개의 추가작업 그리고 0개의 파일을 삭제
  1. 29
    0
      test/functional/test_framework/test_node.py
  2. 1
    0
      test/functional/test_runner.py

+ 29
- 0
test/functional/test_framework/test_node.py 파일 보기

@@ -4,8 +4,10 @@
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
"""Class for bitcoind node under test"""

import decimal
import errno
import http.client
import json
import logging
import os
import subprocess
@@ -49,6 +51,8 @@ class TestNode():
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.cli = TestNodeCLI(os.getenv("BITCOINCLI", "bitcoin-cli"), self.datadir)

self.running = False
self.process = None
self.rpc_connected = False
@@ -136,3 +140,28 @@ class TestNode():
time.sleep(0.1)
self.rpc = None
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)

+ 1
- 0
test/functional/test_runner.py 파일 보기

@@ -279,6 +279,7 @@ def run_tests(test_list, src_dir, build_dir, exeext, tmpdir, jobs=1, enable_cove
#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/'


Loading…
취소
저장