Browse Source

[tests] move mocktime property and functions to BitcoinTestFramework

0.15
John Newbery 8 years ago
parent
commit
0d473c539e
  1. 2
      test/functional/listtransactions.py
  2. 2
      test/functional/receivedby.py
  3. 27
      test/functional/test_framework/test_framework.py
  4. 21
      test/functional/test_framework/util.py

2
test/functional/listtransactions.py

@ -23,7 +23,7 @@ class ListTransactionsTest(BitcoinTestFramework): @@ -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):

2
test/functional/receivedby.py

@ -31,7 +31,7 @@ class ReceivedByTest(BitcoinTestFramework): @@ -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):

27
test/functional/test_framework/test_framework.py

@ -26,10 +26,7 @@ from .util import ( @@ -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): @@ -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): @@ -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): @@ -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): @@ -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): @@ -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"))

21
test/functional/test_framework/util.py

@ -30,27 +30,6 @@ class PortSeed: @@ -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:

Loading…
Cancel
Save