Skip to content

Commit f04ed99

Browse files
committed
refactor(test): platform_{http,p2p}_port > addrs_platform_{https,p2p}
We also update the type annotations to reflect the three different types of valid input (port, single address, array of addresses).
1 parent f59f9f5 commit f04ed99

File tree

2 files changed

+44
-41
lines changed

2 files changed

+44
-41
lines changed

test/functional/rpc_netinfo.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -61,17 +61,17 @@ def is_mn_visible(self, _protx_hash = None) -> bool:
6161
mn_visible = True
6262
return mn_visible
6363

64-
def register_mn(self, test: BitcoinTestFramework, submit: bool, addrs_core_p2p, addrs_platform_p2p = None, addrs_platform_http = None, code = None, msg = None) -> str:
64+
def register_mn(self, test: BitcoinTestFramework, submit: bool, addrs_core_p2p, addrs_platform_p2p = None, addrs_platform_https = None, code = None, msg = None) -> str:
6565
assert self.mn.nodeIdx is not None
6666

67-
if self.mn.evo and (not addrs_platform_http or not addrs_platform_p2p):
68-
raise AssertionError("EvoNode but platformP2PAddrs and platformHTTPSAddrs not specified")
67+
if self.mn.evo and (not addrs_platform_https or not addrs_platform_p2p):
68+
raise AssertionError("EvoNode but addrs_platform_p2p and addrs_platform_https not specified")
6969

7070
# Evonode-specific fields are ignored if regular masternode
7171
self.platform_nodeid = hash160(b'%d' % randint(1, 65535)).hex()
7272
protx_output = self.mn.register(self.node, submit=submit, coreP2PAddrs=addrs_core_p2p, operator_reward=0,
73-
platform_node_id=self.platform_nodeid, platform_p2p_port=addrs_platform_p2p,
74-
platform_http_port=addrs_platform_http, expected_assert_code=code, expected_assert_msg=msg)
73+
platform_node_id=self.platform_nodeid, addrs_platform_p2p=addrs_platform_p2p,
74+
addrs_platform_https=addrs_platform_https, expected_assert_code=code, expected_assert_msg=msg)
7575

7676
# If we expected error, make sure the transaction didn't succeed
7777
if code and msg:
@@ -93,15 +93,15 @@ def register_mn(self, test: BitcoinTestFramework, submit: bool, addrs_core_p2p,
9393
test.restart_node(self.mn.nodeIdx, extra_args=self.node.extra_args + [f'-masternodeblsprivkey={self.mn.keyOperator}'])
9494
return self.mn.proTxHash
9595

96-
def update_mn(self, test: BitcoinTestFramework, addrs_core_p2p, addrs_platform_p2p = None, addrs_platform_http = None) -> str:
96+
def update_mn(self, test: BitcoinTestFramework, addrs_core_p2p, addrs_platform_p2p = None, addrs_platform_https = None) -> str:
9797
assert self.mn.nodeIdx is not None
9898

99-
if self.mn.evo and (not addrs_platform_http or not addrs_platform_p2p):
100-
raise AssertionError("EvoNode but platformP2PAddrs and platformHTTPSAddrs not specified")
99+
if self.mn.evo and (not addrs_platform_https or not addrs_platform_p2p):
100+
raise AssertionError("EvoNode but addrs_platform_p2p and addrs_platform_https not specified")
101101

102102
# Evonode-specific fields are ignored if regular masternode
103103
protx_output = self.mn.update_service(self.node, submit=True, coreP2PAddrs=addrs_core_p2p, platform_node_id=self.platform_nodeid,
104-
platform_p2p_port=addrs_platform_p2p, platform_http_port=addrs_platform_http)
104+
addrs_platform_p2p=addrs_platform_p2p, addrs_platform_https=addrs_platform_https)
105105
assert protx_output is not None
106106

107107
self.mn.bury_tx(test, self.mn.nodeIdx, protx_output, 1)

test/functional/test_framework/test_framework.py

Lines changed: 35 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1221,21 +1221,22 @@ def get_node(self, test: BitcoinTestFramework) -> TestNode:
12211221
return test.nodes[self.nodeIdx]
12221222

