@@ -48,6 +48,12 @@ def check_mn_list(self, mns):
4848 self .check_mn_list_on_node (i , mns )
4949 self .log .info ("Deterministic list contains %d masternodes for all peers." % len (mns ))
5050
51+ def check_mn_enabled_count (self , enabled , total ):
52+ for node in self .nodes :
53+ node_count = node .getmasternodecount ()
54+ assert_equal (node_count ['enabled' ], enabled )
55+ assert_equal (node_count ['total' ], total )
56+
5157 def get_addr_balance (self , node , addr ):
5258 rcv = node .listreceivedbyaddress (0 , False , False , addr )
5359 return rcv [0 ]['amount' ] if len (rcv ) > 0 else 0
@@ -131,6 +137,9 @@ def run_test(self):
131137 # -- DIP3 enforced and SPORK_21 active here --
132138 self .wait_until_mnsync_completed ()
133139
140+ # enabled/total masternodes: 0/0
141+ self .check_mn_enabled_count (0 , 0 )
142+
134143 # Create 3 DMNs and init the remote nodes
135144 self .log .info ("Initializing masternodes..." )
136145 self .add_new_dmn (mns , "internal" )
@@ -142,6 +151,9 @@ def run_test(self):
142151 miner .generate (1 )
143152 self .sync_blocks ()
144153
154+ # enabled/total masternodes: 3/3
155+ self .check_mn_enabled_count (3 , 3 )
156+
145157 # Init the other 3 remote nodes before creating the ProReg tx
146158 self .log .info ("Initializing more masternodes..." )
147159 op_keys = []
@@ -162,6 +174,9 @@ def run_test(self):
162174 self .sync_blocks ()
163175 time .sleep (1 )
164176 self .log .info ("Masternodes started." )
177+
178+ # enabled/total masternodes: 6/6
179+ self .check_mn_enabled_count (6 , 6 )
165180 self .check_mn_list (mns )
166181
167182 # Check status from remote nodes
@@ -188,6 +203,9 @@ def run_test(self):
188203 miner .generate (1 )
189204 self .sync_blocks ()
190205 assert_greater_than (miner .getrawtransaction (spend_txid , True )["confirmations" ], 0 )
206+
207+ # enabled/total masternodes: 5/5
208+ self .check_mn_enabled_count (5 , 5 )
191209 self .check_mn_list (mns )
192210
193211 # Register dmn again, with the collateral of dmn2
@@ -200,6 +218,9 @@ def run_test(self):
200218 outpoint = dmn2 .collateral , op_addr_and_key = dmn_keys ))
201219 miner .generate (1 )
202220 self .sync_blocks ()
221+
222+ # enabled/total masternodes: 5/5
223+ self .check_mn_enabled_count (5 , 5 )
203224 self .check_mn_list (mns )
204225
205226 # Now try to register dmn2 again with an already-used IP
@@ -235,6 +256,9 @@ def run_test(self):
235256 json_tx = self .nodes [dmn2c .idx ].getrawtransaction (dmn2c .proTx , True )
236257 assert_greater_than (json_tx ['confirmations' ], 0 )
237258 self .check_proreg_payload (dmn2c , json_tx )
259+
260+ # enabled/total masternodes: 6/6
261+ self .check_mn_enabled_count (6 , 6 )
238262 self .check_mn_list (mns ) # 6 masternodes again
239263
240264 # Test payments.
@@ -317,9 +341,13 @@ def run_test(self):
317341 self .sync_mempools ([miner , controller ])
318342 miner .generate (1 )
319343 self .sync_blocks ()
320- # Updating the operator address, clears the IP (and puts the mn in PoSe banned state)
344+
345+ # enabled/total masternodes: 5/6
346+ # Updating the operator key, clears the IP (and puts the mn in PoSe banned state)
347+ self .check_mn_enabled_count (5 , 6 )
321348 mns [0 ].ipport = "[::]:0"
322349 self .check_mn_list (mns )
350+
323351 old_mn0_balance = self .get_addr_balance (controller , mns [0 ].payee )
324352 self .log .info ("Update operator address (with external key)..." )
325353 mns [0 ].operator = self .nodes [mns [0 ].idx ].getnewaddress ()
@@ -328,13 +356,15 @@ def run_test(self):
328356 miner .protx_update_registrar (mns [0 ].proTx , mns [0 ].operator , "" , "" , ownerKey )
329357 miner .generate (1 )
330358 self .sync_blocks ()
359+ self .check_mn_enabled_count (5 , 6 ) # stil not valid until new operator sends proUpServ
331360 self .check_mn_list (mns )
332361 self .log .info ("Update voting address..." )
333362 mns [1 ].voting = controller .getnewaddress ()
334363 controller .protx_update_registrar (mns [1 ].proTx , "" , mns [1 ].voting , "" )
335364 self .sync_mempools ([miner , controller ])
336365 miner .generate (1 )
337366 self .sync_blocks ()
367+ self .check_mn_enabled_count (5 , 6 )
338368 self .check_mn_list (mns )
339369 self .log .info ("Update payout address..." )
340370 old_payee = mns [2 ].payee
@@ -346,6 +376,7 @@ def run_test(self):
346376 old_mn2_bal = self .get_addr_balance (controller , old_payee )
347377 miner .generate (len (mns )- 1 )
348378 self .sync_blocks ()
379+ self .check_mn_enabled_count (5 , 6 )
349380 self .check_mn_list (mns )
350381 # Check payment to new address
351382 self .log .info ("Checking payments..." )
@@ -367,6 +398,7 @@ def run_test(self):
367398 self .sync_mempools ([miner , controller ])
368399 miner .generate (1 )
369400 self .sync_blocks ()
401+ self .check_mn_enabled_count (4 , 6 ) # mn3 has been revoked
370402 self .check_mn_list (mns )
371403 old_mn3_bal = self .get_addr_balance (controller , mns [3 ].payee )
372404 self .log .info ("Revoke masternode (with external key)..." )
@@ -378,7 +410,11 @@ def run_test(self):
378410 old_mn4_bal = self .get_addr_balance (controller , mns [4 ].payee )
379411 miner .generate (len (mns ) + 1 )
380412 self .sync_blocks ()
413+
414+ # enabled/total masternodes: 3/6 (mn0 banned, mn3 and mn4 revoked)
415+ self .check_mn_enabled_count (3 , 6 )
381416 self .check_mn_list (mns )
417+
382418 # Check (no) payments
383419 self .log .info ("Checking payments..." )
384420 assert_equal (self .get_addr_balance (controller , mns [3 ].payee ), old_mn3_bal )
@@ -394,7 +430,11 @@ def run_test(self):
394430 miner .protx_update_service (mns [3 ].proTx , mns [3 ].ipport , "" , mns [3 ].operator_key )
395431 miner .generate (len (mns ))
396432 self .sync_blocks ()
433+
434+ # enabled/total masternodes: 4/6 (mn3 is back)
435+ self .check_mn_enabled_count (4 , 6 )
397436 self .check_mn_list (mns )
437+
398438 self .log .info ("Checking payments..." )
399439 assert_equal (self .get_addr_balance (controller , mns [3 ].payee ), old_mn3_bal + Decimal ('3' ))
400440
0 commit comments