Merge #8216: [qa] assert 'changePosition out of bounds'
fa58f94 [qa] pull-tester: Start longest test first (MarcoFalke) fa3b379 [qa] pull-tester: Fix assertion and check for run_parallel (MarcoFalke) fa32465 [qa] fundrawtransaction: Create get_unspent() (MarcoFalke) fa8ce3b [qa] assert 'changePosition out of bounds' (MarcoFalke)
This commit is contained in:
parent
c2dabf8bd8
commit
e2bcf8ae0c
@ -110,6 +110,8 @@ if ENABLE_ZMQ:
|
|||||||
|
|
||||||
#Tests
|
#Tests
|
||||||
testScripts = [
|
testScripts = [
|
||||||
|
# longest test should go first, to favor running tests in parallel
|
||||||
|
'p2p-fullblocktest.py', # NOTE: needs dash_hash to pass
|
||||||
'walletbackup.py',
|
'walletbackup.py',
|
||||||
'bip68-112-113-p2p.py',
|
'bip68-112-113-p2p.py',
|
||||||
'wallet.py',
|
'wallet.py',
|
||||||
@ -139,7 +141,6 @@ testScripts = [
|
|||||||
'timestampindex.py',
|
'timestampindex.py',
|
||||||
'spentindex.py',
|
'spentindex.py',
|
||||||
'decodescript.py',
|
'decodescript.py',
|
||||||
'p2p-fullblocktest.py', # NOTE: needs dash_hash to pass
|
|
||||||
'blockchain.py',
|
'blockchain.py',
|
||||||
'disablewallet.py',
|
'disablewallet.py',
|
||||||
'sendheaders.py', # NOTE: needs dash_hash to pass
|
'sendheaders.py', # NOTE: needs dash_hash to pass
|
||||||
@ -206,7 +207,7 @@ def runtests():
|
|||||||
if coverage:
|
if coverage:
|
||||||
flags.append(coverage.flag)
|
flags.append(coverage.flag)
|
||||||
|
|
||||||
if len(test_list) > 1:
|
if len(test_list) > 1 and run_parallel > 1:
|
||||||
# Populate cache
|
# Populate cache
|
||||||
subprocess.check_output([RPC_TESTS_DIR + 'create_cache.py'] + flags)
|
subprocess.check_output([RPC_TESTS_DIR + 'create_cache.py'] + flags)
|
||||||
|
|
||||||
@ -270,7 +271,7 @@ class RPCTestHandler:
|
|||||||
log_stdout,
|
log_stdout,
|
||||||
log_stderr))
|
log_stderr))
|
||||||
if not self.jobs:
|
if not self.jobs:
|
||||||
raise IndexError('%s from empty list' % __name__)
|
raise IndexError('pop from empty list')
|
||||||
while True:
|
while True:
|
||||||
# Return first proc that finishes
|
# Return first proc that finishes
|
||||||
time.sleep(.5)
|
time.sleep(.5)
|
||||||
|
@ -6,7 +6,14 @@
|
|||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import *
|
from test_framework.util import *
|
||||||
|
|
||||||
# Create one-input, one-output, no-fee transaction:
|
|
||||||
|
def get_unspent(listunspent, amount):
|
||||||
|
for utx in listunspent:
|
||||||
|
if utx['amount'] == amount:
|
||||||
|
return utx
|
||||||
|
raise AssertionError('Could not find unspent with amount={}'.format(amount))
|
||||||
|
|
||||||
|
|
||||||
class RawTransactionsTest(BitcoinTestFramework):
|
class RawTransactionsTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -71,7 +78,7 @@ class RawTransactionsTest(BitcoinTestFramework):
|
|||||||
rawtxfund = self.nodes[2].fundrawtransaction(rawtx)
|
rawtxfund = self.nodes[2].fundrawtransaction(rawtx)
|
||||||
fee = rawtxfund['fee']
|
fee = rawtxfund['fee']
|
||||||
dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex'])
|
dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex'])
|
||||||
assert(len(dec_tx['vin']) > 0) #test if we have enought inputs
|
assert(len(dec_tx['vin']) > 0) #test that we have enough inputs
|
||||||
|
|
||||||
##############################
|
##############################
|
||||||
# simple test with two coins #
|
# simple test with two coins #
|
||||||
@ -123,14 +130,7 @@ class RawTransactionsTest(BitcoinTestFramework):
|
|||||||
#########################################################################
|
#########################################################################
|
||||||
# test a fundrawtransaction with a VIN greater than the required amount #
|
# test a fundrawtransaction with a VIN greater than the required amount #
|
||||||
#########################################################################
|
#########################################################################
|
||||||
utx = False
|
utx = get_unspent(self.nodes[2].listunspent(), 50)
|
||||||
listunspent = self.nodes[2].listunspent()
|
|
||||||
for aUtx in listunspent:
|
|
||||||
if aUtx['amount'] == 50:
|
|
||||||
utx = aUtx
|
|
||||||
break
|
|
||||||
|
|
||||||
assert(utx!=False)
|
|
||||||
|
|
||||||
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']}]
|
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']}]
|
||||||
outputs = { self.nodes[0].getnewaddress() : 10 }
|
outputs = { self.nodes[0].getnewaddress() : 10 }
|
||||||
@ -151,14 +151,7 @@ class RawTransactionsTest(BitcoinTestFramework):
|
|||||||
#####################################################################
|
#####################################################################
|
||||||
# test a fundrawtransaction with which will not get a change output #
|
# test a fundrawtransaction with which will not get a change output #
|
||||||
#####################################################################
|
#####################################################################
|
||||||
utx = False
|
utx = get_unspent(self.nodes[2].listunspent(), 50)
|
||||||
listunspent = self.nodes[2].listunspent()
|
|
||||||
for aUtx in listunspent:
|
|
||||||
if aUtx['amount'] == 50:
|
|
||||||
utx = aUtx
|
|
||||||
break
|
|
||||||
|
|
||||||
assert(utx!=False)
|
|
||||||
|
|
||||||
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']}]
|
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']}]
|
||||||
outputs = { self.nodes[0].getnewaddress() : Decimal(50) - fee - feeTolerance }
|
outputs = { self.nodes[0].getnewaddress() : Decimal(50) - fee - feeTolerance }
|
||||||
@ -180,14 +173,7 @@ class RawTransactionsTest(BitcoinTestFramework):
|
|||||||
####################################################
|
####################################################
|
||||||
# test a fundrawtransaction with an invalid option #
|
# test a fundrawtransaction with an invalid option #
|
||||||
####################################################
|
####################################################
|
||||||
utx = False
|
utx = get_unspent(self.nodes[2].listunspent(), 50)
|
||||||
listunspent = self.nodes[2].listunspent()
|
|
||||||
for aUtx in listunspent:
|
|
||||||
if aUtx['amount'] == 50:
|
|
||||||
utx = aUtx
|
|
||||||
break
|
|
||||||
|
|
||||||
assert_equal(utx!=False, True)
|
|
||||||
|
|
||||||
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']} ]
|
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']} ]
|
||||||
outputs = { self.nodes[0].getnewaddress() : Decimal(40) }
|
outputs = { self.nodes[0].getnewaddress() : Decimal(40) }
|
||||||
@ -205,14 +191,7 @@ class RawTransactionsTest(BitcoinTestFramework):
|
|||||||
############################################################
|
############################################################
|
||||||
# test a fundrawtransaction with an invalid change address #
|
# test a fundrawtransaction with an invalid change address #
|
||||||
############################################################
|
############################################################
|
||||||
utx = False
|
utx = get_unspent(self.nodes[2].listunspent(), 50)
|
||||||
listunspent = self.nodes[2].listunspent()
|
|
||||||
for aUtx in listunspent:
|
|
||||||
if aUtx['amount'] == 50:
|
|
||||||
utx = aUtx
|
|
||||||
break
|
|
||||||
|
|
||||||
assert_equal(utx!=False, True)
|
|
||||||
|
|
||||||
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']} ]
|
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']} ]
|
||||||
outputs = { self.nodes[0].getnewaddress() : Decimal(40) }
|
outputs = { self.nodes[0].getnewaddress() : Decimal(40) }
|
||||||
@ -227,18 +206,10 @@ class RawTransactionsTest(BitcoinTestFramework):
|
|||||||
assert("changeAddress must be a valid dash address" in e.error['message'])
|
assert("changeAddress must be a valid dash address" in e.error['message'])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
############################################################
|
############################################################
|
||||||
# test a fundrawtransaction with a provided change address #
|
# test a fundrawtransaction with a provided change address #
|
||||||
############################################################
|
############################################################
|
||||||
utx = False
|
utx = get_unspent(self.nodes[2].listunspent(), 50)
|
||||||
listunspent = self.nodes[2].listunspent()
|
|
||||||
for aUtx in listunspent:
|
|
||||||
if aUtx['amount'] == 50:
|
|
||||||
utx = aUtx
|
|
||||||
break
|
|
||||||
|
|
||||||
assert_equal(utx!=False, True)
|
|
||||||
|
|
||||||
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']} ]
|
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']} ]
|
||||||
outputs = { self.nodes[0].getnewaddress() : Decimal(40) }
|
outputs = { self.nodes[0].getnewaddress() : Decimal(40) }
|
||||||
@ -247,24 +218,22 @@ class RawTransactionsTest(BitcoinTestFramework):
|
|||||||
assert_equal(utx['txid'], dec_tx['vin'][0]['txid'])
|
assert_equal(utx['txid'], dec_tx['vin'][0]['txid'])
|
||||||
|
|
||||||
change = self.nodes[2].getnewaddress()
|
change = self.nodes[2].getnewaddress()
|
||||||
|
try:
|
||||||
|
rawtxfund = self.nodes[2].fundrawtransaction(rawtx, {'changeAddress': change, 'changePosition': 2})
|
||||||
|
except JSONRPCException as e:
|
||||||
|
assert('changePosition out of bounds' == e.error['message'])
|
||||||
|
else:
|
||||||
|
assert(False)
|
||||||
rawtxfund = self.nodes[2].fundrawtransaction(rawtx, {'changeAddress': change, 'changePosition': 0})
|
rawtxfund = self.nodes[2].fundrawtransaction(rawtx, {'changeAddress': change, 'changePosition': 0})
|
||||||
dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex'])
|
dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex'])
|
||||||
out = dec_tx['vout'][0];
|
out = dec_tx['vout'][0];
|
||||||
assert_equal(change, out['scriptPubKey']['addresses'][0])
|
assert_equal(change, out['scriptPubKey']['addresses'][0])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#########################################################################
|
#########################################################################
|
||||||
# test a fundrawtransaction with a VIN smaller than the required amount #
|
# test a fundrawtransaction with a VIN smaller than the required amount #
|
||||||
#########################################################################
|
#########################################################################
|
||||||
utx = False
|
utx = get_unspent(self.nodes[2].listunspent(), 10)
|
||||||
listunspent = self.nodes[2].listunspent()
|
|
||||||
for aUtx in listunspent:
|
|
||||||
if aUtx['amount'] == 10:
|
|
||||||
utx = aUtx
|
|
||||||
break
|
|
||||||
|
|
||||||
assert(utx!=False)
|
|
||||||
|
|
||||||
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']}]
|
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']}]
|
||||||
outputs = { self.nodes[0].getnewaddress() : 10 }
|
outputs = { self.nodes[0].getnewaddress() : 10 }
|
||||||
@ -299,17 +268,8 @@ class RawTransactionsTest(BitcoinTestFramework):
|
|||||||
###########################################
|
###########################################
|
||||||
# test a fundrawtransaction with two VINs #
|
# test a fundrawtransaction with two VINs #
|
||||||
###########################################
|
###########################################
|
||||||
utx = False
|
utx = get_unspent(self.nodes[2].listunspent(), 10)
|
||||||
utx2 = False
|
utx2 = get_unspent(self.nodes[2].listunspent(), 50)
|
||||||
listunspent = self.nodes[2].listunspent()
|
|
||||||
for aUtx in listunspent:
|
|
||||||
if aUtx['amount'] == 10:
|
|
||||||
utx = aUtx
|
|
||||||
if aUtx['amount'] == 50:
|
|
||||||
utx2 = aUtx
|
|
||||||
|
|
||||||
|
|
||||||
assert(utx!=False)
|
|
||||||
|
|
||||||
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']},{'txid' : utx2['txid'], 'vout' : utx2['vout']} ]
|
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']},{'txid' : utx2['txid'], 'vout' : utx2['vout']} ]
|
||||||
outputs = { self.nodes[0].getnewaddress() : 60 }
|
outputs = { self.nodes[0].getnewaddress() : 60 }
|
||||||
@ -341,17 +301,8 @@ class RawTransactionsTest(BitcoinTestFramework):
|
|||||||
#########################################################
|
#########################################################
|
||||||
# test a fundrawtransaction with two VINs and two vOUTs #
|
# test a fundrawtransaction with two VINs and two vOUTs #
|
||||||
#########################################################
|
#########################################################
|
||||||
utx = False
|
utx = get_unspent(self.nodes[2].listunspent(), 10)
|
||||||
utx2 = False
|
utx2 = get_unspent(self.nodes[2].listunspent(), 50)
|
||||||
listunspent = self.nodes[2].listunspent()
|
|
||||||
for aUtx in listunspent:
|
|
||||||
if aUtx['amount'] == 10:
|
|
||||||
utx = aUtx
|
|
||||||
if aUtx['amount'] == 50:
|
|
||||||
utx2 = aUtx
|
|
||||||
|
|
||||||
|
|
||||||
assert(utx!=False)
|
|
||||||
|
|
||||||
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']},{'txid' : utx2['txid'], 'vout' : utx2['vout']} ]
|
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']},{'txid' : utx2['txid'], 'vout' : utx2['vout']} ]
|
||||||
outputs = { self.nodes[0].getnewaddress() : 60, self.nodes[0].getnewaddress() : 10 }
|
outputs = { self.nodes[0].getnewaddress() : 60, self.nodes[0].getnewaddress() : 10 }
|
||||||
|
Loading…
Reference in New Issue
Block a user