Dash Core  0.12.2.1
P2P Digital Currency
zapwallettxes.py
Go to the documentation of this file.
1 #!/usr/bin/env python2
2 # Copyright (c) 2014-2015 The Bitcoin Core developers
3 # Distributed under the MIT software license, see the accompanying
4 # file COPYING or http://www.opensource.org/licenses/mit-license.php.
5 
6 from test_framework.test_framework import BitcoinTestFramework
7 from test_framework.util import *
8 
9 
11 
12  def setup_chain(self):
13  print("Initializing test directory "+self.options.tmpdir)
14  initialize_chain_clean(self.options.tmpdir, 3)
15 
16  def setup_network(self, split=False):
17  self.nodes = start_nodes(3, self.options.tmpdir)
18  connect_nodes_bi(self.nodes,0,1)
19  connect_nodes_bi(self.nodes,1,2)
20  connect_nodes_bi(self.nodes,0,2)
21  self.is_network_split=False
22  self.sync_all()
23 
24  def run_test (self):
25  print "Mining blocks..."
26  self.nodes[0].generate(1)
27  self.sync_all()
28  self.nodes[1].generate(101)
29  self.sync_all()
30 
31  assert_equal(self.nodes[0].getbalance(), 500)
32 
33  txid0 = self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 11)
34  txid1 = self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 10)
35  self.sync_all()
36  self.nodes[0].generate(1)
37  self.sync_all()
38 
39  txid2 = self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 11)
40  txid3 = self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 10)
41 
42  tx0 = self.nodes[0].gettransaction(txid0)
43  assert_equal(tx0['txid'], txid0) #tx0 must be available (confirmed)
44 
45  tx1 = self.nodes[0].gettransaction(txid1)
46  assert_equal(tx1['txid'], txid1) #tx1 must be available (confirmed)
47 
48  tx2 = self.nodes[0].gettransaction(txid2)
49  assert_equal(tx2['txid'], txid2) #tx2 must be available (unconfirmed)
50 
51  tx3 = self.nodes[0].gettransaction(txid3)
52  assert_equal(tx3['txid'], txid3) #tx3 must be available (unconfirmed)
53 
54  #restart bitcoind
55  self.nodes[0].stop()
56  bitcoind_processes[0].wait()
57  self.nodes[0] = start_node(0,self.options.tmpdir)
58 
59  tx3 = self.nodes[0].gettransaction(txid3)
60  assert_equal(tx3['txid'], txid3) #tx must be available (unconfirmed)
61 
62  self.nodes[0].stop()
63  bitcoind_processes[0].wait()
64 
65  #restart bitcoind with zapwallettxes
66  self.nodes[0] = start_node(0,self.options.tmpdir, ["-zapwallettxes=1"])
67 
68  assert_raises(JSONRPCException, self.nodes[0].gettransaction, [txid3])
69  #there must be a expection because the unconfirmed wallettx0 must be gone by now
70 
71  tx0 = self.nodes[0].gettransaction(txid0)
72  assert_equal(tx0['txid'], txid0) #tx0 (confirmed) must still be available because it was confirmed
73 
74 
75 if __name__ == '__main__':
76  ZapWalletTXesTest ().main ()
UniValue getbalance(const UniValue &params, bool fHelp)
Definition: rpcwallet.cpp:792
def start_nodes(num_nodes, dirname, extra_args=None, rpchost=None, binary=None)
Definition: util.py:305
def assert_raises(exc, fun, args, kwds)
Definition: util.py:469
UniValue sendtoaddress(const UniValue &params, bool fHelp)
Definition: rpcwallet.cpp:409
UniValue getnewaddress(const UniValue &params, bool fHelp)
Definition: rpcwallet.cpp:113
def initialize_chain_clean(test_dir, num_nodes)
Definition: util.py:252
def start_node(i, dirname, extra_args=None, rpchost=None, timewait=None, binary=None)
Definition: util.py:281
def setup_network(self, split=False)
UniValue generate(const UniValue &params, bool fHelp)
Definition: mining.cpp:122
UniValue stop(const UniValue &params, bool fHelp)
Definition: server.cpp:240
def assert_equal(thing1, thing2)
Definition: util.py:461
def connect_nodes_bi(nodes, a, b)
Definition: util.py:351
UniValue gettransaction(const UniValue &params, bool fHelp)
Definition: rpcwallet.cpp:1821