mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-14 12:43:40 +02:00
Merge #286: 2WP: -mainchainrpccookiefile defaults to regtest/.cookie for all chains
6a174d42wp: QA: Introduce second bitcoin to test -mainchainrpccookiefile (Jorge Timón)74ca3482wp: QA: Destroy things (Jorge Timón)c2d549a2wp: QA: Refactor: Introduce get_pseudorandom_str (Jorge Timón)a58d2292wp: -mainchainrpccookiefile defaults to regtest/.cookie for all chains (Jorge Timón)
This commit is contained in:
commit
79c6c071dd
2 changed files with 52 additions and 18 deletions
|
|
@ -38,34 +38,56 @@ def sync_all(sidechain, sidechain2):
|
|||
fedpeg_key="cPxqWyf1HDGpGFH1dnfjz8HbiWxvwG8WXyetbuAiw4thKXUdXLpR"
|
||||
fedpeg_pubkey="512103dff4923d778550cc13ce0d887d737553b4b58f4e8e886507fc39f5e447b2186451ae"
|
||||
|
||||
bitcoin_datadir="/tmp/"+''.join(random.choice('0123456789ABCDEF') for i in range(5))
|
||||
bitcoin_pass=''.join(random.choice('0123456789ABCDEF') for i in range(10))
|
||||
sidechain_datadir="/tmp/"+''.join(random.choice('0123456789ABCDEF') for i in range(5))
|
||||
sidechain_pass=''.join(random.choice('0123456789ABCDEF') for i in range(10))
|
||||
sidechain2_datadir="/tmp/"+''.join(random.choice('0123456789ABCDEF') for i in range(5))
|
||||
sidechain2_pass=''.join(random.choice('0123456789ABCDEF') for i in range(10))
|
||||
def get_pseudorandom_str(str_length=10):
|
||||
return ''.join(random.choice('0123456789ABCDEF') for i in range(str_length))
|
||||
|
||||
def get_temp_dir(nodename):
|
||||
return "/tmp/%s_%s" % (nodename, get_pseudorandom_str())
|
||||
|
||||
bitcoin_datadir = get_temp_dir('bitcoin')
|
||||
bitcoin_pass = get_pseudorandom_str()
|
||||
sidechain_datadir = get_temp_dir('sidechain')
|
||||
sidechain_pass = get_pseudorandom_str()
|
||||
sidechain2_datadir = get_temp_dir('sidechain2')
|
||||
sidechain2_pass = get_pseudorandom_str()
|
||||
bitcoin2_datadir = get_temp_dir('bitcoin2')
|
||||
bitcoin2_rpccookiefile = bitcoin2_datadir + '/regtest/.cookie'
|
||||
|
||||
bitcoin_port = 8000 + os.getpid()%999
|
||||
sidechain_port = bitcoin_port + 1
|
||||
sidechain2_port = bitcoin_port + 2
|
||||
sidechain1_p2p_port = bitcoin_port + 3
|
||||
sidechain2_p2p_port = bitcoin_port + 4
|
||||
bitcoin2_port = bitcoin_port + 5
|
||||
bitcoin2_p2p_port = bitcoin_port + 6
|
||||
bitcoin_p2p_port = bitcoin_port + 7
|
||||
|
||||
os.makedirs(bitcoin_datadir)
|
||||
os.makedirs(sidechain_datadir)
|
||||
os.makedirs(sidechain2_datadir)
|
||||
os.makedirs(bitcoin2_datadir)
|
||||
|
||||
with open(os.path.join(bitcoin_datadir, "bitcoin.conf"), 'w') as f:
|
||||
def write_bitcoin_conf(datadir, rpcport, rpcpass=None, p2p_port=None, connect_port=None):
|
||||
with open(os.path.join(datadir, "bitcoin.conf"), 'w') as f:
|
||||
f.write("regtest=1\n")
|
||||
f.write("rpcuser=bitcoinrpc\n")
|
||||
f.write("rpcpassword="+bitcoin_pass+"\n")
|
||||
f.write("rpcport="+str(bitcoin_port)+"\n")
|
||||
if p2p_port:
|
||||
f.write("port="+str(p2p_port)+"\n")
|
||||
if rpcpass:
|
||||
f.write("rpcuser=bitcoinrpc\n")
|
||||
f.write("rpcpassword="+rpcpass+"\n")
|
||||
f.write("rpcport="+str(rpcport)+"\n")
|
||||
f.write("discover=0\n")
|
||||
f.write("listen=0\n")
|
||||
f.write("testnet=0\n")
|
||||
f.write("txindex=1\n")
|
||||
f.write("daemon=1\n")
|
||||
f.write("listen=0\n")
|
||||
if connect_port:
|
||||
f.write("connect=localhost:"+str(connect_port)+"\n")
|
||||
f.write("listen=1\n")
|
||||
else:
|
||||
f.write("listen=0\n")
|
||||
|
||||
write_bitcoin_conf(bitcoin_datadir, bitcoin_port, bitcoin_pass, p2p_port=bitcoin_p2p_port, connect_port=bitcoin2_p2p_port)
|
||||
write_bitcoin_conf(bitcoin2_datadir, bitcoin2_port, rpcpass=None, p2p_port=bitcoin2_p2p_port, connect_port=bitcoin_p2p_port)
|
||||
|
||||
with open(os.path.join(sidechain_datadir, "elements.conf"), 'w') as f:
|
||||
f.write("regtest=1\n")
|
||||
|
|
@ -98,9 +120,8 @@ with open(os.path.join(sidechain2_datadir, "elements.conf"), 'w') as f:
|
|||
f.write("fedpegscript="+fedpeg_pubkey+"\n")
|
||||
f.write("daemon=1\n")
|
||||
f.write("mainchainrpchost=127.0.0.1\n")
|
||||
f.write("mainchainrpcport="+str(bitcoin_port)+"\n")
|
||||
f.write("mainchainrpcuser=bitcoinrpc\n")
|
||||
f.write("mainchainrpcpassword="+bitcoin_pass+"\n")
|
||||
f.write("mainchainrpcport="+str(bitcoin2_port)+"\n")
|
||||
f.write("mainchainrpccookiefile=%s\n" % bitcoin2_rpccookiefile)
|
||||
f.write("validatepegin=1\n")
|
||||
f.write("validatepegout=0\n")
|
||||
f.write("port="+str(sidechain2_p2p_port)+"\n")
|
||||
|
|
@ -114,10 +135,13 @@ try:
|
|||
sidechain_args = " -peginconfirmationdepth=10 "
|
||||
|
||||
# Start daemons
|
||||
print("Starting daemons at "+bitcoin_datadir+", "+sidechain_datadir+" and "+sidechain2_datadir)
|
||||
print("Starting daemons at "+bitcoin_datadir+", "+bitcoin2_datadir+", "+sidechain_datadir+" and "+sidechain2_datadir)
|
||||
bitcoindstart = bitcoin_bin_path+"/bitcoind -datadir="+bitcoin_datadir
|
||||
subprocess.Popen(bitcoindstart.split(), stdout=subprocess.PIPE)
|
||||
|
||||
bitcoind2start = bitcoin_bin_path+"/bitcoind -datadir="+bitcoin2_datadir
|
||||
subprocess.Popen(bitcoind2start.split(), stdout=subprocess.PIPE)
|
||||
|
||||
sidechainstart = sidechain_bin_path+"/elementsd -datadir="+sidechain_datadir + sidechain_args
|
||||
subprocess.Popen(sidechainstart.split(), stdout=subprocess.PIPE)
|
||||
|
||||
|
|
@ -127,7 +151,11 @@ try:
|
|||
print("Daemons started")
|
||||
time.sleep(3)
|
||||
|
||||
with open(bitcoin2_rpccookiefile, 'r') as f:
|
||||
bitcoin2_rpccookie = f.readline()
|
||||
|
||||
bitcoin = AuthServiceProxy("http://bitcoinrpc:"+bitcoin_pass+"@127.0.0.1:"+str(bitcoin_port))
|
||||
bitcoin2 = AuthServiceProxy("http://"+ bitcoin2_rpccookie +"@127.0.0.1:"+str(bitcoin2_port))
|
||||
sidechain = AuthServiceProxy("http://sidechainrpc:"+sidechain_pass+"@127.0.0.1:"+str(sidechain_port))
|
||||
sidechain2 = AuthServiceProxy("http://sidechainrpc2:"+sidechain2_pass+"@127.0.0.1:"+str(sidechain2_port))
|
||||
print("Daemons started, making blocks to get funds")
|
||||
|
|
@ -167,6 +195,7 @@ try:
|
|||
pegtxid1 = sidechain.claimpegin(raw, proof)
|
||||
|
||||
# Will invalidate the block that confirms this transaction later
|
||||
sync_all(bitcoin, bitcoin2)
|
||||
blockhash = sync_all(sidechain, sidechain2)
|
||||
sidechain.generate(5)
|
||||
|
||||
|
|
@ -209,6 +238,7 @@ try:
|
|||
raw = bitcoin.getrawtransaction(txid)
|
||||
pegtxs += [sidechain.claimpegin(raw, proof)]
|
||||
|
||||
sync_all(bitcoin, bitcoin2)
|
||||
sync_all(sidechain, sidechain2)
|
||||
|
||||
sidechain2.generate(1)
|
||||
|
|
@ -228,9 +258,13 @@ except Exception as e:
|
|||
|
||||
print("Stopping daemons and cleaning up")
|
||||
bitcoin.stop()
|
||||
bitcoin2.stop()
|
||||
sidechain.stop()
|
||||
sidechain2.stop()
|
||||
|
||||
time.sleep(5)
|
||||
|
||||
shutil.rmtree(bitcoin2_datadir)
|
||||
shutil.rmtree(sidechain2_datadir)
|
||||
shutil.rmtree(sidechain_datadir)
|
||||
shutil.rmtree(bitcoin_datadir)
|
||||
|
|
|
|||
|
|
@ -68,6 +68,7 @@ UniValue JSONRPCError(int code, const string& message)
|
|||
static const std::string COOKIEAUTH_USER = "__cookie__";
|
||||
/** Default name for auth cookie file */
|
||||
static const std::string COOKIEAUTH_FILE = ".cookie";
|
||||
static const std::string MAINCHAIN_COOKIEAUTH_FILE = "regtest/.cookie";
|
||||
|
||||
boost::filesystem::path GetAuthCookieFile()
|
||||
{
|
||||
|
|
@ -78,8 +79,7 @@ boost::filesystem::path GetAuthCookieFile()
|
|||
|
||||
boost::filesystem::path GetMainchainAuthCookieFile()
|
||||
{
|
||||
boost::filesystem::path path(GetArg("-mainchainrpccookiefile", COOKIEAUTH_FILE));
|
||||
if (!path.is_complete() && BaseParams().DataDir() == CHAINPARAMS_REGTEST) path = "regtest" / path;
|
||||
boost::filesystem::path path(GetArg("-mainchainrpccookiefile", MAINCHAIN_COOKIEAUTH_FILE));
|
||||
if (!path.is_complete()) path = GetDataDir(false) / path;
|
||||
return path;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue