Changeset View
Changeset View
Standalone View
Standalone View
test/functional/test_framework/test_node.py
Show First 20 Lines • Show All 375 Lines • ▼ Show 20 Lines | def batch(self, requests): | ||||
results = [] | results = [] | ||||
for request in requests: | for request in requests: | ||||
try: | try: | ||||
results.append(dict(result=request())) | results.append(dict(result=request())) | ||||
except JSONRPCException as e: | except JSONRPCException as e: | ||||
results.append(dict(error=e)) | results.append(dict(error=e)) | ||||
return results | return results | ||||
def send_cli(self, command, *args, **kwargs): | def send_cli(self, command=None, *args, **kwargs): | ||||
"""Run bitcoin-cli command. Deserializes returned string as python object.""" | """Run bitcoin-cli command. Deserializes returned string as python object.""" | ||||
pos_args = [str(arg) for arg in args] | pos_args = [str(arg) for arg in args] | ||||
named_args = [str(key) + "=" + str(value) | named_args = [str(key) + "=" + str(value) | ||||
for (key, value) in kwargs.items()] | for (key, value) in kwargs.items()] | ||||
assert not ( | assert not ( | ||||
pos_args and named_args), "Cannot use positional arguments and named arguments in the same bitcoin-cli call" | 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] + self.options | p_args = [self.binary, "-datadir=" + self.datadir] + self.options | ||||
if named_args: | if named_args: | ||||
p_args += ["-named"] | p_args += ["-named"] | ||||
p_args += [command] + pos_args + named_args | if command is not None: | ||||
p_args += [command] | |||||
p_args += pos_args + named_args | |||||
self.log.debug("Running bitcoin-cli command: {}".format(command)) | self.log.debug("Running bitcoin-cli command: {}".format(command)) | ||||
process = subprocess.Popen(p_args, stdin=subprocess.PIPE, | process = subprocess.Popen(p_args, stdin=subprocess.PIPE, | ||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) | stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) | ||||
cli_stdout, cli_stderr = process.communicate(input=self.input) | cli_stdout, cli_stderr = process.communicate(input=self.input) | ||||
returncode = process.poll() | returncode = process.poll() | ||||
if returncode: | if returncode: | ||||
match = re.match( | match = re.match( | ||||
r'error code: ([-0-9]+)\nerror message:\n(.*)', cli_stderr) | r'error code: ([-0-9]+)\nerror message:\n(.*)', cli_stderr) | ||||
Show All 10 Lines |