|
|
|
@ -17,9 +17,12 @@ from .util import (
@@ -17,9 +17,12 @@ from .util import (
|
|
|
|
|
assert_equal, |
|
|
|
|
get_rpc_proxy, |
|
|
|
|
rpc_url, |
|
|
|
|
wait_until, |
|
|
|
|
) |
|
|
|
|
from .authproxy import JSONRPCException |
|
|
|
|
|
|
|
|
|
BITCOIND_PROC_WAIT_TIMEOUT = 60 |
|
|
|
|
|
|
|
|
|
class TestNode(): |
|
|
|
|
"""A class for representing a bitcoind node under test. |
|
|
|
|
|
|
|
|
@ -125,14 +128,20 @@ class TestNode():
@@ -125,14 +128,20 @@ class TestNode():
|
|
|
|
|
if not self.running: |
|
|
|
|
return True |
|
|
|
|
return_code = self.process.poll() |
|
|
|
|
if return_code is not None: |
|
|
|
|
# process has stopped. Assert that it didn't return an error code. |
|
|
|
|
assert_equal(return_code, 0) |
|
|
|
|
self.running = False |
|
|
|
|
self.process = None |
|
|
|
|
self.log.debug("Node stopped") |
|
|
|
|
return True |
|
|
|
|
return False |
|
|
|
|
if return_code is None: |
|
|
|
|
return False |
|
|
|
|
|
|
|
|
|
# process has stopped. Assert that it didn't return an error code. |
|
|
|
|
assert_equal(return_code, 0) |
|
|
|
|
self.running = False |
|
|
|
|
self.process = None |
|
|
|
|
self.rpc_connected = False |
|
|
|
|
self.rpc = None |
|
|
|
|
self.log.debug("Node stopped") |
|
|
|
|
return True |
|
|
|
|
|
|
|
|
|
def wait_until_stopped(self, timeout=BITCOIND_PROC_WAIT_TIMEOUT): |
|
|
|
|
wait_until(self.is_node_stopped, timeout=timeout) |
|
|
|
|
|
|
|
|
|
def node_encrypt_wallet(self, passphrase): |
|
|
|
|
""""Encrypts the wallet. |
|
|
|
@ -140,10 +149,7 @@ class TestNode():
@@ -140,10 +149,7 @@ class TestNode():
|
|
|
|
|
This causes bitcoind to shutdown, so this method takes |
|
|
|
|
care of cleaning up resources.""" |
|
|
|
|
self.encryptwallet(passphrase) |
|
|
|
|
while not self.is_node_stopped(): |
|
|
|
|
time.sleep(0.1) |
|
|
|
|
self.rpc = None |
|
|
|
|
self.rpc_connected = False |
|
|
|
|
self.wait_until_stopped() |
|
|
|
|
|
|
|
|
|
class TestNodeCLI(): |
|
|
|
|
"""Interface to bitcoin-cli for an individual node""" |
|
|
|
|