12231223
def register(self, node: TestNode, submit: bool, collateral_txid: Optional[str] = None, collateral_vout: Optional[int] = None,
1224-
coreP2PAddrs: Union[str, List[str], None] = None, ownerAddr: Optional[str] = None, pubKeyOperator: Optional[str] = None, votingAddr: Optional[str] = None,
1225-
operator_reward: Optional[int] = None, rewards_address: Optional[str] = None, fundsAddr: Optional[str] = None,
1226-
platform_node_id: Optional[str] = None, platform_p2p_port: Optional[int] = None, platform_http_port: Optional[int] = None,
1227-
expected_assert_code: Optional[int] = None, expected_assert_msg: Optional[str] = None) -> Optional[str]:
1224+
coreP2PAddrs: Union[str, List[str], None] = None, ownerAddr: Optional[str] = None, pubKeyOperator: Optional[str] = None,
1225+
votingAddr: Optional[str] = None, operator_reward: Optional[int] = None, rewards_address: Optional[str] = None,
1226+
fundsAddr: Optional[str] = None, platform_node_id: Optional[str] = None, addrs_platform_p2p: Union[int, str, List[str], None] = None,
1227+
addrs_platform_https: Union[int, str, List[str], None] = None, expected_assert_code: Optional[int] = None,
1228+
expected_assert_msg: Optional[str] = None) -> Optional[str]:
12281229
if (expected_assert_code and not expected_assert_msg) or (not expected_assert_code and expected_assert_msg):
12291230
raise AssertionError("Intending to use assert_raises_rpc_error() but didn't specify code and message")
12301231

12311232
# EvoNode-specific fields are ignored for regular masternodes
12321233
if self.evo:
12331234
if platform_node_id is None:
12341235
raise AssertionError("EvoNode but platform_node_id is missing, must be specified!")
1235-
if platform_p2p_port is None:
1236-
raise AssertionError("EvoNode but platform_p2p_port is missing, must be specified!")
1237-
if platform_http_port is None:
1238-
raise AssertionError("EvoNode but platform_http_port is missing, must be specified!")
1236+
if addrs_platform_p2p is None:
1237+
raise AssertionError("EvoNode but addrs_platform_p2p is missing, must be specified!")
1238+
if addrs_platform_https is None:
1239+
raise AssertionError("EvoNode but addrs_platform_https is missing, must be specified!")
12391240

