Merge pull request #5612
84d9199
[QA] fix zapwallettxes test (Jonas Schnelli)
This commit is contained in:
commit
e3f5727590
3 changed files with 84 additions and 166 deletions
|
@ -26,6 +26,7 @@ testScripts=(
|
||||||
'mempool_spendcoinbase.py'
|
'mempool_spendcoinbase.py'
|
||||||
'mempool_coinbase_spends.py'
|
'mempool_coinbase_spends.py'
|
||||||
'httpbasics.py'
|
'httpbasics.py'
|
||||||
|
'zapwallettxes.py'
|
||||||
# 'forknotify.py'
|
# 'forknotify.py'
|
||||||
);
|
);
|
||||||
if [ "x${ENABLE_BITCOIND}${ENABLE_UTILS}${ENABLE_WALLET}" = "x111" ]; then
|
if [ "x${ENABLE_BITCOIND}${ENABLE_UTILS}${ENABLE_WALLET}" = "x111" ]; then
|
||||||
|
@ -33,7 +34,7 @@ if [ "x${ENABLE_BITCOIND}${ENABLE_UTILS}${ENABLE_WALLET}" = "x111" ]; then
|
||||||
do
|
do
|
||||||
if [ -z "$1" ] || [ "$1" == "${testScripts[$i]}" ] || [ "$1.py" == "${testScripts[$i]}" ]
|
if [ -z "$1" ] || [ "$1" == "${testScripts[$i]}" ] || [ "$1.py" == "${testScripts[$i]}" ]
|
||||||
then
|
then
|
||||||
echo -e "running testscript \033[1m${testScripts[$i]}...\033[0m"
|
echo -e "Running testscript \033[1m${testScripts[$i]}...\033[0m"
|
||||||
${BUILDDIR}/qa/rpc-tests/${testScripts[$i]} --srcdir "${BUILDDIR}/src"
|
${BUILDDIR}/qa/rpc-tests/${testScripts[$i]} --srcdir "${BUILDDIR}/src"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
82
qa/rpc-tests/zapwallettxes.py
Executable file
82
qa/rpc-tests/zapwallettxes.py
Executable file
|
@ -0,0 +1,82 @@
|
||||||
|
#!/usr/bin/env python2
|
||||||
|
# Copyright (c) 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.
|
||||||
|
|
||||||
|
from test_framework import BitcoinTestFramework
|
||||||
|
from util import *
|
||||||
|
|
||||||
|
|
||||||
|
class ZapWalletTXesTest (BitcoinTestFramework):
|
||||||
|
|
||||||
|
def setup_chain(self):
|
||||||
|
print("Initializing test directory "+self.options.tmpdir)
|
||||||
|
initialize_chain_clean(self.options.tmpdir, 3)
|
||||||
|
|
||||||
|
def setup_network(self, split=False):
|
||||||
|
self.nodes = start_nodes(3, self.options.tmpdir)
|
||||||
|
connect_nodes_bi(self.nodes,0,1)
|
||||||
|
connect_nodes_bi(self.nodes,1,2)
|
||||||
|
connect_nodes_bi(self.nodes,0,2)
|
||||||
|
self.is_network_split=False
|
||||||
|
self.sync_all()
|
||||||
|
|
||||||
|
def run_test (self):
|
||||||
|
print "Mining blocks..."
|
||||||
|
self.nodes[0].setgenerate(True, 1)
|
||||||
|
self.sync_all()
|
||||||
|
self.nodes[1].setgenerate(True, 101)
|
||||||
|
self.sync_all()
|
||||||
|
|
||||||
|
assert_equal(self.nodes[0].getbalance(), 50)
|
||||||
|
|
||||||
|
txid0 = self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 11)
|
||||||
|
txid1 = self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 10)
|
||||||
|
self.sync_all()
|
||||||
|
self.nodes[0].setgenerate(True, 1)
|
||||||
|
self.sync_all()
|
||||||
|
|
||||||
|
txid2 = self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 11)
|
||||||
|
txid3 = self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 10)
|
||||||
|
|
||||||
|
tx0 = self.nodes[0].gettransaction(txid0)
|
||||||
|
assert_equal(tx0['txid'], txid0) #tx0 must be available (confirmed)
|
||||||
|
|
||||||
|
tx1 = self.nodes[0].gettransaction(txid1)
|
||||||
|
assert_equal(tx1['txid'], txid1) #tx1 must be available (confirmed)
|
||||||
|
|
||||||
|
tx2 = self.nodes[0].gettransaction(txid2)
|
||||||
|
assert_equal(tx2['txid'], txid2) #tx2 must be available (unconfirmed)
|
||||||
|
|
||||||
|
tx3 = self.nodes[0].gettransaction(txid3)
|
||||||
|
assert_equal(tx3['txid'], txid3) #tx3 must be available (unconfirmed)
|
||||||
|
|
||||||
|
#restart bitcoind
|
||||||
|
self.nodes[0].stop()
|
||||||
|
bitcoind_processes[0].wait()
|
||||||
|
self.nodes[0] = start_node(0,self.options.tmpdir)
|
||||||
|
|
||||||
|
tx3 = self.nodes[0].gettransaction(txid3)
|
||||||
|
assert_equal(tx3['txid'], txid3) #tx must be available (unconfirmed)
|
||||||
|
|
||||||
|
self.nodes[0].stop()
|
||||||
|
bitcoind_processes[0].wait()
|
||||||
|
|
||||||
|
#restart bitcoind with zapwallettxes
|
||||||
|
self.nodes[0] = start_node(0,self.options.tmpdir, ["-zapwallettxes=1"])
|
||||||
|
|
||||||
|
aException = False
|
||||||
|
try:
|
||||||
|
tx3 = self.nodes[0].gettransaction(txid3)
|
||||||
|
except JSONRPCException,e:
|
||||||
|
print e
|
||||||
|
aException = True
|
||||||
|
|
||||||
|
assert_equal(aException, True) #there must be a expection because the unconfirmed wallettx0 must be gone by now
|
||||||
|
|
||||||
|
tx0 = self.nodes[0].gettransaction(txid0)
|
||||||
|
assert_equal(tx0['txid'], txid0) #tx0 (confirmed) must still be available because it was confirmed
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
ZapWalletTXesTest ().main ()
|
|
@ -1,165 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
# Copyright (c) 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.
|
|
||||||
|
|
||||||
# Test -zapwallettxes=<mode>
|
|
||||||
|
|
||||||
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=${BITCOIND:-${1}/bitcoind}
|
|
||||||
CLI=${BITCOINCLI:-${1}/bitcoin-cli}
|
|
||||||
|
|
||||||
DIR="${BASH_SOURCE%/*}"
|
|
||||||
SENDANDWAIT="${DIR}/send.sh"
|
|
||||||
if [[ ! -d "$DIR" ]]; then DIR="$PWD"; fi
|
|
||||||
. "$DIR/util.sh"
|
|
||||||
|
|
||||||
D=$(mktemp -d test.XXXXX)
|
|
||||||
|
|
||||||
D1=${D}/node1
|
|
||||||
CreateDataDir "$D1" port=11000 rpcport=11001
|
|
||||||
B1ARGS="-datadir=$D1"
|
|
||||||
$BITCOIND $B1ARGS &
|
|
||||||
B1PID=$!
|
|
||||||
|
|
||||||
D2=${D}/node2
|
|
||||||
CreateDataDir "$D2" port=11010 rpcport=11011
|
|
||||||
B2ARGS="-datadir=$D2"
|
|
||||||
$BITCOIND $B2ARGS &
|
|
||||||
B2PID=$!
|
|
||||||
|
|
||||||
function CleanUp {
|
|
||||||
$CLI $B2ARGS stop > /dev/null 2>&1
|
|
||||||
wait $B2PID
|
|
||||||
$CLI $B1ARGS stop > /dev/null 2>&1
|
|
||||||
wait $B1PID
|
|
||||||
|
|
||||||
rm -rf $D
|
|
||||||
}
|
|
||||||
|
|
||||||
# 110 blocks, 10 mature == 500 XBT
|
|
||||||
$CLI $B1ARGS setgenerate true 110
|
|
||||||
$CLI $B2ARGS setgenerate true 110
|
|
||||||
|
|
||||||
CheckBalance "$B1ARGS" 500
|
|
||||||
CheckBalance "$B2ARGS" 500
|
|
||||||
|
|
||||||
# Send 10 XBT
|
|
||||||
TXID1_DEFAULT=$($CLI $B1ARGS sendtoaddress "mrhz5ZgSF3C1BSdyCKt3gEdhKoRL5BNfJV" 10)
|
|
||||||
TXID2_DEFAULT=$($CLI $B2ARGS sendtoaddress "mrhz5ZgSF3C1BSdyCKt3gEdhKoRL5BNfJV" 10)
|
|
||||||
|
|
||||||
CheckBalance $B1ARGS 490
|
|
||||||
CheckBalance $B2ARGS 490
|
|
||||||
|
|
||||||
# Move 10 XBT to testaccount
|
|
||||||
TMP=$($CLI $B1ARGS move "" "testaccount" 10)
|
|
||||||
TMP=$($CLI $B2ARGS move "" "testaccount" 10)
|
|
||||||
|
|
||||||
CheckBalance $B1ARGS 10 "testaccount"
|
|
||||||
CheckBalance $B2ARGS 10 "testaccount"
|
|
||||||
|
|
||||||
# Send 1 XBT from testaccount
|
|
||||||
TXID1_TESTACCOUNT=$($CLI $B1ARGS sendfrom "testaccount" "mrhz5ZgSF3C1BSdyCKt3gEdhKoRL5BNfJV" 1)
|
|
||||||
TXID2_TESTACCOUNT=$($CLI $B2ARGS sendfrom "testaccount" "mrhz5ZgSF3C1BSdyCKt3gEdhKoRL5BNfJV" 1)
|
|
||||||
|
|
||||||
CheckBalance $B1ARGS 9 "testaccount"
|
|
||||||
CheckBalance $B2ARGS 9 "testaccount"
|
|
||||||
|
|
||||||
CheckBalance $B1ARGS 489
|
|
||||||
CheckBalance $B2ARGS 489
|
|
||||||
|
|
||||||
# Confirm transactions
|
|
||||||
$CLI $B1ARGS setgenerate true 1
|
|
||||||
$CLI $B2ARGS setgenerate true 1
|
|
||||||
|
|
||||||
# Create unconfirmed transaction
|
|
||||||
TXID1_UNCONFIRMED=$($CLI $B1ARGS sendtoaddress "mrhz5ZgSF3C1BSdyCKt3gEdhKoRL5BNfJV" 1)
|
|
||||||
TXID2_UNCONFIRMED=$($CLI $B2ARGS sendtoaddress "mrhz5ZgSF3C1BSdyCKt3gEdhKoRL5BNfJV" 1)
|
|
||||||
|
|
||||||
# check balance (we created another 50 and spent 1 in the meantime)
|
|
||||||
CheckBalance $B1ARGS 538
|
|
||||||
CheckBalance $B2ARGS 538
|
|
||||||
|
|
||||||
# Safety check, if unconfirmed transactions are there
|
|
||||||
$CLI $B1ARGS gettransaction $TXID1_UNCONFIRMED > /dev/null 2>&1
|
|
||||||
if [[ $? -ne 0 ]] ; then
|
|
||||||
echoerr "gettransaction1_1: $TXID1_UNCONFIRMED failed"
|
|
||||||
CleanUp
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
$CLI $B2ARGS gettransaction $TXID2_UNCONFIRMED > /dev/null 2>&1
|
|
||||||
if [[ $? -ne 0 ]] ; then
|
|
||||||
echoerr "gettransaction2_1: $TXID2_UNCONFIRMED failed"
|
|
||||||
CleanUp
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# stop nodes
|
|
||||||
$CLI $B2ARGS stop > /dev/null 2>&1
|
|
||||||
wait $B2PID
|
|
||||||
$CLI $B1ARGS stop > /dev/null 2>&1
|
|
||||||
wait $B1PID
|
|
||||||
|
|
||||||
# restart nodes with -zapwallettxes
|
|
||||||
$BITCOIND -zapwallettxes=1 $B1ARGS &
|
|
||||||
B1PID=$!
|
|
||||||
$BITCOIND -zapwallettxes=2 $B2ARGS &
|
|
||||||
B2PID=$!
|
|
||||||
|
|
||||||
# check if confirmed transactions are there
|
|
||||||
$CLI $B1ARGS gettransaction $TXID1_DEFAULT > /dev/null 2>&1
|
|
||||||
if [[ $? -ne 0 ]] ; then
|
|
||||||
echoerr "check confirmed transaction 1: $TXID1_DEFAULT failed"
|
|
||||||
CleanUp
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
$CLI $B2ARGS gettransaction $TXID2_DEFAULT > /dev/null 2>&1
|
|
||||||
if [[ $? -ne 0 ]] ; then
|
|
||||||
echoerr "check confirmed transaction 2: $TXID2_DEFAULT failed"
|
|
||||||
CleanUp
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
$CLI $B1ARGS gettransaction $TXID1_TESTACCOUNT > /dev/null 2>&1
|
|
||||||
if [[ $? -ne 0 ]] ; then
|
|
||||||
echoerr "check confirmed transaction 3: $TXID1_TESTACCOUNT failed"
|
|
||||||
CleanUp
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
$CLI $B2ARGS gettransaction $TXID2_TESTACCOUNT > /dev/null 2>&1
|
|
||||||
if [[ $? -ne 0 ]] ; then
|
|
||||||
echoerr "check confirmed transaction 4: $TXID2_TESTACCOUNT failed"
|
|
||||||
CleanUp
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# check if unconfirmed transaction is gone
|
|
||||||
$CLI $B1ARGS gettransaction $TXID1_UNCONFIRMED > /dev/null 2>&1
|
|
||||||
if [[ $? -eq 0 ]] ; then
|
|
||||||
echoerr "check unconfirmed transaction 1: $TXID1_UNCONFIRMED failed"
|
|
||||||
CleanUp
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
$CLI $B2ARGS gettransaction $TXID2_UNCONFIRMED > /dev/null 2>&1
|
|
||||||
if [[ $? -eq 0 ]] ; then
|
|
||||||
echoerr "check unconfirmed transaction 2: $TXID2_UNCONFIRMED failed"
|
|
||||||
CleanUp
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# check zapwallet mode 1, testaccount balance must be 9 (keeping transaction metadata)
|
|
||||||
CheckBalance $B1ARGS 9 "testaccount"
|
|
||||||
|
|
||||||
# check zapwallet mode 2, testaccount balance must be 10 (dropping transaction metadata)
|
|
||||||
CheckBalance $B2ARGS 10 "testaccount"
|
|
||||||
|
|
||||||
echo "Tests successful, cleaning up"
|
|
||||||
CleanUp
|
|
||||||
exit 0
|
|
Loading…
Reference in a new issue