55# file COPYING or http://www.opensource.org/licenses/mit-license.php.
66
77import struct
8- import time
98from io import BytesIO
109
1110from test_framework .authproxy import JSONRPCException
2524
2625class MnehfTest (DashTestFramework ):
2726 def set_test_params (self ):
28- extra_args = [["-vbparams=testdummy:0:999999999999:0:4:4:4:5:1" , "-persistmempool=0" ] for _ in range ( 4 )]
27+ extra_args = [["-vbparams=testdummy:0:999999999999:0:4:4:4:5:1" , "-persistmempool=0" ]] * 4
2928 self .set_dash_test_params (4 , 3 , extra_args = extra_args )
3029
3130 def skip_test_if_missing_module (self ):
@@ -122,8 +121,8 @@ def run_test(self):
122121 node = self .nodes [0 ]
123122
124123 self .set_sporks ()
124+ self .log .info ("Consensus rules assume there're no EHF signal before V20" )
125125 self .activate_v20 ()
126- self .log .info (f"After v20 activation should be plenty of blocks: { node .getblockcount ()} " )
127126
128127 self .log .info ("Mine a quorum..." )
129128 self .mine_quorum ()
@@ -164,8 +163,6 @@ def run_test(self):
164163 self .generate (node , 1 )
165164
166165
167- self .restart_all_nodes ()
168-
169166 for _ in range (4 ):
170167 self .check_fork ('started' )
171168 self .generate (node , 1 )
@@ -174,7 +171,7 @@ def run_test(self):
174171 for i in range (4 ):
175172 self .check_fork ('locked_in' )
176173 self .generate (node , 1 )
177- if i == 7 :
174+ if i == 1 :
178175 self .restart_all_nodes ()
179176
180177 self .check_fork ('active' )
@@ -201,7 +198,7 @@ def run_test(self):
201198 for _ in range (4 ):
202199 self .generate (node , 1 )
203200 self .check_fork ('started' )
204- self .restart_all_nodes ( )
201+ self .restart_node ( 0 )
205202 self .check_fork ('started' )
206203
207204
@@ -226,17 +223,15 @@ def run_test(self):
226223 self .restart_all_nodes (params = [self .mocktime , self .mocktime + 1000000 ])
227224 self .check_fork ('defined' )
228225
226+ self .log .info ("Wait MNs to sign EHF message" )
229227 self .mine_quorum ()
230228 self .check_fork ('defined' )
231229
232- self .log .info ("Waiting a bit to make EHF activating..." )
233- self .mine_quorum ()
234- for _ in range (4 * 4 ):
235- time .sleep (1 )
230+ def check_ehf_activated (self ):
236231 self .bump_mocktime (1 )
237232 self .generate (self .nodes [1 ], 1 )
238- self .check_fork ( 'active' )
239-
233+ return get_bip9_details ( self .nodes [ 0 ], 'testdummy' )[ 'status' ] == 'active'
234+ self . wait_until ( lambda : check_ehf_activated ( self ))
240235
241236if __name__ == '__main__' :
242237 MnehfTest ().main ()
0 commit comments