12401241
# Common arguments shared between regular masternodes and EvoNodes
12411242
args = [
@@ -1261,7 +1262,7 @@ def register(self, node: TestNode, submit: bool, collateral_txid: Optional[str]
12611262
# Construct final command and arguments
12621263
if self.evo:
12631264
command = "register_evo"
1264-
args = args + [platform_node_id, platform_p2p_port, platform_http_port, address_funds, submit] # type: ignore
1265+
args = args + [platform_node_id, addrs_platform_p2p, addrs_platform_https, address_funds, submit] # type: ignore
12651266
else:
12661267
command = "register_legacy" if self.legacy else "register"
12671268
args = args + [address_funds, submit] # type: ignore
@@ -1279,19 +1280,20 @@ def register(self, node: TestNode, submit: bool, collateral_txid: Optional[str]
12791280
def register_fund(self, node: TestNode, submit: bool, collateral_address: Optional[str] = None, coreP2PAddrs: Union[str, List[str], None] = None,
12801281
ownerAddr: Optional[str] = None, pubKeyOperator: Optional[str] = None, votingAddr: Optional[str] = None,
12811282
operator_reward: Optional[int] = None, rewards_address: Optional[str] = None, fundsAddr: Optional[str] = None,
1282-
platform_node_id: Optional[str] = None, platform_p2p_port: Optional[int] = None, platform_http_port: Optional[int] = None,
1283-
expected_assert_code: Optional[int] = None, expected_assert_msg: Optional[str] = None) -> Optional[str]:
1283+
platform_node_id: Optional[str] = None, addrs_platform_p2p: Union[int, str, List[str], None] = None,
1284+
addrs_platform_https: Union[int, str, List[str], None] = None, expected_assert_code: Optional[int] = None,
1285+
expected_assert_msg: Optional[str] = None) -> Optional[str]:
12841286
if (expected_assert_code and not expected_assert_msg) or (not expected_assert_code and expected_assert_msg):
12851287
raise AssertionError("Intending to use assert_raises_rpc_error() but didn't specify code and message")
12861288

12871289
# EvoNode-specific fields are ignored for regular masternodes
12881290
if self.evo:
12891291
if platform_node_id is None:
12901292
raise AssertionError("EvoNode but platform_node_id is missing, must be specified!")
1291-
if platform_p2p_port is None:
1292-
raise AssertionError("EvoNode but platform_p2p_port is missing, must be specified!")
1293-
if platform_http_port is None:
1294-
raise AssertionError("EvoNode but platform_http_port is missing, must be specified!")
1293+
if addrs_platform_p2p is None:
1294+
raise AssertionError("EvoNode but addrs_platform_p2p is missing, must be specified!")
1295+
if addrs_platform_https is None:
1296+
raise AssertionError("EvoNode but addrs_platform_https is missing, must be specified!")
12951297

12961298
# Use assert_raises_rpc_error if we expect to error out
12971299
use_assert: bool = bool(expected_assert_code and expected_assert_msg)
@@ -1316,7 +1318,7 @@ def register_fund(self, node: TestNode, submit: bool, collateral_address: Option
13161318
# Construct final command and arguments
13171319
if self.evo:
13181320
command = "register_fund_evo"
1319-
args = args + [platform_node_id, platform_p2p_port, platform_http_port, address_funds, submit] # type: ignore
1321+
args = args + [platform_node_id, addrs_platform_p2p, addrs_platform_https, address_funds, submit] # type: ignore
13201322
else:
13211323
command = "register_fund_legacy" if self.legacy else "register_fund"
13221324
args = args + [address_funds, submit] # type: ignore
@@ -1415,9 +1417,10 @@ def update_registrar(self, node: TestNode, submit: bool, pubKeyOperator: Optiona
14151417

14161418
return ret
14171419

1418-
def update_service(self, node: TestNode, submit: bool, coreP2PAddrs: Union[str, List[str], None] = None, platform_node_id: Optional[str] = None, platform_p2p_port: Optional[int] = None,
1419-
platform_http_port: Optional[int] = None, address_operator: Optional[str] = None, fundsAddr: Optional[str] = None,
1420-
expected_assert_code: Optional[int] = None, expected_assert_msg: Optional[str] = None) -> Optional[str]:
1420+
def update_service(self, node: TestNode, submit: bool, coreP2PAddrs: Union[str, List[str], None] = None, platform_node_id: Optional[str] = None,
1421+
addrs_platform_p2p: Union[int, str, List[str], None] = None, addrs_platform_https: Union[int, str, List[str], None] = None,
1422+
address_operator: Optional[str] = None, fundsAddr: Optional[str] = None, expected_assert_code: Optional[int] = None,
1423+
expected_assert_msg: Optional[str] = None) -> Optional[str]:
14211424
if (expected_assert_code and not expected_assert_msg) or (not expected_assert_code and expected_assert_msg):
14221425
raise AssertionError("Intending to use assert_raises_rpc_error() but didn't specify code and message")
14231426

@@ -1431,10 +1434,10 @@ def update_service(self, node: TestNode, submit: bool, coreP2PAddrs: Union[str,
14311434
if self.evo:
14321435
if platform_node_id is None:
14331436
raise AssertionError("EvoNode but platform_node_id is missing, must be specified!")
1434-
if platform_p2p_port is None:
1435-
raise AssertionError("EvoNode but platform_p2p_port is missing, must be specified!")
1436-
if platform_http_port is None:
1437-
raise AssertionError("EvoNode but platform_http_port is missing, must be specified!")
1437+
if addrs_platform_p2p is None:
1438+
raise AssertionError("EvoNode but addrs_platform_p2p is missing, must be specified!")
1439+
if addrs_platform_https is None:
1440+
raise AssertionError("EvoNode but addrs_platform_https is missing, must be specified!")
14381441

14391442
# Use assert_raises_rpc_error if we expect to error out
14401443
use_assert: bool = bool(expected_assert_code and expected_assert_msg)
@@ -1456,7 +1459,7 @@ def update_service(self, node: TestNode, submit: bool, coreP2PAddrs: Union[str,
14561459
# Construct final command and arguments
14571460
if self.evo:
14581461
command = "update_service_evo"
1459-
args = args + [platform_node_id, platform_p2p_port, platform_http_port, address_operator, address_funds, submit] # type: ignore
1462+
args = args + [platform_node_id, addrs_platform_p2p, addrs_platform_https, address_operator, address_funds, submit] # type: ignore
14601463
else:
14611464
command = "update_service"
14621465
args = args + [address_operator, address_funds, submit] # type: ignore
@@ -1641,8 +1644,8 @@ def dynamically_prepare_masternode(self, idx, node_p2p_port, evo=False, rnd=None
16411644
mn.generate_addresses(self.nodes[0])
16421645

16431646
platform_node_id = hash160(b'%d' % rnd).hex() if rnd is not None else hash160(b'%d' % node_p2p_port).hex()
1644-
platform_p2p_port = node_p2p_port + 101
1645-
platform_http_port = node_p2p_port + 102
1647+
addrs_platform_p2p = node_p2p_port + 101
1648+
addrs_platform_https = node_p2p_port + 102
16461649

16471650
outputs = {mn.collateral_address: mn.get_collateral_value(), mn.fundsAddr: 1}
16481651
collateral_txid = self.nodes[0].sendmany("", outputs)
@@ -1653,9 +1656,9 @@ def dynamically_prepare_masternode(self, idx, node_p2p_port, evo=False, rnd=None
16531656
coreP2PAddrs = ['127.0.0.1:%d' % node_p2p_port]
16541657
operatorReward = idx
16551658

1656-
# platform_node_id, platform_p2p_port and platform_http_port are ignored for regular masternodes
1659+
# platform_node_id, addrs_platform_p2p and addrs_platform_https are ignored for regular masternodes
16571660
protx_result = mn.register(self.nodes[0], submit=True, collateral_txid=collateral_txid, collateral_vout=collateral_vout, coreP2PAddrs=coreP2PAddrs, operator_reward=operatorReward,
1658-
platform_node_id=platform_node_id, platform_p2p_port=platform_p2p_port, platform_http_port=platform_http_port)
1661+
platform_node_id=platform_node_id, addrs_platform_p2p=addrs_platform_p2p, addrs_platform_https=addrs_platform_https)
16591662
assert protx_result is not None
16601663

16611664
self.bump_mocktime(10 * 60 + 1) # to make tx safe to include in block
@@ -1675,20 +1678,20 @@ def dynamically_evo_update_service(self, evo_info: MasternodeInfo, rnd=None, sho
16751678
# For the sake of the test, generate random nodeid, p2p and http platform values
16761679
r = rnd if rnd is not None else random.randint(21000, 65000)
16771680
platform_node_id = hash160(b'%d' % r).hex()
1678-
platform_p2p_port = r + 1
1679-
platform_http_port = r + 2
1681+
addrs_platform_p2p = r + 1
1682+
addrs_platform_https = r + 2
16801683

16811684
fund_txid = self.nodes[0].sendtoaddress(funds_address, 1)
16821685
self.bump_mocktime(10 * 60 + 1) # to make tx safe to include in block
16831686
evo_info.bury_tx(self, genIdx=0, txid=fund_txid, depth=1)
16841687

16851688
protx_success = False
16861689
try:
1687-
protx_result = evo_info.update_service(self.nodes[0], True, f'127.0.0.1:{evo_info.nodePort}', platform_node_id, platform_p2p_port, platform_http_port, operator_reward_address, funds_address)
1690+
protx_result = evo_info.update_service(self.nodes[0], True, f'127.0.0.1:{evo_info.nodePort}', platform_node_id, addrs_platform_p2p, addrs_platform_https, operator_reward_address, funds_address)
16881691
assert protx_result is not None
16891692
self.bump_mocktime(10 * 60 + 1) # to make tx safe to include in block
16901693
evo_info.bury_tx(self, genIdx=0, txid=protx_result, depth=1)
1691-
self.log.info("Updated EvoNode %s: platformNodeID=%s, platformP2PPort=%s, platformHTTPPort=%s" % (evo_info.proTxHash, platform_node_id, platform_p2p_port, platform_http_port))
1694+
self.log.info("Updated EvoNode %s: platformNodeID=%s, platformP2PPort=%s, platformHTTPPort=%s" % (evo_info.proTxHash, platform_node_id, addrs_platform_p2p, addrs_platform_https))
16921695
protx_success = True
16931696
except:
16941697
self.log.info("protx_evo rejected")

0 commit comments

Comments
 (0)