From 0d473c539ed0f53168aa3bae8474f214831dec1f Mon Sep 17 00:00:00 2001 From: John Newbery Date: Wed, 7 Jun 2017 13:43:03 -0400 Subject: [PATCH] [tests] move mocktime property and functions to BitcoinTestFramework --- test/functional/listtransactions.py | 2 +- test/functional/receivedby.py | 2 +- .../test_framework/test_framework.py | 27 ++++++++++++++----- test/functional/test_framework/util.py | 21 --------------- 4 files changed, 22 insertions(+), 30 deletions(-) diff --git a/test/functional/listtransactions.py b/test/functional/listtransactions.py index f69f1c572..f75a8e29c 100755 --- a/test/functional/listtransactions.py +++ b/test/functional/listtransactions.py @@ -23,7 +23,7 @@ class ListTransactionsTest(BitcoinTestFramework): 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): diff --git a/test/functional/receivedby.py b/test/functional/receivedby.py index 2cad6269a..19d99c9c9 100755 --- a/test/functional/receivedby.py +++ b/test/functional/receivedby.py @@ -31,7 +31,7 @@ class ReceivedByTest(BitcoinTestFramework): 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): diff --git a/test/functional/test_framework/test_framework.py b/test/functional/test_framework/test_framework.py index 557c9db48..00807b022 100755 --- a/test/functional/test_framework/test_framework.py +++ b/test/functional/test_framework/test_framework.py @@ -26,10 +26,7 @@ from .util import ( assert_equal, check_json_precision, connect_nodes_bi, - disable_mocktime, disconnect_nodes, - enable_mocktime, - get_mocktime, get_rpc_proxy, initialize_datadir, get_datadir_path, @@ -73,6 +70,7 @@ class BitcoinTestFramework(object): self.setup_clean_chain = False self.nodes = [] self.bitcoind_processes = {} + self.mocktime = 0 def add_options(self, parser): pass @@ -211,7 +209,7 @@ class BitcoinTestFramework(object): 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) @@ -312,6 +310,21 @@ class BitcoinTestFramework(object): 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): @@ -389,8 +402,8 @@ class BitcoinTestFramework(object): # # 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): @@ -403,7 +416,7 @@ class BitcoinTestFramework(object): # 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")) diff --git a/test/functional/test_framework/util.py b/test/functional/test_framework/util.py index fbdb3d7e6..cca1e2b89 100644 --- a/test/functional/test_framework/util.py +++ b/test/functional/test_framework/util.py @@ -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: