Wladimir J. van der Laan
10 years ago
3 changed files with 84 additions and 166 deletions
@ -0,0 +1,82 @@
@@ -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 @@
@@ -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 new issue