Browse Source

[qa] Delete cookie file before starting node

If a cookie file exists in a datadir prior to node startup, it must have
been leftover from a prior unclean shutdown. As bitcoind will overwrite
it anyway, delete it before starting up to prevent the test framework
from inadvertently trying to connect using stale credentials.

Github-Pull: #12902
Rebased-From: 75d0e4c5444249f0cf81ed0494e2c2717170b695
0.16
Suhas Daftuar 7 years ago committed by MarcoFalke
parent
commit
7460945e0b
  1. 5
      test/functional/test_framework/test_node.py
  2. 6
      test/functional/test_framework/util.py

5
test/functional/test_framework/test_node.py

@ -17,6 +17,7 @@ import time
from .authproxy import JSONRPCException from .authproxy import JSONRPCException
from .util import ( from .util import (
assert_equal, assert_equal,
delete_cookie_file,
get_rpc_proxy, get_rpc_proxy,
rpc_url, rpc_url,
wait_until, wait_until,
@ -98,6 +99,10 @@ class TestNode():
extra_args = self.extra_args extra_args = self.extra_args
if stderr is None: if stderr is None:
stderr = self.stderr stderr = self.stderr
# Delete any existing cookie file -- if such a file exists (eg due to
# unclean shutdown), it will get overwritten anyway by bitcoind, and
# potentially interfere with our attempt to authenticate
delete_cookie_file(self.datadir)
self.process = subprocess.Popen(self.args + extra_args, stderr=stderr, *args, **kwargs) self.process = subprocess.Popen(self.args + extra_args, stderr=stderr, *args, **kwargs)
self.running = True self.running = True
self.log.debug("bitcoind started, waiting for RPC to come up") self.log.debug("bitcoind started, waiting for RPC to come up")

6
test/functional/test_framework/util.py

@ -319,6 +319,12 @@ def get_auth_cookie(datadir):
raise ValueError("No RPC credentials") raise ValueError("No RPC credentials")
return user, password return user, password
# If a cookie file exists in the given datadir, delete it.
def delete_cookie_file(datadir):
if os.path.isfile(os.path.join(datadir, "regtest", ".cookie")):
logger.debug("Deleting leftover cookie file")
os.remove(os.path.join(datadir, "regtest", ".cookie"))
def get_bip9_status(node, key): def get_bip9_status(node, key):
info = node.getblockchaininfo() info = node.getblockchaininfo()
return info['bip9_softforks'][key] return info['bip9_softforks'][key]

Loading…
Cancel
Save