Changeset View
Changeset View
Standalone View
Standalone View
test/functional/test_framework/test_node.py
Show All 17 Lines | |||||
import tempfile | import tempfile | ||||
import time | import time | ||||
import urllib.parse | import urllib.parse | ||||
import collections | import collections | ||||
from .authproxy import JSONRPCException | from .authproxy import JSONRPCException | ||||
from .messages import COIN, CTransaction, FromHex | from .messages import COIN, CTransaction, FromHex | ||||
from .util import ( | from .util import ( | ||||
MAX_NODES, | |||||
append_config, | append_config, | ||||
delete_cookie_file, | delete_cookie_file, | ||||
get_rpc_proxy, | get_rpc_proxy, | ||||
p2p_port, | p2p_port, | ||||
rpc_url, | rpc_url, | ||||
wait_until, | wait_until, | ||||
) | ) | ||||
▲ Show 20 Lines • Show All 78 Lines • ▼ Show 20 Lines | def __init__(self, i, datadir, *, chain, host, rpc_port, p2p_port, timewait, bitcoind, bitcoin_cli, | ||||
self.rpc = None | self.rpc = None | ||||
self.url = None | self.url = None | ||||
self.relay_fee_cache = None | self.relay_fee_cache = None | ||||
self.log = logging.getLogger('TestFramework.node{}'.format(i)) | self.log = logging.getLogger('TestFramework.node{}'.format(i)) | ||||
# Whether to kill the node when this object goes away | # Whether to kill the node when this object goes away | ||||
self.cleanup_on_exit = True | self.cleanup_on_exit = True | ||||
self.p2ps = [] | self.p2ps = [] | ||||
def get_deterministic_priv_key(self): | |||||
"""Return a deterministic priv key in base58, that only depends on the node's index""" | |||||
AddressKeyPair = collections.namedtuple( | AddressKeyPair = collections.namedtuple( | ||||
'AddressKeyPair', ['address', 'key']) | 'AddressKeyPair', ['address', 'key']) | ||||
PRIV_KEYS = [ | PRIV_KEYS = [ | ||||
# address , privkey | # address , privkey | ||||
AddressKeyPair('mjTkW3DjgyZck4KbiRusZsqTgaYTxdSz6z', | AddressKeyPair( | ||||
'mjTkW3DjgyZck4KbiRusZsqTgaYTxdSz6z', | |||||
'cVpF924EspNh8KjYsfhgY96mmxvT6DgdWiTYMtMjuM74hJaU5psW'), | 'cVpF924EspNh8KjYsfhgY96mmxvT6DgdWiTYMtMjuM74hJaU5psW'), | ||||
AddressKeyPair('msX6jQXvxiNhx3Q62PKeLPrhrqZQdSimTg', | AddressKeyPair( | ||||
'msX6jQXvxiNhx3Q62PKeLPrhrqZQdSimTg', | |||||
'cUxsWyKyZ9MAQTaAhUQWJmBbSvHMwSmuv59KgxQV7oZQU3PXN3KE'), | 'cUxsWyKyZ9MAQTaAhUQWJmBbSvHMwSmuv59KgxQV7oZQU3PXN3KE'), | ||||
AddressKeyPair('mnonCMyH9TmAsSj3M59DsbH8H63U3RKoFP', | AddressKeyPair( | ||||
'mnonCMyH9TmAsSj3M59DsbH8H63U3RKoFP', | |||||
'cTrh7dkEAeJd6b3MRX9bZK8eRmNqVCMH3LSUkE3dSFDyzjU38QxK'), | 'cTrh7dkEAeJd6b3MRX9bZK8eRmNqVCMH3LSUkE3dSFDyzjU38QxK'), | ||||
AddressKeyPair('mqJupas8Dt2uestQDvV2NH3RU8uZh2dqQR', | AddressKeyPair( | ||||
'mqJupas8Dt2uestQDvV2NH3RU8uZh2dqQR', | |||||
'cVuKKa7gbehEQvVq717hYcbE9Dqmq7KEBKqWgWrYBa2CKKrhtRim'), | 'cVuKKa7gbehEQvVq717hYcbE9Dqmq7KEBKqWgWrYBa2CKKrhtRim'), | ||||
AddressKeyPair('msYac7Rvd5ywm6pEmkjyxhbCDKqWsVeYws', | AddressKeyPair( | ||||
'msYac7Rvd5ywm6pEmkjyxhbCDKqWsVeYws', | |||||
'cQDCBuKcjanpXDpCqacNSjYfxeQj8G6CAtH1Dsk3cXyqLNC4RPuh'), | 'cQDCBuKcjanpXDpCqacNSjYfxeQj8G6CAtH1Dsk3cXyqLNC4RPuh'), | ||||
AddressKeyPair('n2rnuUnwLgXqf9kk2kjvVm8R5BZK1yxQBi', | AddressKeyPair( | ||||
'n2rnuUnwLgXqf9kk2kjvVm8R5BZK1yxQBi', | |||||
'cQakmfPSLSqKHyMFGwAqKHgWUiofJCagVGhiB4KCainaeCSxeyYq'), | 'cQakmfPSLSqKHyMFGwAqKHgWUiofJCagVGhiB4KCainaeCSxeyYq'), | ||||
AddressKeyPair('myzuPxRwsf3vvGzEuzPfK9Nf2RfwauwYe6', | AddressKeyPair( | ||||
'myzuPxRwsf3vvGzEuzPfK9Nf2RfwauwYe6', | |||||
'cQMpDLJwA8DBe9NcQbdoSb1BhmFxVjWD5gRyrLZCtpuF9Zi3a9RK'), | 'cQMpDLJwA8DBe9NcQbdoSb1BhmFxVjWD5gRyrLZCtpuF9Zi3a9RK'), | ||||
AddressKeyPair('mumwTaMtbxEPUswmLBBN3vM9oGRtGBrys8', | AddressKeyPair( | ||||
'mumwTaMtbxEPUswmLBBN3vM9oGRtGBrys8', | |||||
'cSXmRKXVcoouhNNVpcNKFfxsTsToY5pvB9DVsFksF1ENunTzRKsy'), | 'cSXmRKXVcoouhNNVpcNKFfxsTsToY5pvB9DVsFksF1ENunTzRKsy'), | ||||
AddressKeyPair('mpV7aGShMkJCZgbW7F6iZgrvuPHjZjH9qg', | AddressKeyPair( | ||||
'mpV7aGShMkJCZgbW7F6iZgrvuPHjZjH9qg', | |||||
'cSoXt6tm3pqy43UMabY6eUTmR3eSUYFtB2iNQDGgb3VUnRsQys2k'), | 'cSoXt6tm3pqy43UMabY6eUTmR3eSUYFtB2iNQDGgb3VUnRsQys2k'), | ||||
AddressKeyPair( | |||||
'mq4fBNdckGtvY2mijd9am7DRsbRB4KjUkf', | |||||
'cN55daf1HotwBAgAKWVgDcoppmUNDtQSfb7XLutTLeAgVc3u8hik'), | |||||
AddressKeyPair( | |||||
'mpFAHDjX7KregM3rVotdXzQmkbwtbQEnZ6', | |||||
'cT7qK7g1wkYEMvKowd2ZrX1E5f6JQ7TM246UfqbCiyF7kZhorpX3'), | |||||
AddressKeyPair( | |||||
'mzRe8QZMfGi58KyWCse2exxEFry2sfF2Y7', | |||||
'cPiRWE8KMjTRxH1MWkPerhfoHFn5iHPWVK5aPqjW8NxmdwenFinJ'), | |||||
] | ] | ||||
return PRIV_KEYS[self.index] | |||||
def get_deterministic_priv_key(self): | |||||
"""Return a deterministic priv key in base58, that only depends on the node's index""" | |||||
assert len(self.PRIV_KEYS) == MAX_NODES | |||||
return self.PRIV_KEYS[self.index] | |||||
def _node_msg(self, msg: str) -> str: | def _node_msg(self, msg: str) -> str: | ||||
"""Return a modified msg that identifies this node by its index as a debugging aid.""" | """Return a modified msg that identifies this node by its index as a debugging aid.""" | ||||
return "[node {}] {}".format(self.index, msg) | return "[node {}] {}".format(self.index, msg) | ||||
def _raise_assertion_error(self, msg: str): | def _raise_assertion_error(self, msg: str): | ||||
"""Raise an AssertionError with msg modified to identify this node.""" | """Raise an AssertionError with msg modified to identify this node.""" | ||||
raise AssertionError(self._node_msg(msg)) | raise AssertionError(self._node_msg(msg)) | ||||
▲ Show 20 Lines • Show All 404 Lines • Show Last 20 Lines |