|
|
|
@ -182,24 +182,28 @@ def wait_for_bitcoind_start(process, url, i):
@@ -182,24 +182,28 @@ def wait_for_bitcoind_start(process, url, i):
|
|
|
|
|
raise # unkown JSON RPC exception |
|
|
|
|
time.sleep(0.25) |
|
|
|
|
|
|
|
|
|
def initialize_chain(test_dir): |
|
|
|
|
def initialize_chain(test_dir, num_nodes): |
|
|
|
|
""" |
|
|
|
|
Create (or copy from cache) a 200-block-long chain and |
|
|
|
|
4 wallets. |
|
|
|
|
Create a cache of a 200-block-long chain (with wallet) for MAX_NODES |
|
|
|
|
Afterward, create num_nodes copies from the cache |
|
|
|
|
""" |
|
|
|
|
|
|
|
|
|
if (not os.path.isdir(os.path.join("cache","node0")) |
|
|
|
|
or not os.path.isdir(os.path.join("cache","node1")) |
|
|
|
|
or not os.path.isdir(os.path.join("cache","node2")) |
|
|
|
|
or not os.path.isdir(os.path.join("cache","node3"))): |
|
|
|
|
assert num_nodes <= MAX_NODES |
|
|
|
|
create_cache = False |
|
|
|
|
for i in range(MAX_NODES): |
|
|
|
|
if not os.path.isdir(os.path.join('cache', 'node'+str(i))): |
|
|
|
|
create_cache = True |
|
|
|
|
break |
|
|
|
|
|
|
|
|
|
if create_cache: |
|
|
|
|
|
|
|
|
|
#find and delete old cache directories if any exist |
|
|
|
|
for i in range(4): |
|
|
|
|
for i in range(MAX_NODES): |
|
|
|
|
if os.path.isdir(os.path.join("cache","node"+str(i))): |
|
|
|
|
shutil.rmtree(os.path.join("cache","node"+str(i))) |
|
|
|
|
|
|
|
|
|
# Create cache directories, run bitcoinds: |
|
|
|
|
for i in range(4): |
|
|
|
|
for i in range(MAX_NODES): |
|
|
|
|
datadir=initialize_datadir("cache", i) |
|
|
|
|
args = [ os.getenv("BITCOIND", "bitcoind"), "-server", "-keypool=1", "-datadir="+datadir, "-discover=0" ] |
|
|
|
|
if i > 0: |
|
|
|
@ -212,15 +216,18 @@ def initialize_chain(test_dir):
@@ -212,15 +216,18 @@ def initialize_chain(test_dir):
|
|
|
|
|
print("initialize_chain: RPC succesfully started") |
|
|
|
|
|
|
|
|
|
rpcs = [] |
|
|
|
|
for i in range(4): |
|
|
|
|
for i in range(MAX_NODES): |
|
|
|
|
try: |
|
|
|
|
rpcs.append(get_rpc_proxy(rpc_url(i), i)) |
|
|
|
|
except: |
|
|
|
|
sys.stderr.write("Error connecting to "+url+"\n") |
|
|
|
|
sys.exit(1) |
|
|
|
|
|
|
|
|
|
# Create a 200-block-long chain; each of the 4 nodes |
|
|
|
|
# Create a 200-block-long chain; each of the 4 first nodes |
|
|
|
|
# gets 25 mature blocks and 25 immature. |
|
|
|
|
# Note: To preserve compatibility with older versions of |
|
|
|
|
# initialize_chain, only 4 nodes will generate coins. |
|
|
|
|
# |
|
|
|
|
# blocks are created with timestamps 10 minutes apart |
|
|
|
|
# starting from 2010 minutes in the past |
|
|
|
|
enable_mocktime() |
|
|
|
@ -238,13 +245,13 @@ def initialize_chain(test_dir):
@@ -238,13 +245,13 @@ def initialize_chain(test_dir):
|
|
|
|
|
stop_nodes(rpcs) |
|
|
|
|
wait_bitcoinds() |
|
|
|
|
disable_mocktime() |
|
|
|
|
for i in range(4): |
|
|
|
|
for i in range(MAX_NODES): |
|
|
|
|
os.remove(log_filename("cache", i, "debug.log")) |
|
|
|
|
os.remove(log_filename("cache", i, "db.log")) |
|
|
|
|
os.remove(log_filename("cache", i, "peers.dat")) |
|
|
|
|
os.remove(log_filename("cache", i, "fee_estimates.dat")) |
|
|
|
|
|
|
|
|
|
for i in range(4): |
|
|
|
|
for i in range(num_nodes): |
|
|
|
|
from_dir = os.path.join("cache", "node"+str(i)) |
|
|
|
|
to_dir = os.path.join(test_dir, "node"+str(i)) |
|
|
|
|
shutil.copytree(from_dir, to_dir) |
|
|
|
|