aboutsummaryrefslogtreecommitdiff
path: root/qa
diff options
context:
space:
mode:
Diffstat (limited to 'qa')
-rwxr-xr-xqa/pull-tester/build-tests.sh.in102
-rwxr-xr-xqa/pull-tester/pull-tester.py193
-rwxr-xr-xqa/pull-tester/pull-tester.sh22
-rwxr-xr-xqa/pull-tester/rpc-tests.sh19
-rwxr-xr-xqa/pull-tester/run-bitcoin-cli13
-rwxr-xr-xqa/pull-tester/tests-config.sh.in16
-rwxr-xr-xqa/rpc-tests/conflictedbalance.sh5
-rwxr-xr-xqa/rpc-tests/forknotify.py2
-rwxr-xr-xqa/rpc-tests/txnmall.sh5
-rw-r--r--qa/rpc-tests/util.py10
-rwxr-xr-xqa/rpc-tests/wallet.sh5
-rwxr-xr-xqa/rpc-tests/walletbackup.sh5
-rwxr-xr-xqa/rpc-tests/zapwallettxes.sh5
13 files changed, 69 insertions, 333 deletions
diff --git a/qa/pull-tester/build-tests.sh.in b/qa/pull-tester/build-tests.sh.in
deleted file mode 100755
index f5c5f0bf70..0000000000
--- a/qa/pull-tester/build-tests.sh.in
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/bin/bash
-# Copyright (c) 2013-2014 The Bitcoin Core developers
-# Distributed under the MIT software license, see the accompanying
-# file COPYING or http://www.opensource.org/licenses/mit-license.php.
-#
-# Param1: The prefix to mingw staging
-# Param2: Path to java comparison tool
-# Param3: Number of make jobs. Defaults to 1.
-
-# Exit immediately if anything fails:
-set -e
-set -o xtrace
-
-MINGWPREFIX=$1
-JAVA_COMPARISON_TOOL=$2
-RUN_EXPENSIVE_TESTS=$3
-JOBS=${4-1}
-OUT_DIR=${5-}
-
-if [ $# -lt 2 ]; then
- echo "Usage: $0 [mingw-prefix] [java-comparison-tool] <make jobs> <save output dir>"
- exit 1
-fi
-
-DISTDIR=@PACKAGE@-@VERSION@
-
-# Cross-compile for windows first (breaking the mingw/windows build is most common)
-cd @abs_top_srcdir@
-make distdir
-mkdir -p win32-build
-rsync -av $DISTDIR/ win32-build/
-rm -r $DISTDIR
-cd win32-build
-
-if [ $RUN_EXPENSIVE_TESTS = 1 ]; then
- ./configure --disable-silent-rules --disable-ccache --prefix=$MINGWPREFIX --host=i586-mingw32msvc --with-qt-bindir=$MINGWPREFIX/host/bin --with-qt-plugindir=$MINGWPREFIX/plugins --with-qt-incdir=$MINGWPREFIX/include --with-boost=$MINGWPREFIX --with-protoc-bindir=$MINGWPREFIX/host/bin CPPFLAGS=-I$MINGWPREFIX/include LDFLAGS=-L$MINGWPREFIX/lib --with-comparison-tool="$JAVA_COMPARISON_TOOL"
-else
- ./configure --disable-silent-rules --disable-ccache --prefix=$MINGWPREFIX --host=i586-mingw32msvc --with-qt-bindir=$MINGWPREFIX/host/bin --with-qt-plugindir=$MINGWPREFIX/plugins --with-qt-incdir=$MINGWPREFIX/include --with-boost=$MINGWPREFIX --with-protoc-bindir=$MINGWPREFIX/host/bin CPPFLAGS=-I$MINGWPREFIX/include LDFLAGS=-L$MINGWPREFIX/lib
-fi
-make -j$JOBS
-
-# And compile for Linux:
-cd @abs_top_srcdir@
-make distdir
-mkdir -p linux-build
-rsync -av $DISTDIR/ linux-build/
-rm -r $DISTDIR
-cd linux-build
-if [ $RUN_EXPENSIVE_TESTS = 1 ]; then
- ./configure --disable-silent-rules --disable-ccache --with-comparison-tool="$JAVA_COMPARISON_TOOL" --enable-comparison-tool-reorg-tests
-else
- ./configure --disable-silent-rules --disable-ccache --with-comparison-tool="$JAVA_COMPARISON_TOOL"
-fi
-make -j$JOBS
-
-# link interesting binaries to parent out/ directory, if it exists. Do this before
-# running unit tests (we want bad binaries to be easy to find)
-if [ -d "$OUT_DIR" -a -w "$OUT_DIR" ]; then
- set +e
- # Windows:
- cp @abs_top_srcdir@/win32-build/src/bitcoind.exe $OUT_DIR/bitcoind.exe
- cp @abs_top_srcdir@/win32-build/src/test/test_bitcoin.exe $OUT_DIR/test_bitcoin.exe
- cp @abs_top_srcdir@/win32-build/src/qt/bitcoind-qt.exe $OUT_DIR/bitcoin-qt.exe
- # Linux:
- cp @abs_top_srcdir@/linux-build/src/bitcoind $OUT_DIR/bitcoind
- cp @abs_top_srcdir@/linux-build/src/test/test_bitcoin $OUT_DIR/test_bitcoin
- cp @abs_top_srcdir@/linux-build/src/qt/bitcoind-qt $OUT_DIR/bitcoin-qt
- set -e
-fi
-
-# Run unit tests and blockchain-tester on Linux:
-cd @abs_top_srcdir@/linux-build
-make check
-
-# Run RPC integration test on Linux:
-@abs_top_srcdir@/qa/rpc-tests/wallet.sh @abs_top_srcdir@/linux-build/src
-@abs_top_srcdir@/qa/rpc-tests/listtransactions.py --srcdir @abs_top_srcdir@/linux-build/src
-@abs_top_srcdir@/qa/rpc-tests/forknotify.py --srcdir @abs_top_srcdir@/linux-build/src
-# Clean up cache/ directory that the python regression tests create
-rm -rf cache
-
-if [ $RUN_EXPENSIVE_TESTS = 1 ]; then
- # Run unit tests and blockchain-tester on Windows:
- cd @abs_top_srcdir@/win32-build
- make check
-fi
-
-# Clean up builds (pull-tester machine doesn't have infinite disk space)
-cd @abs_top_srcdir@/linux-build
-make clean
-cd @abs_top_srcdir@/win32-build
-make clean
-
-# TODO: Fix code coverage builds on pull-tester machine
-# # Test code coverage
-# cd @abs_top_srcdir@
-# make distdir
-# mv $DISTDIR linux-coverage-build
-# cd linux-coverage-build
-# ./configure --enable-lcov --disable-silent-rules --disable-ccache --with-comparison-tool="$JAVA_COMPARISON_TOOL"
-# make -j$JOBS
-# make cov
diff --git a/qa/pull-tester/pull-tester.py b/qa/pull-tester/pull-tester.py
deleted file mode 100755
index 66688dd4b5..0000000000
--- a/qa/pull-tester/pull-tester.py
+++ /dev/null
@@ -1,193 +0,0 @@
-#!/usr/bin/python
-# Copyright (c) 2013-2014 The Bitcoin Core developers
-# Distributed under the MIT software license, see the accompanying
-# file COPYING or http://www.opensource.org/licenses/mit-license.php.
-#
-import json
-from urllib import urlopen
-import requests
-import getpass
-from string import Template
-import sys
-import os
-import subprocess
-
-class RunError(Exception):
- def __init__(self, value):
- self.value = value
- def __str__(self):
- return repr(self.value)
-
-def run(command, **kwargs):
- fail_hard = kwargs.pop("fail_hard", True)
- # output to /dev/null by default:
- kwargs.setdefault("stdout", open('/dev/null', 'w'))
- kwargs.setdefault("stderr", open('/dev/null', 'w'))
- command = Template(command).substitute(os.environ)
- if "TRACE" in os.environ:
- if 'cwd' in kwargs:
- print("[cwd=%s] %s"%(kwargs['cwd'], command))
- else: print(command)
- try:
- process = subprocess.Popen(command.split(' '), **kwargs)
- process.wait()
- except KeyboardInterrupt:
- process.terminate()
- raise
- if process.returncode != 0 and fail_hard:
- raise RunError("Failed: "+command)
- return process.returncode
-
-def checkout_pull(clone_url, commit, out):
- # Init
- build_dir=os.environ["BUILD_DIR"]
- run("umount ${CHROOT_COPY}/proc", fail_hard=False)
- run("rsync --delete -apv ${CHROOT_MASTER}/ ${CHROOT_COPY}")
- run("rm -rf ${CHROOT_COPY}${SCRIPTS_DIR}")
- run("cp -a ${SCRIPTS_DIR} ${CHROOT_COPY}${SCRIPTS_DIR}")
- # Merge onto upstream/master
- run("rm -rf ${BUILD_DIR}")
- run("mkdir -p ${BUILD_DIR}")
- run("git clone ${CLONE_URL} ${BUILD_DIR}")
- run("git remote add pull "+clone_url, cwd=build_dir, stdout=out, stderr=out)
- run("git fetch pull", cwd=build_dir, stdout=out, stderr=out)
- if run("git merge "+ commit, fail_hard=False, cwd=build_dir, stdout=out, stderr=out) != 0:
- return False
- run("chown -R ${BUILD_USER}:${BUILD_GROUP} ${BUILD_DIR}", stdout=out, stderr=out)
- run("mount --bind /proc ${CHROOT_COPY}/proc")
- return True
-
-def commentOn(commentUrl, success, inMerge, needTests, linkUrl):
- common_message = """
-This test script verifies pulls every time they are updated. It, however, dies sometimes and fails to test properly. If you are waiting on a test, please check timestamps to verify that the test.log is moving at http://jenkins.bluematt.me/pull-tester/current/
-Contact BlueMatt on freenode if something looks broken."""
-
- # Remove old BitcoinPullTester comments (I'm being lazy and not paginating here)
- recentcomments = requests.get(commentUrl+"?sort=created&direction=desc",
- auth=(os.environ['GITHUB_USER'], os.environ["GITHUB_AUTH_TOKEN"])).json
- for comment in recentcomments:
- if comment["user"]["login"] == os.environ["GITHUB_USER"] and common_message in comment["body"]:
- requests.delete(comment["url"],
- auth=(os.environ['GITHUB_USER'], os.environ["GITHUB_AUTH_TOKEN"]))
-
- if success == True:
- if needTests:
- message = "Automatic sanity-testing: PLEASE ADD TEST-CASES, though technically passed. See " + linkUrl + " for binaries and test log."
- else:
- message = "Automatic sanity-testing: PASSED, see " + linkUrl + " for binaries and test log."
-
- post_data = { "body" : message + common_message}
- elif inMerge:
- post_data = { "body" : "Automatic sanity-testing: FAILED MERGE, see " + linkUrl + " for test log." + """
-
-This pull does not merge cleanly onto current master""" + common_message}
- else:
- post_data = { "body" : "Automatic sanity-testing: FAILED BUILD/TEST, see " + linkUrl + " for binaries and test log." + """
-
-This could happen for one of several reasons:
-1. It chanages changes build scripts in a way that made them incompatible with the automated testing scripts (please tweak those patches in qa/pull-tester)
-2. It adds/modifies tests which test network rules (thanks for doing that), which conflicts with a patch applied at test time
-3. It does not build on either Linux i386 or Win32 (via MinGW cross compile)
-4. The test suite fails on either Linux i386 or Win32
-5. The block test-cases failed (lookup the first bNN identifier which failed in https://github.com/TheBlueMatt/test-scripts/blob/master/FullBlockTestGenerator.java)
-
-If you believe this to be in error, please ping BlueMatt on freenode or TheBlueMatt here.
-""" + common_message}
-
- resp = requests.post(commentUrl, json.dumps(post_data), auth=(os.environ['GITHUB_USER'], os.environ["GITHUB_AUTH_TOKEN"]))
-
-def testpull(number, comment_url, clone_url, commit):
- print("Testing pull %d: %s : %s"%(number, clone_url,commit))
-
- dir = os.environ["RESULTS_DIR"] + "/" + commit + "/"
- print(" ouput to %s"%dir)
- if os.path.exists(dir):
- os.system("rm -r " + dir)
- os.makedirs(dir)
- currentdir = os.environ["RESULTS_DIR"] + "/current"
- os.system("rm -r "+currentdir)
- os.system("ln -s " + dir + " " + currentdir)
- out = open(dir + "test.log", 'w+')
-
- resultsurl = os.environ["RESULTS_URL"] + commit
- checkedout = checkout_pull(clone_url, commit, out)
- if checkedout != True:
- print("Failed to test pull - sending comment to: " + comment_url)
- commentOn(comment_url, False, True, False, resultsurl)
- open(os.environ["TESTED_DB"], "a").write(commit + "\n")
- return
-
- run("rm -rf ${CHROOT_COPY}/${OUT_DIR}", fail_hard=False);
- run("mkdir -p ${CHROOT_COPY}/${OUT_DIR}", fail_hard=False);
- run("chown -R ${BUILD_USER}:${BUILD_GROUP} ${CHROOT_COPY}/${OUT_DIR}", fail_hard=False)
-
- script = os.environ["BUILD_PATH"]+"/qa/pull-tester/pull-tester.sh"
- script += " ${BUILD_PATH} ${MINGW_DEPS_DIR} ${SCRIPTS_DIR}/BitcoindComparisonTool_jar/BitcoindComparisonTool.jar 0 6 ${OUT_DIR}"
- returncode = run("chroot ${CHROOT_COPY} sudo -u ${BUILD_USER} -H timeout ${TEST_TIMEOUT} "+script,
- fail_hard=False, stdout=out, stderr=out)
-
- run("mv ${CHROOT_COPY}/${OUT_DIR} " + dir)
- run("mv ${BUILD_DIR} " + dir)
-
- if returncode == 42:
- print("Successfully tested pull (needs tests) - sending comment to: " + comment_url)
- commentOn(comment_url, True, False, True, resultsurl)
- elif returncode != 0:
- print("Failed to test pull - sending comment to: " + comment_url)
- commentOn(comment_url, False, False, False, resultsurl)
- else:
- print("Successfully tested pull - sending comment to: " + comment_url)
- commentOn(comment_url, True, False, False, resultsurl)
- open(os.environ["TESTED_DB"], "a").write(commit + "\n")
-
-def environ_default(setting, value):
- if not setting in os.environ:
- os.environ[setting] = value
-
-if getpass.getuser() != "root":
- print("Run me as root!")
- sys.exit(1)
-
-if "GITHUB_USER" not in os.environ or "GITHUB_AUTH_TOKEN" not in os.environ:
- print("GITHUB_USER and/or GITHUB_AUTH_TOKEN environment variables not set")
- sys.exit(1)
-
-environ_default("CLONE_URL", "https://github.com/bitcoin/bitcoin.git")
-environ_default("MINGW_DEPS_DIR", "/mnt/w32deps")
-environ_default("SCRIPTS_DIR", "/mnt/test-scripts")
-environ_default("CHROOT_COPY", "/mnt/chroot-tmp")
-environ_default("CHROOT_MASTER", "/mnt/chroot")
-environ_default("OUT_DIR", "/mnt/out")
-environ_default("BUILD_PATH", "/mnt/bitcoin")
-os.environ["BUILD_DIR"] = os.environ["CHROOT_COPY"] + os.environ["BUILD_PATH"]
-environ_default("RESULTS_DIR", "/mnt/www/pull-tester")
-environ_default("RESULTS_URL", "http://jenkins.bluematt.me/pull-tester/")
-environ_default("GITHUB_REPO", "bitcoin/bitcoin")
-environ_default("TESTED_DB", "/mnt/commits-tested.txt")
-environ_default("BUILD_USER", "matt")
-environ_default("BUILD_GROUP", "matt")
-environ_default("TEST_TIMEOUT", str(60*60*2))
-
-print("Optional usage: pull-tester.py 2112")
-
-f = open(os.environ["TESTED_DB"])
-tested = set( line.rstrip() for line in f.readlines() )
-f.close()
-
-if len(sys.argv) > 1:
- pull = requests.get("https://api.github.com/repos/"+os.environ["GITHUB_REPO"]+"/pulls/"+sys.argv[1],
- auth=(os.environ['GITHUB_USER'], os.environ["GITHUB_AUTH_TOKEN"])).json
- testpull(pull["number"], pull["_links"]["comments"]["href"],
- pull["head"]["repo"]["clone_url"], pull["head"]["sha"])
-
-else:
- for page in range(1,100):
- result = requests.get("https://api.github.com/repos/"+os.environ["GITHUB_REPO"]+"/pulls?state=open&page=%d"%(page,),
- auth=(os.environ['GITHUB_USER'], os.environ["GITHUB_AUTH_TOKEN"])).json
- if len(result) == 0: break;
- for pull in result:
- if pull["head"]["sha"] in tested:
- print("Pull %d already tested"%(pull["number"],))
- continue
- testpull(pull["number"], pull["_links"]["comments"]["href"],
- pull["head"]["repo"]["clone_url"], pull["head"]["sha"])
diff --git a/qa/pull-tester/pull-tester.sh b/qa/pull-tester/pull-tester.sh
deleted file mode 100755
index 3fe4a05c76..0000000000
--- a/qa/pull-tester/pull-tester.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2013-2014 The Bitcoin Core developers
-# Distributed under the MIT software license, see the accompanying
-# file COPYING or http://www.opensource.org/licenses/mit-license.php.
-#
-# Helper script for pull-tester.
-#Param 1: path to bitcoin srcroot
-#Param ...: arguments for build-test.sh
-
-if [ $# -lt 1 ]; then
- echo "usage: $0 [bitcoin srcroot] build-test arguments..."
-fi
-
-killall -q bitcoin-cli
-killall -q bitcoind
-
-cd $1
-shift
-
-./autogen.sh
-./configure
-./qa/pull-tester/build-tests.sh "$@"
diff --git a/qa/pull-tester/rpc-tests.sh b/qa/pull-tester/rpc-tests.sh
new file mode 100755
index 0000000000..a0056c141b
--- /dev/null
+++ b/qa/pull-tester/rpc-tests.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+set -e
+
+CURDIR=$(cd $(dirname "$0"); pwd)
+# Get BUILDDIR and REAL_BITCOIND
+. "${CURDIR}/tests-config.sh"
+
+export BITCOINCLI=${BUILDDIR}/qa/pull-tester/run-bitcoin-cli
+export BITCOIND=${REAL_BITCOIND}
+
+#Run the tests
+
+if [ "x${ENABLE_BITCOIND}${ENABLE_UTILS}${ENABLE_WALLET}" = "x111" ]; then
+ ${BUILDDIR}/qa/rpc-tests/wallet.sh "${BUILDDIR}/src"
+ ${BUILDDIR}/qa/rpc-tests/listtransactions.py --srcdir "${BUILDDIR}/src"
+ #${BUILDDIR}/qa/rpc-tests/forknotify.py --srcdir "${BUILDDIR}/src"
+else
+ echo "No rpc tests to run. Wallet, utils, and bitcoind must all be enabled"
+fi
diff --git a/qa/pull-tester/run-bitcoin-cli b/qa/pull-tester/run-bitcoin-cli
new file mode 100755
index 0000000000..93c25bb9fc
--- /dev/null
+++ b/qa/pull-tester/run-bitcoin-cli
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+# This is a thin wrapper around bitcoin-cli that strips the Windows-style EOLs
+# from the output if present. It is necessary when using bitcoin-cli.exe on
+# Linux since shells will interpret the line-endings as part of the result.
+
+CURDIR=$(cd $(dirname "$0"); pwd)
+# Get BUILDDIR and REAL_BITCOIND
+
+# Grab the value of $REAL_BITCOINCLI which may be bitcoin-cli.exe.
+. "${CURDIR}/tests-config.sh"
+
+"${REAL_BITCOINCLI}" "$@" | sed 's/\r//'
diff --git a/qa/pull-tester/tests-config.sh.in b/qa/pull-tester/tests-config.sh.in
new file mode 100755
index 0000000000..10f4d33e47
--- /dev/null
+++ b/qa/pull-tester/tests-config.sh.in
@@ -0,0 +1,16 @@
+#!/bin/bash
+# Copyright (c) 2013-2014 The Bitcoin Core developers
+# Distributed under the MIT software license, see the accompanying
+# file COPYING or http://www.opensource.org/licenses/mit-license.php.
+
+BUILDDIR="@abs_top_builddir@"
+EXEEXT="@EXEEXT@"
+
+# These will turn into comments if they were disabled when configuring.
+@ENABLE_WALLET_TRUE@ENABLE_WALLET=1
+@BUILD_BITCOIN_UTILS_TRUE@ENABLE_UTILS=1
+@BUILD_BITCOIND_TRUE@ENABLE_BITCOIND=1
+
+REAL_BITCOIND="$BUILDDIR/src/bitcoind${EXEEXT}"
+REAL_BITCOINCLI="$BUILDDIR/src/bitcoin-cli${EXEEXT}"
+
diff --git a/qa/rpc-tests/conflictedbalance.sh b/qa/rpc-tests/conflictedbalance.sh
index 71761321ed..a112244c74 100755
--- a/qa/rpc-tests/conflictedbalance.sh
+++ b/qa/rpc-tests/conflictedbalance.sh
@@ -18,13 +18,14 @@
if [ $# -lt 1 ]; then
echo "Usage: $0 path_to_binaries"
echo "e.g. $0 ../../src"
+ echo "Env vars BITCOIND and BITCOINCLI may be used to specify the exact binaries used"
exit 1
fi
set -f
-BITCOIND=${1}/bitcoind
-CLI=${1}/bitcoin-cli
+BITCOIND=${BITCOIND:-${1}/bitcoind}
+CLI=${BITCOINCLI:-${1}/bitcoin-cli}
DIR="${BASH_SOURCE%/*}"
SENDANDWAIT="${DIR}/send.sh"
diff --git a/qa/rpc-tests/forknotify.py b/qa/rpc-tests/forknotify.py
index a4c2dc944e..1d2c4a9966 100755
--- a/qa/rpc-tests/forknotify.py
+++ b/qa/rpc-tests/forknotify.py
@@ -23,7 +23,7 @@ class ForkNotifyTest(BitcoinTestFramework):
with open(self.alert_filename, 'w') as f:
pass # Just open then close to create zero-length file
self.nodes.append(start_node(0, self.options.tmpdir,
- ["-blockversion=2", "-alertnotify=echo %s >> '" + self.alert_filename + "'"]))
+ ["-blockversion=2", "-alertnotify=echo %s >> \"" + self.alert_filename + "\""]))
# Node1 mines block.version=211 blocks
self.nodes.append(start_node(1, self.options.tmpdir,
["-blockversion=211"]))
diff --git a/qa/rpc-tests/txnmall.sh b/qa/rpc-tests/txnmall.sh
index 035e7ee15f..1296d54d92 100755
--- a/qa/rpc-tests/txnmall.sh
+++ b/qa/rpc-tests/txnmall.sh
@@ -8,13 +8,14 @@
if [ $# -lt 1 ]; then
echo "Usage: $0 path_to_binaries"
echo "e.g. $0 ../../src"
+ echo "Env vars BITCOIND and BITCOINCLI may be used to specify the exact binaries used"
exit 1
fi
set -f
-BITCOIND=${1}/bitcoind
-CLI=${1}/bitcoin-cli
+BITCOIND=${BITCOIND:-${1}/bitcoind}
+CLI=${BITCOINCLI:-${1}/bitcoin-cli}
DIR="${BASH_SOURCE%/*}"
SENDANDWAIT="${DIR}/send.sh"
diff --git a/qa/rpc-tests/util.py b/qa/rpc-tests/util.py
index 6d0b21c927..e5383b6c57 100644
--- a/qa/rpc-tests/util.py
+++ b/qa/rpc-tests/util.py
@@ -85,11 +85,11 @@ def initialize_chain(test_dir):
# Create cache directories, run bitcoinds:
for i in range(4):
datadir=initialize_datadir("cache", i)
- args = [ "bitcoind", "-keypool=1", "-datadir="+datadir, "-discover=0" ]
+ args = [ os.getenv("BITCOIND", "bitcoind"), "-keypool=1", "-datadir="+datadir, "-discover=0" ]
if i > 0:
args.append("-connect=127.0.0.1:"+str(p2p_port(0)))
bitcoind_processes[i] = subprocess.Popen(args)
- subprocess.check_call([ "bitcoin-cli", "-datadir="+datadir,
+ subprocess.check_call([ os.getenv("BITCOINCLI", "bitcoin-cli"), "-datadir="+datadir,
"-rpcwait", "getblockcount"], stdout=devnull)
devnull.close()
rpcs = []
@@ -150,11 +150,11 @@ def start_node(i, dir, extra_args=None, rpchost=None):
Start a bitcoind and return RPC connection to it
"""
datadir = os.path.join(dir, "node"+str(i))
- args = [ "bitcoind", "-datadir="+datadir, "-keypool=1", "-discover=0" ]
+ args = [ os.getenv("BITCOIND", "bitcoind"), "-datadir="+datadir, "-keypool=1", "-discover=0" ]
if extra_args is not None: args.extend(extra_args)
bitcoind_processes[i] = subprocess.Popen(args)
devnull = open("/dev/null", "w+")
- subprocess.check_call([ "bitcoin-cli", "-datadir="+datadir] +
+ subprocess.check_call([ os.getenv("BITCOINCLI", "bitcoin-cli"), "-datadir="+datadir] +
_rpchost_to_args(rpchost) +
["-rpcwait", "getblockcount"], stdout=devnull)
devnull.close()
@@ -225,7 +225,7 @@ def gather_inputs(from_node, amount_needed):
total_in += t["amount"]
inputs.append({ "txid" : t["txid"], "vout" : t["vout"], "address" : t["address"] } )
if total_in < amount_needed:
- raise RuntimeError("Insufficient funds: need %d, have %d"%(amount+fee*2, total_in))
+ raise RuntimeError("Insufficient funds: need %d, have %d"%(amount_needed, total_in))
return (total_in, inputs)
def make_change(from_node, amount_in, amount_out, fee):
diff --git a/qa/rpc-tests/wallet.sh b/qa/rpc-tests/wallet.sh
index bb5f34f590..c9ad0f2a78 100755
--- a/qa/rpc-tests/wallet.sh
+++ b/qa/rpc-tests/wallet.sh
@@ -8,13 +8,14 @@
if [ $# -lt 1 ]; then
echo "Usage: $0 path_to_binaries"
echo "e.g. $0 ../../src"
+ echo "Env vars BITCOIND and BITCOINCLI may be used to specify the exact binaries used"
exit 1
fi
set -f
-BITCOIND=${1}/bitcoind
-CLI=${1}/bitcoin-cli
+BITCOIND=${BITCOIND:-${1}/bitcoind}
+CLI=${BITCOINCLI:-${1}/bitcoin-cli}
DIR="${BASH_SOURCE%/*}"
SENDANDWAIT="${DIR}/send.sh"
diff --git a/qa/rpc-tests/walletbackup.sh b/qa/rpc-tests/walletbackup.sh
index ee11418bef..4af3d97f35 100755
--- a/qa/rpc-tests/walletbackup.sh
+++ b/qa/rpc-tests/walletbackup.sh
@@ -36,11 +36,12 @@
if [ $# -lt 1 ]; then
echo "Usage: $0 path_to_binaries"
echo "e.g. $0 ../../src"
+ echo "Env vars BITCOIND and BITCOINCLI may be used to specify the exact binaries used"
exit 1
fi
-BITCOIND=${1}/bitcoind
-CLI=${1}/bitcoin-cli
+BITCOIND=${BITCOIND:-${1}/bitcoind}
+CLI=${BITCOINCLI:-${1}/bitcoin-cli}
DIR="${BASH_SOURCE%/*}"
SENDANDWAIT="${DIR}/send.sh"
diff --git a/qa/rpc-tests/zapwallettxes.sh b/qa/rpc-tests/zapwallettxes.sh
index e6d490cccc..4312d84e94 100755
--- a/qa/rpc-tests/zapwallettxes.sh
+++ b/qa/rpc-tests/zapwallettxes.sh
@@ -8,13 +8,14 @@
if [ $# -lt 1 ]; then
echo "Usage: $0 path_to_binaries"
echo "e.g. $0 ../../src"
+ echo "Env vars BITCOIND and BITCOINCLI may be used to specify the exact binaries used"
exit 1
fi
set -f
-BITCOIND=${1}/bitcoind
-CLI=${1}/bitcoin-cli
+BITCOIND=${BITCOIND:-${1}/bitcoind}
+CLI=${BITCOINCLI:-${1}/bitcoin-cli}
DIR="${BASH_SOURCE%/*}"
SENDANDWAIT="${DIR}/send.sh"