26
26
assert_equal ,
27
27
check_json_precision ,
28
28
connect_nodes_bi ,
29
- disable_mocktime ,
30
29
disconnect_nodes ,
31
- enable_mocktime ,
32
- get_mocktime ,
33
30
get_rpc_proxy ,
34
31
initialize_datadir ,
35
32
get_datadir_path ,
@@ -73,6 +70,7 @@ def __init__(self):
73
70
self .setup_clean_chain = False
74
71
self .nodes = []
75
72
self .bitcoind_processes = {}
73
+ self .mocktime = 0
76
74
77
75
def add_options (self , parser ):
78
76
pass
@@ -211,7 +209,7 @@ def start_node(self, i, dirname, extra_args=None, rpchost=None, timewait=None, b
211
209
datadir = os .path .join (dirname , "node" + str (i ))
212
210
if binary is None :
213
211
binary = os .getenv ("BITCOIND" , "bitcoind" )
214
- args = [binary , "-datadir=" + datadir , "-server" , "-keypool=1" , "-discover=0" , "-rest" , "-logtimemicros" , "-debug" , "-debugexclude=libevent" , "-debugexclude=leveldb" , "-mocktime=" + str (get_mocktime () ), "-uacomment=testnode%d" % i ]
212
+ args = [binary , "-datadir=" + datadir , "-server" , "-keypool=1" , "-discover=0" , "-rest" , "-logtimemicros" , "-debug" , "-debugexclude=libevent" , "-debugexclude=leveldb" , "-mocktime=" + str (self . mocktime ), "-uacomment=testnode%d" % i ]
215
213
if extra_args is not None :
216
214
args .extend (extra_args )
217
215
self .bitcoind_processes [i ] = subprocess .Popen (args , stderr = stderr )
@@ -312,6 +310,21 @@ def sync_all(self, node_groups=None):
312
310
sync_blocks (group )
313
311
sync_mempools (group )
314
312
313
+ def enable_mocktime (self ):
314
+ """Enable mocktime for the script.
315
+
316
+ mocktime may be needed for scripts that use the cached version of the
317
+ blockchain. If the cached version of the blockchain is used without
318
+ mocktime then the mempools will not sync due to IBD.
319
+
320
+ For backwared compatibility of the python scripts with previous
321
+ versions of the cache, this helper function sets mocktime to Jan 1,
322
+ 2014 + (201 * 10 * 60)"""
323
+ self .mocktime = 1388534400 + (201 * 10 * 60 )
324
+
325
+ def disable_mocktime (self ):
326
+ self .mocktime = 0
327
+
315
328
# Private helper methods. These should not be accessed by the subclass test scripts.
316
329
317
330
def _start_logging (self ):
@@ -389,8 +402,8 @@ def _initialize_chain(self, test_dir, num_nodes, cachedir):
389
402
#
390
403
# blocks are created with timestamps 10 minutes apart
391
404
# starting from 2010 minutes in the past
392
- enable_mocktime ()
393
- block_time = get_mocktime () - (201 * 10 * 60 )
405
+ self . enable_mocktime ()
406
+ block_time = self . mocktime - (201 * 10 * 60 )
394
407
for i in range (2 ):
395
408
for peer in range (4 ):
396
409
for j in range (25 ):
@@ -403,7 +416,7 @@ def _initialize_chain(self, test_dir, num_nodes, cachedir):
403
416
# Shut them down, and clean up cache directories:
404
417
self .stop_nodes ()
405
418
self .nodes = []
406
- disable_mocktime ()
419
+ self . disable_mocktime ()
407
420
for i in range (MAX_NODES ):
408
421
os .remove (log_filename (cachedir , i , "debug.log" ))
409
422
os .remove (log_filename (cachedir , i , "db.log" ))
0 commit comments