Changeset View
Changeset View
Standalone View
Standalone View
test/functional/test_framework/test_node.py
Show All 12 Lines | |||||
import logging | import logging | ||||
import os | import os | ||||
import re | import re | ||||
import subprocess | import subprocess | ||||
import sys | import sys | ||||
import tempfile | import tempfile | ||||
import time | import time | ||||
import urllib.parse | import urllib.parse | ||||
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 ( | ||||
append_config, | append_config, | ||||
delete_cookie_file, | delete_cookie_file, | ||||
get_rpc_proxy, | get_rpc_proxy, | ||||
p2p_port, | p2p_port, | ||||
▲ Show 20 Lines • Show All 77 Lines • ▼ Show 20 Lines | def __init__(self, i, datadir, *, host, rpc_port, p2p_port, timewait, bitcoind, | ||||
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): | def get_deterministic_priv_key(self): | ||||
"""Return a deterministic priv key in base58, that only depends on the node's index""" | """Return a deterministic priv key in base58, that only depends on the node's index""" | ||||
AddressKeyPair = collections.namedtuple( | |||||
'AddressKeyPair', ['address', 'key']) | |||||
PRIV_KEYS = [ | PRIV_KEYS = [ | ||||
# address , privkey | # address , privkey | ||||
('mjTkW3DjgyZck4KbiRusZsqTgaYTxdSz6z', | AddressKeyPair('mjTkW3DjgyZck4KbiRusZsqTgaYTxdSz6z', | ||||
'cVpF924EspNh8KjYsfhgY96mmxvT6DgdWiTYMtMjuM74hJaU5psW'), | 'cVpF924EspNh8KjYsfhgY96mmxvT6DgdWiTYMtMjuM74hJaU5psW'), | ||||
('msX6jQXvxiNhx3Q62PKeLPrhrqZQdSimTg', | AddressKeyPair('msX6jQXvxiNhx3Q62PKeLPrhrqZQdSimTg', | ||||
'cUxsWyKyZ9MAQTaAhUQWJmBbSvHMwSmuv59KgxQV7oZQU3PXN3KE'), | 'cUxsWyKyZ9MAQTaAhUQWJmBbSvHMwSmuv59KgxQV7oZQU3PXN3KE'), | ||||
('mnonCMyH9TmAsSj3M59DsbH8H63U3RKoFP', | AddressKeyPair('mnonCMyH9TmAsSj3M59DsbH8H63U3RKoFP', | ||||
'cTrh7dkEAeJd6b3MRX9bZK8eRmNqVCMH3LSUkE3dSFDyzjU38QxK'), | 'cTrh7dkEAeJd6b3MRX9bZK8eRmNqVCMH3LSUkE3dSFDyzjU38QxK'), | ||||
('mqJupas8Dt2uestQDvV2NH3RU8uZh2dqQR', | AddressKeyPair('mqJupas8Dt2uestQDvV2NH3RU8uZh2dqQR', | ||||
'cVuKKa7gbehEQvVq717hYcbE9Dqmq7KEBKqWgWrYBa2CKKrhtRim'), | 'cVuKKa7gbehEQvVq717hYcbE9Dqmq7KEBKqWgWrYBa2CKKrhtRim'), | ||||
('msYac7Rvd5ywm6pEmkjyxhbCDKqWsVeYws', | AddressKeyPair('msYac7Rvd5ywm6pEmkjyxhbCDKqWsVeYws', | ||||
'cQDCBuKcjanpXDpCqacNSjYfxeQj8G6CAtH1Dsk3cXyqLNC4RPuh'), | 'cQDCBuKcjanpXDpCqacNSjYfxeQj8G6CAtH1Dsk3cXyqLNC4RPuh'), | ||||
('n2rnuUnwLgXqf9kk2kjvVm8R5BZK1yxQBi', | AddressKeyPair('n2rnuUnwLgXqf9kk2kjvVm8R5BZK1yxQBi', | ||||
'cQakmfPSLSqKHyMFGwAqKHgWUiofJCagVGhiB4KCainaeCSxeyYq'), | 'cQakmfPSLSqKHyMFGwAqKHgWUiofJCagVGhiB4KCainaeCSxeyYq'), | ||||
('myzuPxRwsf3vvGzEuzPfK9Nf2RfwauwYe6', | AddressKeyPair('myzuPxRwsf3vvGzEuzPfK9Nf2RfwauwYe6', | ||||
'cQMpDLJwA8DBe9NcQbdoSb1BhmFxVjWD5gRyrLZCtpuF9Zi3a9RK'), | 'cQMpDLJwA8DBe9NcQbdoSb1BhmFxVjWD5gRyrLZCtpuF9Zi3a9RK'), | ||||
('mumwTaMtbxEPUswmLBBN3vM9oGRtGBrys8', | AddressKeyPair('mumwTaMtbxEPUswmLBBN3vM9oGRtGBrys8', | ||||
'cSXmRKXVcoouhNNVpcNKFfxsTsToY5pvB9DVsFksF1ENunTzRKsy'), | 'cSXmRKXVcoouhNNVpcNKFfxsTsToY5pvB9DVsFksF1ENunTzRKsy'), | ||||
('mpV7aGShMkJCZgbW7F6iZgrvuPHjZjH9qg', | AddressKeyPair('mpV7aGShMkJCZgbW7F6iZgrvuPHjZjH9qg', | ||||
'cSoXt6tm3pqy43UMabY6eUTmR3eSUYFtB2iNQDGgb3VUnRsQys2k'), | 'cSoXt6tm3pqy43UMabY6eUTmR3eSUYFtB2iNQDGgb3VUnRsQys2k'), | ||||
] | ] | ||||
return PRIV_KEYS[self.index] | return 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): | ||||
▲ Show 20 Lines • Show All 362 Lines • Show Last 20 Lines |