Merge pull request #5293 from mdr0id/smoke_tests_update

Smoke Test Updates (Remove Sprout Logic )
This commit is contained in:
str4d 2021-09-15 20:38:40 +12:00 committed by GitHub
commit 5d643898e7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 71 additions and 216 deletions

View File

@ -2,6 +2,12 @@
#
# Execute the standard smoke tests for Zcash releases.
#
# Usage:
#
# ZCASHD=./src/zcashd ZCASHCLI=./src/zcash-cli ./qa/zcash/smoke_tests.py --wallet=wallet.smoketest.dat "$HOME/.zcash"
#
# ZCASHD=./src/zcashd ZCASHCLI=./src/zcash-cli ./qa/zcash/smoke_tests.py --wallet=wallet.smoketest.dat "$HOME/.zcash" --automate --use-faucet
#
import argparse
import datetime
@ -36,49 +42,49 @@ SMOKE_TESTS = [
('2a', True, True), # Run getinfo
('2b', True, True), # Run help
# Address generation
('3a', True, True), # Generate a Sprout z-addr
('3b', True, True), # Generate multiple Sprout z-addrs
#('3a', True, True), # Generate a Sprout z-addr
#('3b', True, True), # Generate multiple Sprout z-addrs
('3c', True, True), # Generate a t-addr
('3d', True, True), # Generate multiple t-addrs
('3e', True, True), # Generate a Sapling z-addr
('3f', True, True), # Generate multiple Sapling z-addrs
# Transactions
('4a', True, True ), # Send funds from Sprout z-addr to same Sprout z-addr
('4b', True, True ), # Send funds from Sprout z-addr to a different Sprout z-addr
('4c', True, True ), # Send funds from Sprout z-addr to a t-addr
('4d', False, False ), # Send funds from t-addr to Sprout z-addr(expected fail as of Canopy)
#('4a', True, True ), # Send funds from Sprout z-addr to same Sprout z-addr
#('4b', True, True ), # Send funds from Sprout z-addr to a different Sprout z-addr
#('4c', True, True ), # Send funds from Sprout z-addr to a t-addr
#('4d', False, False ), # Send funds from t-addr to Sprout z-addr(expected fail as of Canopy)
('4e', True, True ), # Send funds from t-addr to t-addr
('4f', True, True ), # Send funds from t-addr to Sapling z-addr
('4g', True, True ), # Send funds from Sapling z-addr to same Sapling z-addr
('4h', True, True ), # Send funds from Sapling z-addr to a different Sapling z-addr
('4i', True, True ), # Send funds from Sapling z-addr to a t-addr
('4j', False, False), # Send funds from Sprout z-addr to Sapling z-addr
('4k', True, True ), # Send funds from Sprout z-addr to multiple Sprout z-addrs
('4l', True, True ), # Send funds from Sprout z-addr to multiple t-addrs
('4m', True, True ), # Send funds from Sprout z-addr to t-addr and Sprout z-addrs
('4n', False, False), # Send funds from Sprout z-addr to t-addr and Sapling z-addr
('4o', False, False), # Send funds from Sprout z-addr to multiple Sapling z-addrs
#('4j', False, False), # Send funds from Sprout z-addr to Sapling z-addr
#('4k', True, True ), # Send funds from Sprout z-addr to multiple Sprout z-addrs
#('4l', True, True ), # Send funds from Sprout z-addr to multiple t-addrs
#('4m', True, True ), # Send funds from Sprout z-addr to t-addr and Sprout z-addrs
#('4n', False, False), # Send funds from Sprout z-addr to t-addr and Sapling z-addr
#('4o', False, False), # Send funds from Sprout z-addr to multiple Sapling z-addrs
('4p', True, True ), # Send funds from t-addr to multiple t-addrs
('4q', False, False ), # Send funds from t-addr to multiple Sprout z-addrs(expected fail as of Canopy)
#('4q', False, False ), # Send funds from t-addr to multiple Sprout z-addrs(expected fail as of Canopy)
('4r', True, True ), # Send funds from t-addr to multiple Sapling z-addrs
('4s', False, False), # Send funds from t-addr to Sprout z-addr and Sapling z-addr
#('4s', False, False), # Send funds from t-addr to Sprout z-addr and Sapling z-addr
('4t', True, True ), # Send funds from Sapling z-addr to multiple Sapling z-addrs
('4u', False, False), # Send funds from Sapling z-addr to multiple Sprout z-addrs
#('4u', False, False), # Send funds from Sapling z-addr to multiple Sprout z-addrs
('4v', True, True ), # Send funds from Sapling z-addr to multiple t-addrs
('4w', True, True ), # Send funds from Sapling z-addr to t-addr and Sapling z-addr
('4x', False, False), # Send funds from Sapling z-addr to Sapling z-addr and Sprout z-addr
('4y', False, False ), # Send funds from t-addr to Sprout z-addr using z_mergetoaddress(expected fail as of Canopy)
('4z', False, False ), # Send funds from 2 different t-addrs to Sprout z-addr using z_mergetoaddress(expected fail as of Canopy)
('4aa', False, False), # Send funds from the same 2 t-addrs to Sprout z-addr using z_mergetoaddress
#('4x', False, False), # Send funds from Sapling z-addr to Sapling z-addr and Sprout z-addr
#('4y', False, False ), # Send funds from t-addr to Sprout z-addr using z_mergetoaddress(expected fail as of Canopy)
#('4z', False, False ), # Send funds from 2 different t-addrs to Sprout z-addr using z_mergetoaddress(expected fail as of Canopy)
#('4aa', False, False), # Send funds from the same 2 t-addrs to Sprout z-addr using z_mergetoaddress
('4bb', True, True ), # Send funds from 2 different t-addrs to Sapling z-addr using z_mergetoaddress
('4cc', True, True ), # Send funds from t-addr to Sapling z-addr using z_mergetoaddress
('4dd', False, False ), # Send funds from t-addr and Sprout z-addr to Sprout z-addr using z_mergetoaddress(expected fail as of Canopy)
#('4dd', False, False ), # Send funds from t-addr and Sprout z-addr to Sprout z-addr using z_mergetoaddress(expected fail as of Canopy)
('4ee', True, True ), # Send funds from t-addr and Sapling z-addr to Sapling z-addr using z_mergetoaddress
('4ff', True, True ), # Send funds from Sprout z-addr and Sprout z-addr to Sprout z-addr using z_mergetoaddress
#('4ff', True, True ), # Send funds from Sprout z-addr and Sprout z-addr to Sprout z-addr using z_mergetoaddress
('4gg', True, True ), # Send funds from Sapling z-addr and Sapling z-addr to Sapling z-addr using z_mergetoaddress
# Wallet
('5a', True, True), # After generating multiple z-addrs, run z_listaddresses
('5b', True, True), # Run z_validateaddress with a Sprout z-addr
#('5b', True, True), # Run z_validateaddress with a Sprout z-addr
('5c', True, True), # Run z_validateaddress with a Sapling z-addr
('5d', True, True), # After a transaction, run z_listunspent
('5e', True, True), # After a transaction, run z_listreceivedbyaddress
@ -166,6 +172,8 @@ def wait_for_balance(zcash, zaddr, expected=None):
ttl = 300
def wait_and_check_balance(results, case, zcash, addr, expected):
#Wait for aysnc call to finish and persist completely to caller
time.sleep(5)
balance = wait_for_balance(zcash, addr, expected)
if balance != expected and results is not None and len(case) > 0:
results[case] = False
@ -308,9 +316,6 @@ def transaction_chain(zcash):
results = {}
# Generate the various addresses we will use
sprout_zaddr_1 = run_cmd(results, '3a', zcash, 'z_getnewaddress', ['sprout'])
sprout_zaddr_2 = run_cmd(results, '3b', zcash, 'z_getnewaddress', ['sprout'])
sprout_zaddr_3 = run_cmd(results, '3b', zcash, 'z_getnewaddress', ['sprout'])
taddr_1 = run_cmd(results, '3c', zcash, 'getnewaddress')
taddr_2 = run_cmd(results, '3d', zcash, 'getnewaddress')
taddr_3 = run_cmd(results, '3d', zcash, 'getnewaddress')
@ -322,17 +327,11 @@ def transaction_chain(zcash):
# Check that the zaddrs are all listed
zaddrs = run_cmd(results, '5a', zcash, 'z_listaddresses')
if (sprout_zaddr_1 not in zaddrs or
sprout_zaddr_2 not in zaddrs or
sapling_zaddr_1 not in zaddrs or
if ( sapling_zaddr_1 not in zaddrs or
sapling_zaddr_2 not in zaddrs):
results['5a'] = False
# Validate the addresses
ret = run_cmd(results, '5b', zcash, 'z_validateaddress', [sprout_zaddr_1])
if not ret['isvalid'] or ret['type'] != 'sprout':
results['5b'] = False
ret = run_cmd(results, '5c', zcash, 'z_validateaddress', [sapling_zaddr_1])
if not ret['isvalid'] or ret['type'] != 'sapling':
results['5c'] = False
@ -345,7 +344,7 @@ def transaction_chain(zcash):
if zcash.use_faucet:
print('Tapping the testnet faucet for testing funds...')
chain_end = get_zfaucet_taddr()
tap_zfaucet(sprout_zaddr_1)
tap_zfaucet(taddr_1)
print('Done! Leftover funds will be sent back to the faucet.')
else:
chain_end = input('Type or paste transparent address where leftover funds should be sent: ')
@ -354,14 +353,14 @@ def transaction_chain(zcash):
return results
print()
print('Please send at least 0.01 ZEC/TAZ to the following address:')
print(sprout_zaddr_1)
print(taddr_1)
print()
input('Press Enter once the funds have been sent.')
print()
# Wait to receive starting balance
sprout_balance = wait_for_balance(zcash, sprout_zaddr_1)
starting_balance = sprout_balance
taddr_balance = wait_for_balance(zcash, taddr_1)
starting_balance = taddr_balance
#
# Start the transaction chain!
@ -372,19 +371,6 @@ def transaction_chain(zcash):
print('#')
print()
try:
#
# First, split the funds across all three pools
#
# Sprout -> taddr
taddr_balance = check_z_sendmany(
results, '4c', zcash, sprout_zaddr_1, [(taddr_1, (starting_balance / Decimal('10')) * Decimal('6'))])[0]
sprout_balance -= taddr_balance + DEFAULT_FEE
balance = Decimal(run_cmd(results, '5f', zcash, 'z_getbalance', [sprout_zaddr_1])).quantize(Decimal('1.00000000'))
if balance != sprout_balance:
results['5f'] = False
# taddr -> Sapling
# Send it all here because z_sendmany pick a new t-addr for change
sapling_balance = check_z_sendmany(
@ -400,30 +386,20 @@ def transaction_chain(zcash):
# Intra-pool tests
#
# Sprout -> same Sprout
# Sapling -> same Sapling
(sprout_balance, sapling_balance) = check_z_sendmany_parallel(results, zcash, [
('4a', sprout_zaddr_1, [(sprout_zaddr_1, sprout_balance - DEFAULT_FEE)]),
('4g', sapling_zaddr_1, [(sapling_zaddr_1, sapling_balance - DEFAULT_FEE)]),
])
sapling_balance = check_z_sendmany(
results, '4g',zcash, sapling_zaddr_1, [(sapling_zaddr_1, sapling_balance - DEFAULT_FEE)])[0]
# Sprout -> different Sprout
# taddr -> different taddr
# Sapling -> different Sapling
(sprout_balance, taddr_balance, sapling_balance) = check_z_sendmany_parallel(results, zcash, [
('4b', sprout_zaddr_1, [(sprout_zaddr_2, sprout_balance - DEFAULT_FEE)]),
(taddr_balance, sapling_balance) = check_z_sendmany_parallel(results, zcash, [
('4e', taddr_1, [(taddr_2, taddr_balance - DEFAULT_FEE)]),
('4h', sapling_zaddr_1, [(sapling_zaddr_2, sapling_balance - DEFAULT_FEE)]),
])
# Sprout -> multiple Sprout
# taddr -> multiple taddr
# Sapling -> multiple Sapling
check_z_sendmany_parallel(results, zcash, [
('4k', sprout_zaddr_2, [
(sprout_zaddr_1, starting_balance / Decimal('10')),
(sprout_zaddr_3, starting_balance / Decimal('10')),
]),
('4p', taddr_2, [
(taddr_1, starting_balance / Decimal('10')),
(taddr_3, taddr_balance - (starting_balance / Decimal('10')) - DEFAULT_FEE),
@ -433,195 +409,75 @@ def transaction_chain(zcash):
(sapling_zaddr_3, starting_balance / Decimal('10')),
]),
])
sprout_balance -= DEFAULT_FEE
taddr_balance -= DEFAULT_FEE
sapling_balance -= DEFAULT_FEE
# multiple Sprout -> Sprout
# multiple Sapling -> Sapling
# multiple taddr -> taddr
check_z_mergetoaddress_parallel(results, zcash, [
('4ff', [sprout_zaddr_1, sprout_zaddr_3], sprout_zaddr_2, sprout_balance - DEFAULT_FEE),
('4gg', [sapling_zaddr_1, sapling_zaddr_3], sapling_zaddr_2, sapling_balance - DEFAULT_FEE),
('', [taddr_1, taddr_3], taddr_2, taddr_balance - DEFAULT_FEE),
])
sprout_balance -= DEFAULT_FEE
sapling_balance -= DEFAULT_FEE
taddr_balance -= DEFAULT_FEE
#
# Now test a bunch of failing cases
#
# Sprout -> Sapling
txid = z_sendmany(results, '4j', zcash, sprout_zaddr_2, [(sapling_zaddr_1, sprout_balance - DEFAULT_FEE)])
if txid is not None:
print('Should have failed')
return results
# Sprout -> taddr and Sapling
txid = z_sendmany(results, '4n', zcash, sprout_zaddr_2, [
(taddr_2, starting_balance / Decimal('10')),
(sapling_zaddr_1, starting_balance / Decimal('10')),
])
if txid is not None:
print('Should have failed')
return results
# Sprout -> multiple Sapling
txid = z_sendmany(results, '4o', zcash, sprout_zaddr_2, [
(sapling_zaddr_1, starting_balance / Decimal('10')),
(sapling_zaddr_2, starting_balance / Decimal('10')),
])
if txid is not None:
print('Should have failed')
return results
# taddr -> Sprout and Sapling
txid = z_sendmany(results, '4s', zcash, taddr_2, [
(sprout_zaddr_1, starting_balance / Decimal('10')),
(sapling_zaddr_1, starting_balance / Decimal('10')),
])
if txid is not None:
print('Should have failed')
return results
# Sapling -> multiple Sprout
txid = z_sendmany(results, '4u', zcash, sapling_zaddr_2, [
(sprout_zaddr_1, starting_balance / Decimal('10')),
(sprout_zaddr_2, starting_balance / Decimal('10')),
])
if txid is not None:
print('Should have failed')
return results
# Sapling -> Sapling and Sprout
txid = z_sendmany(results, '4x', zcash, sapling_zaddr_2, [
(sapling_zaddr_1, starting_balance / Decimal('10')),
(sprout_zaddr_1, starting_balance / Decimal('10')),
])
if txid is not None:
print('Should have failed')
return results
# multiple same taddr -> Sprout
txid = z_mergetoaddress(results, '4aa', zcash, [taddr_2, taddr_2], sprout_zaddr_2)
if txid is not None:
print('Should have failed')
return results
#
# Inter-pool tests
#
# Sprout -> taddr and Sprout
# Sapling -> taddr and Sapling
check_z_sendmany_parallel(results, zcash, [
('4m', sprout_zaddr_2, [
(taddr_1, starting_balance / Decimal('10')),
(sprout_zaddr_1, starting_balance / Decimal('10')),
]),
('4w', sapling_zaddr_2, [
check_z_sendmany(
results, '4w', zcash, sapling_zaddr_2,[
(taddr_3, starting_balance / Decimal('10')),
(sapling_zaddr_1, starting_balance / Decimal('10')),
]),
])
sprout_balance -= (starting_balance / Decimal('10')) + DEFAULT_FEE
(sapling_zaddr_1, starting_balance / Decimal('10'))])[0]
sapling_balance -= (starting_balance / Decimal('10')) + DEFAULT_FEE
taddr_balance += starting_balance / Decimal('10')
# taddr and Sapling -> Sapling
check_z_mergetoaddress(results, '4ee', zcash, [taddr_3, sapling_zaddr_1], sapling_zaddr_2, sapling_balance + (starting_balance / Decimal('10')) - DEFAULT_FEE)
sapling_balance += (starting_balance / Decimal('10')) - DEFAULT_FEE
taddr_balance -= starting_balance / Decimal('10')
# Sapling -> multiple taddr
check_z_sendmany(results, '4v', zcash, sapling_zaddr_2, [
(taddr_4, (starting_balance / Decimal('10'))),
(taddr_5, (starting_balance / Decimal('10')))])[0]
sapling_balance -= ((starting_balance / Decimal('10')) * Decimal('2')) + DEFAULT_FEE
taddr_balance += (starting_balance / Decimal('10')) * Decimal('2')
# taddr and Sprout -> Sprout
# taddr and Sapling -> Sapling
check_z_mergetoaddress_parallel(results, zcash, [
('4dd', [taddr_1, sprout_zaddr_1], sprout_zaddr_2, sprout_balance + (starting_balance / Decimal('10')) - DEFAULT_FEE),
('4ee', [taddr_3, sapling_zaddr_1], sapling_zaddr_2, sapling_balance + (starting_balance / Decimal('10')) - DEFAULT_FEE),
])
sprout_balance += (starting_balance / Decimal('10')) - DEFAULT_FEE
sapling_balance += (starting_balance / Decimal('10')) - DEFAULT_FEE
# multiple taddr -> Sapling
check_z_mergetoaddress(results, '4bb',zcash, [taddr_4, taddr_5], sapling_zaddr_2, sapling_balance + ((starting_balance / Decimal('10')) * Decimal('2')) - DEFAULT_FEE)
sapling_balance += ((starting_balance / Decimal('10')) * Decimal('2')) - DEFAULT_FEE
taddr_balance -= (starting_balance / Decimal('10')) * Decimal('2')
# Sprout -> multiple taddr
# Sapling -> multiple taddr
check_z_sendmany_parallel(results, zcash, [
('4l', sprout_zaddr_2, [
(taddr_1, (starting_balance / Decimal('10'))),
(taddr_3, (starting_balance / Decimal('10'))),
]),
('4v', sapling_zaddr_2, [
(taddr_4, (starting_balance / Decimal('10'))),
(taddr_5, (starting_balance / Decimal('10'))),
]),
])
sprout_balance -= ((starting_balance / Decimal('10')) * Decimal('2')) + DEFAULT_FEE
sapling_balance -= ((starting_balance / Decimal('10')) * Decimal('2')) + DEFAULT_FEE
taddr_balance += (starting_balance / Decimal('10')) * Decimal('4')
# multiple taddr -> Sprout
# multiple taddr -> Sapling
check_z_mergetoaddress_parallel(results, zcash, [
('4z', [taddr_1, taddr_3], sprout_zaddr_2, sprout_balance + ((starting_balance / Decimal('10')) * Decimal('2')) - DEFAULT_FEE),
('4bb', [taddr_4, taddr_5], sapling_zaddr_2, sapling_balance + ((starting_balance / Decimal('10')) * Decimal('2')) - DEFAULT_FEE),
])
sprout_balance += ((starting_balance / Decimal('10')) * Decimal('2')) - DEFAULT_FEE
sapling_balance += ((starting_balance / Decimal('10')) * Decimal('2')) - DEFAULT_FEE
taddr_balance -= (starting_balance / Decimal('10')) * Decimal('4')
# taddr -> Sprout
check_z_sendmany_parallel(results, zcash, [
('4d', taddr_2, [(sprout_zaddr_3, taddr_balance - DEFAULT_FEE)]),
])
sprout_balance += taddr_balance - DEFAULT_FEE
taddr_balance = Decimal('0')
# multiple Sprout -> taddr
# multiple Sapling -> taddr
check_z_mergetoaddress_parallel(None, zcash, [
('', [sprout_zaddr_1, sprout_zaddr_2, sprout_zaddr_3], taddr_1, sprout_balance - DEFAULT_FEE),
('', [sapling_zaddr_1, sapling_zaddr_2, sapling_zaddr_3], taddr_2, sapling_balance - DEFAULT_FEE),
])
taddr_balance = sprout_balance + sapling_balance - (2 * DEFAULT_FEE)
sprout_balance = Decimal('0')
check_z_mergetoaddress(None, '', zcash, [sapling_zaddr_1, sapling_zaddr_2, sapling_zaddr_3], taddr_2, sapling_balance - DEFAULT_FEE)
taddr_balance += sapling_balance - DEFAULT_FEE
sapling_balance = Decimal('0')
# taddr -> multiple Sprout
# taddr -> multiple Sapling
taddr_1_balance = Decimal(zcash.z_getbalance(taddr_1)).quantize(Decimal('1.00000000'))
taddr_2_balance = Decimal(zcash.z_getbalance(taddr_2)).quantize(Decimal('1.00000000'))
check_z_sendmany_parallel(results, zcash, [
('4q', taddr_1, [
(sprout_zaddr_1, (starting_balance / Decimal('10'))),
(sprout_zaddr_2, taddr_1_balance - (starting_balance / Decimal('10')) - DEFAULT_FEE),
]),
('4r', taddr_2, [
check_z_sendmany(results, '4r', zcash, taddr_2, [
(sapling_zaddr_1, (starting_balance / Decimal('10'))),
(sapling_zaddr_2, taddr_2_balance - (starting_balance / Decimal('10')) - DEFAULT_FEE),
]),
])
sprout_balance = taddr_1_balance - DEFAULT_FEE
sapling_balance = taddr_2_balance - DEFAULT_FEE
taddr_balance = Decimal('0')
(sapling_zaddr_2, taddr_2_balance - (starting_balance / Decimal('10')) - DEFAULT_FEE)])[0]
sapling_balance = taddr_2_balance - DEFAULT_FEE
taddr_balance -= taddr_2_balance
# multiple Sprout -> taddr
# multiple Sapling -> taddr
check_z_mergetoaddress_parallel(None, zcash, [
('', [sprout_zaddr_1, sprout_zaddr_2], taddr_1, sprout_balance - DEFAULT_FEE),
('', [sapling_zaddr_1, sapling_zaddr_2], taddr_2, sapling_balance - DEFAULT_FEE),
])
taddr_balance = sprout_balance + sapling_balance - (Decimal('2') * DEFAULT_FEE)
sprout_balance = Decimal('0')
check_z_mergetoaddress(None, '', zcash, [sapling_zaddr_1, sapling_zaddr_2], taddr_2, sapling_balance - DEFAULT_FEE)
taddr_balance += sapling_balance - DEFAULT_FEE
sapling_balance = Decimal('0')
# z_mergetoaddress taddr -> Sprout
# z_mergetoaddress taddr -> Sapling
taddr_1_balance = Decimal(zcash.z_getbalance(taddr_1)).quantize(Decimal('1.00000000'))
taddr_2_balance = Decimal(zcash.z_getbalance(taddr_2)).quantize(Decimal('1.00000000'))
check_z_mergetoaddress_parallel(results, zcash, [
('4y', [taddr_1], sprout_zaddr_1, taddr_1_balance - DEFAULT_FEE),
('4cc', [taddr_2], sapling_zaddr_1, taddr_2_balance - DEFAULT_FEE),
])
sprout_balance = taddr_1_balance - DEFAULT_FEE
check_z_mergetoaddress(results, '4cc', zcash, [taddr_2], sapling_zaddr_1, taddr_2_balance - DEFAULT_FEE)
sapling_balance = taddr_2_balance - DEFAULT_FEE
taddr_balance = Decimal('0')
taddr_balance -= taddr_2_balance
except Exception as e:
print('Error: %s' % e)
traceback.print_exc()
@ -634,7 +490,6 @@ def transaction_chain(zcash):
print('# Finishing transaction chain')
print('#')
all_addrs = [
sprout_zaddr_1, sprout_zaddr_2, sprout_zaddr_3,
taddr_1, taddr_2, taddr_3, taddr_4, taddr_5,
sapling_zaddr_1, sapling_zaddr_2, sapling_zaddr_3,
]