Skip to content

Commit

Permalink
[tests] move mocktime property and functions to BitcoinTestFramework
Browse files Browse the repository at this point in the history
  • Loading branch information
jnewbery committed Jun 29, 2017
1 parent cad967a commit 0d473c5
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 30 deletions.
2 changes: 1 addition & 1 deletion test/functional/listtransactions.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ def __init__(self):

def setup_nodes(self):
#This test requires mocktime
enable_mocktime()
self.enable_mocktime()
self.nodes = self.start_nodes(self.num_nodes, self.options.tmpdir)

def run_test(self):
Expand Down
2 changes: 1 addition & 1 deletion test/functional/receivedby.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ def __init__(self):

def setup_nodes(self):
#This test requires mocktime
enable_mocktime()
self.enable_mocktime()
self.nodes = self.start_nodes(self.num_nodes, self.options.tmpdir)

def run_test(self):
Expand Down
27 changes: 20 additions & 7 deletions test/functional/test_framework/test_framework.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,7 @@
assert_equal,
check_json_precision,
connect_nodes_bi,
disable_mocktime,
disconnect_nodes,
enable_mocktime,
get_mocktime,
get_rpc_proxy,
initialize_datadir,
get_datadir_path,
Expand Down Expand Up @@ -73,6 +70,7 @@ def __init__(self):
self.setup_clean_chain = False
self.nodes = []
self.bitcoind_processes = {}
self.mocktime = 0

def add_options(self, parser):
pass
Expand Down Expand Up @@ -211,7 +209,7 @@ def start_node(self, i, dirname, extra_args=None, rpchost=None, timewait=None, b
datadir = os.path.join(dirname, "node" + str(i))
if binary is None:
binary = os.getenv("BITCOIND", "bitcoind")
args = [binary, "-datadir=" + datadir, "-server", "-keypool=1", "-discover=0", "-rest", "-logtimemicros", "-debug", "-debugexclude=libevent", "-debugexclude=leveldb", "-mocktime=" + str(get_mocktime()), "-uacomment=testnode%d" % i]
args = [binary, "-datadir=" + datadir, "-server", "-keypool=1", "-discover=0", "-rest", "-logtimemicros", "-debug", "-debugexclude=libevent", "-debugexclude=leveldb", "-mocktime=" + str(self.mocktime), "-uacomment=testnode%d" % i]
if extra_args is not None:
args.extend(extra_args)
self.bitcoind_processes[i] = subprocess.Popen(args, stderr=stderr)
Expand Down Expand Up @@ -312,6 +310,21 @@ def sync_all(self, node_groups=None):
sync_blocks(group)
sync_mempools(group)

def enable_mocktime(self):
"""Enable mocktime for the script.
mocktime may be needed for scripts that use the cached version of the
blockchain. If the cached version of the blockchain is used without
mocktime then the mempools will not sync due to IBD.
For backwared compatibility of the python scripts with previous
versions of the cache, this helper function sets mocktime to Jan 1,
2014 + (201 * 10 * 60)"""
self.mocktime = 1388534400 + (201 * 10 * 60)

def disable_mocktime(self):
self.mocktime = 0

# Private helper methods. These should not be accessed by the subclass test scripts.

def _start_logging(self):
Expand Down Expand Up @@ -389,8 +402,8 @@ def _initialize_chain(self, test_dir, num_nodes, cachedir):
#
# blocks are created with timestamps 10 minutes apart
# starting from 2010 minutes in the past
enable_mocktime()
block_time = get_mocktime() - (201 * 10 * 60)
self.enable_mocktime()
block_time = self.mocktime - (201 * 10 * 60)
for i in range(2):
for peer in range(4):
for j in range(25):
Expand All @@ -403,7 +416,7 @@ def _initialize_chain(self, test_dir, num_nodes, cachedir):
# Shut them down, and clean up cache directories:
self.stop_nodes()
self.nodes = []
disable_mocktime()
self.disable_mocktime()
for i in range(MAX_NODES):
os.remove(log_filename(cachedir, i, "debug.log"))
os.remove(log_filename(cachedir, i, "db.log"))
Expand Down
21 changes: 0 additions & 21 deletions test/functional/test_framework/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,27 +30,6 @@ class PortSeed:
# Must be initialized with a unique integer for each process
n = None

# Set Mocktime default to OFF.
# MOCKTIME is only needed for scripts that use the
# cached version of the blockchain. If the cached
# version of the blockchain is used without MOCKTIME
# then the mempools will not sync due to IBD.
MOCKTIME = 0

def enable_mocktime():
# For backwared compatibility of the python scripts
# with previous versions of the cache, set MOCKTIME
# to Jan 1, 2014 + (201 * 10 * 60)
global MOCKTIME
MOCKTIME = 1388534400 + (201 * 10 * 60)

def disable_mocktime():
global MOCKTIME
MOCKTIME = 0

def get_mocktime():
return MOCKTIME

def get_rpc_proxy(url, node_number, timeout=None, coveragedir=None):
"""
Args:
Expand Down

0 comments on commit 0d473c5

Please sign in to comment.