Skip to content

Commit 6ba685f

Browse files
committed
test: add helper for revoke calls
1 parent aa96ace commit 6ba685f

File tree

2 files changed

+25
-8
lines changed

2 files changed

+25
-8
lines changed

test/functional/feature_dip3_v19.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,8 @@ def run_test(self):
9494
assert evo_info_3 is not None
9595
self.dynamically_evo_update_service(evo_info_0, 9, should_be_rejected=True)
9696

97-
revoke_protx = self.mninfo[-1].proTxHash
98-
revoke_keyoperator = self.mninfo[-1].keyOperator
99-
self.log.info(f"Trying to revoke proTx:{revoke_protx}")
100-
self.test_revoke_protx(evo_info_3.nodeIdx, revoke_protx, revoke_keyoperator)
97+
self.log.info(f"Trying to revoke proTx:{self.mninfo[-1].proTxHash}")
98+
self.test_revoke_protx(evo_info_3.nodeIdx, self.mninfo[-1])
10199

102100
self.mine_quorum(llmq_type_name='llmq_test', llmq_type=100)
103101

@@ -115,14 +113,14 @@ def run_test(self):
115113

116114
self.wait_for_chainlocked_block_all_nodes(self.nodes[0].getbestblockhash())
117115

118-
def test_revoke_protx(self, node_idx, revoke_protx, revoke_keyoperator):
116+
def test_revoke_protx(self, node_idx, revoke_mn: MasternodeInfo):
119117
funds_address = self.nodes[0].getnewaddress()
120118
fund_txid = self.nodes[0].sendtoaddress(funds_address, 1)
121119
self.bump_mocktime(10 * 60 + 1) # to make tx safe to include in block
122120
tip = self.generate(self.nodes[0], 1)[0]
123121
assert_equal(self.nodes[0].getrawtransaction(fund_txid, 1, tip)['confirmations'], 1)
124122

125-
protx_result = self.nodes[0].protx('revoke', revoke_protx, revoke_keyoperator, 1, funds_address)
123+
protx_result = revoke_mn.revoke(self.nodes[0], reason=1, fundsAddr=funds_address)
126124
self.bump_mocktime(10 * 60 + 1) # to make tx safe to include in block
127125
tip = self.generate(self.nodes[0], 1, sync_fun=self.no_op)[0]
128126
assert_equal(self.nodes[0].getrawtransaction(protx_result, 1, tip)['confirmations'], 1)
@@ -131,9 +129,9 @@ def test_revoke_protx(self, node_idx, revoke_protx, revoke_keyoperator):
131129
self.wait_until(lambda: self.nodes[node_idx].getconnectioncount() == 0)
132130
self.connect_nodes(node_idx, 0)
133131
self.sync_all()
134-
self.log.info(f"Successfully revoked={revoke_protx}")
132+
self.log.info(f"Successfully revoked={revoke_mn.proTxHash}")
135133
for mn in self.mninfo: # type: MasternodeInfo
136-
if mn.proTxHash == revoke_protx:
134+
if mn.proTxHash == revoke_mn.proTxHash:
137135
self.mninfo.remove(mn)
138136
return
139137

test/functional/test_framework/test_framework.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1287,6 +1287,25 @@ def register_fund(self, node: TestNode, submit: bool = True, collateral_address:
12871287

12881288
return node.protx(command, *args)
12891289

1290+
def revoke(self, node: TestNode, reason: int, fundsAddr: Optional[str] = None) -> str:
1291+
# Update commands should be run from the appropriate MasternodeInfo instance, we do not allow overriding some values for this reason
1292+
if self.proTxHash is None:
1293+
raise AssertionError("proTxHash not set, did you call set_params()")
1294+
if self.keyOperator is None:
1295+
raise AssertionError("keyOperator not set, did you call generate_addresses()")
1296+
1297+
args = [
1298+
self.proTxHash,
1299+
self.keyOperator,
1300+
reason,
1301+
]
1302+
1303+
# fundsAddr is an optional field that results in different behavior if omitted, so we don't fallback here
1304+
if fundsAddr is not None:
1305+
args = args + [fundsAddr]
1306+
1307+
return node.protx('revoke', *args)
1308+
12901309
class DashTestFramework(BitcoinTestFramework):
12911310
def set_test_params(self):
12921311
"""Tests must this method to change default values for number of nodes, topology, etc"""

0 commit comments

Comments
 (0)