Merge branch 'beta' into mergemaster
# Conflicts: # src/main.cpp
This commit is contained in:
@@ -5,8 +5,11 @@
|
||||
|
||||
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
from time import *
|
||||
from test_framework.util import assert_equal, start_node, \
|
||||
start_nodes, connect_nodes_bi, bitcoind_processes
|
||||
|
||||
import time
|
||||
from decimal import Decimal
|
||||
|
||||
class WalletNullifiersTest (BitcoinTestFramework):
|
||||
|
||||
@@ -32,7 +35,7 @@ class WalletNullifiersTest (BitcoinTestFramework):
|
||||
for x in xrange(1, timeout):
|
||||
results = self.nodes[0].z_getoperationresult(opids)
|
||||
if len(results)==0:
|
||||
sleep(1)
|
||||
time.sleep(1)
|
||||
else:
|
||||
status = results[0]["status"]
|
||||
assert_equal("success", status)
|
||||
@@ -73,7 +76,7 @@ class WalletNullifiersTest (BitcoinTestFramework):
|
||||
for x in xrange(1, timeout):
|
||||
results = self.nodes[0].z_getoperationresult(opids)
|
||||
if len(results)==0:
|
||||
sleep(1)
|
||||
time.sleep(1)
|
||||
else:
|
||||
status = results[0]["status"]
|
||||
assert_equal("success", status)
|
||||
@@ -105,7 +108,7 @@ class WalletNullifiersTest (BitcoinTestFramework):
|
||||
for x in xrange(1, timeout):
|
||||
results = self.nodes[2].z_getoperationresult(opids)
|
||||
if len(results)==0:
|
||||
sleep(1)
|
||||
time.sleep(1)
|
||||
else:
|
||||
status = results[0]["status"]
|
||||
assert_equal("success", status)
|
||||
@@ -146,11 +149,12 @@ class WalletNullifiersTest (BitcoinTestFramework):
|
||||
for x in xrange(1, timeout):
|
||||
results = self.nodes[1].z_getoperationresult(opids)
|
||||
if len(results)==0:
|
||||
sleep(1)
|
||||
time.sleep(1)
|
||||
else:
|
||||
status = results[0]["status"]
|
||||
assert_equal("success", status)
|
||||
mytxid = results[0]["result"]["txid"]
|
||||
[mytxid] # hush pyflakes
|
||||
break
|
||||
|
||||
self.sync_all()
|
||||
@@ -166,5 +170,50 @@ class WalletNullifiersTest (BitcoinTestFramework):
|
||||
assert_equal(self.nodes[1].z_getbalance(myzaddr), zaddrremaining2)
|
||||
assert_equal(self.nodes[2].z_getbalance(myzaddr), zaddrremaining2)
|
||||
|
||||
# Test viewing keys
|
||||
|
||||
node3mined = Decimal('250.0')
|
||||
assert_equal({k: Decimal(v) for k, v in self.nodes[3].z_gettotalbalance().items()}, {
|
||||
'transparent': node3mined,
|
||||
'private': zsendmany2notevalue,
|
||||
'total': node3mined + zsendmany2notevalue,
|
||||
})
|
||||
|
||||
# add node 1 address and node 2 viewing key to node 3
|
||||
myzvkey = self.nodes[2].z_exportviewingkey(myzaddr)
|
||||
self.nodes[3].importaddress(mytaddr1)
|
||||
self.nodes[3].z_importviewingkey(myzvkey, 'whenkeyisnew', 1)
|
||||
|
||||
# Check the address has been imported
|
||||
assert_equal(myzaddr in self.nodes[3].z_listaddresses(), False)
|
||||
assert_equal(myzaddr in self.nodes[3].z_listaddresses(True), True)
|
||||
|
||||
# Node 3 should see the same received notes as node 2
|
||||
assert_equal(
|
||||
self.nodes[2].z_listreceivedbyaddress(myzaddr),
|
||||
self.nodes[3].z_listreceivedbyaddress(myzaddr))
|
||||
|
||||
# Node 3's balances should be unchanged without explicitly requesting
|
||||
# to include watch-only balances
|
||||
assert_equal({k: Decimal(v) for k, v in self.nodes[3].z_gettotalbalance().items()}, {
|
||||
'transparent': node3mined,
|
||||
'private': zsendmany2notevalue,
|
||||
'total': node3mined + zsendmany2notevalue,
|
||||
})
|
||||
|
||||
# Wallet can't cache nullifiers for notes received by addresses it only has a
|
||||
# viewing key for, and therefore can't detect spends. So it sees a balance
|
||||
# corresponding to the sum of all notes the address received.
|
||||
# TODO: Fix this during the Sapling upgrade (via #2277)
|
||||
assert_equal({k: Decimal(v) for k, v in self.nodes[3].z_gettotalbalance(1, True).items()}, {
|
||||
'transparent': node3mined + Decimal('1.0'),
|
||||
'private': zsendmany2notevalue + zsendmanynotevalue + zaddrremaining + zaddrremaining2,
|
||||
'total': node3mined + Decimal('1.0') + zsendmany2notevalue + zsendmanynotevalue + zaddrremaining + zaddrremaining2,
|
||||
})
|
||||
|
||||
# Check individual balances reflect the above
|
||||
assert_equal(self.nodes[3].z_getbalance(mytaddr1), Decimal('1.0'))
|
||||
assert_equal(self.nodes[3].z_getbalance(myzaddr), zsendmanynotevalue + zaddrremaining + zaddrremaining2)
|
||||
|
||||
if __name__ == '__main__':
|
||||
WalletNullifiersTest().main ()
|
||||
|
||||
Reference in New Issue
Block a user