[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.
This commit is contained in:
Suhas Daftuar 2018-04-09 14:07:47 -04:00
parent 2b54155a45
commit 75d0e4c544
2 changed files with 11 additions and 0 deletions

View file

@ -20,6 +20,7 @@ from .authproxy import JSONRPCException
from .util import ( from .util import (
append_config, append_config,
assert_equal, assert_equal,
delete_cookie_file,
get_rpc_proxy, get_rpc_proxy,
rpc_url, rpc_url,
wait_until, wait_until,
@ -105,6 +106,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")

View file

@ -332,6 +332,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]