@ -40,15 +40,6 @@ if 'ENABLE_UTILS' not in vars():
ENABLE_UTILS = 0
ENABLE_UTILS = 0
if ' ENABLE_ZMQ ' not in vars ( ) :
if ' ENABLE_ZMQ ' not in vars ( ) :
ENABLE_ZMQ = 0
ENABLE_ZMQ = 0
# python-zmq may not be installed. Handle this gracefully and with some helpful info
if ENABLE_ZMQ :
try :
import zmq
except ImportError :
print ( " WARNING: \" import zmq \" failed. Setting ENABLE_ZMQ=0. " \
" To run zmq tests, see dependency info in /qa/README.md. " )
ENABLE_ZMQ = 0
ENABLE_COVERAGE = 0
ENABLE_COVERAGE = 0
@ -76,11 +67,25 @@ if "BITCOIND" not in os.environ:
if " BITCOINCLI " not in os . environ :
if " BITCOINCLI " not in os . environ :
os . environ [ " BITCOINCLI " ] = buildDir + ' /src/bitcoin-cli ' + EXEEXT
os . environ [ " BITCOINCLI " ] = buildDir + ' /src/bitcoin-cli ' + EXEEXT
#Disable Windows tests by default
if EXEEXT == " .exe " and " -win " not in opts :
if EXEEXT == " .exe " and " -win " not in opts :
print " Win tests currently disabled. Use -win option to enable "
# https://github.com/bitcoin/bitcoin/commit/d52802551752140cf41f0d9a225a43e84404d3e9
# https://github.com/bitcoin/bitcoin/pull/5677#issuecomment-136646964
print " Win tests currently disabled by default. Use -win option to enable "
sys . exit ( 0 )
if not ( ENABLE_WALLET == 1 and ENABLE_UTILS == 1 and ENABLE_BITCOIND == 1 ) :
print " No rpc tests to run. Wallet, utils, and bitcoind must all be enabled "
sys . exit ( 0 )
sys . exit ( 0 )
# python-zmq may not be installed. Handle this gracefully and with some helpful info
if ENABLE_ZMQ :
try :
import zmq
except ImportError as e :
print ( " ERROR: \" import zmq \" failed. Set ENABLE_ZMQ=0 or " \
" to run zmq tests, see dependency info in /qa/README.md. " )
raise e
#Tests
#Tests
testScripts = [
testScripts = [
' bip68-112-113-p2p.py ' ,
' bip68-112-113-p2p.py ' ,
@ -119,6 +124,9 @@ testScripts = [
' p2p-versionbits-warning.py ' ,
' p2p-versionbits-warning.py ' ,
' importprunedfunds.py ' ,
' importprunedfunds.py ' ,
]
]
if ENABLE_ZMQ :
testScripts . append ( ' zmq_test.py ' )
testScriptsExt = [
testScriptsExt = [
' bip9-softforks.py ' ,
' bip9-softforks.py ' ,
' bip65-cltv.py ' ,
' bip65-cltv.py ' ,
@ -143,11 +151,6 @@ testScriptsExt = [
' pruning.py ' , # leave pruning last as it takes a REALLY long time
' pruning.py ' , # leave pruning last as it takes a REALLY long time
]
]
#Enable ZMQ tests
if ENABLE_ZMQ == 1 :
testScripts . append ( ' zmq_test.py ' )
def runtests ( ) :
def runtests ( ) :
coverage = None
coverage = None
@ -155,53 +158,49 @@ def runtests():
coverage = RPCCoverage ( )
coverage = RPCCoverage ( )
print ( " Initializing coverage directory at %s \n " % coverage . dir )
print ( " Initializing coverage directory at %s \n " % coverage . dir )
if ( ENABLE_WALLET == 1 and ENABLE_UTILS == 1 and ENABLE_BITCOIND == 1 ) :
rpcTestDir = buildDir + ' /qa/rpc-tests/ '
rpcTestDir = buildDir + ' /qa/rpc-tests/ '
run_extended = ' -extended ' in opts
run_extended = ' -extended ' in opts
cov_flag = coverage . flag if coverage else ' '
cov_flag = coverage . flag if coverage else ' '
flags = " --srcdir %s /src %s %s " % ( buildDir , cov_flag , passOn )
flags = " --srcdir %s /src %s %s " % ( buildDir , cov_flag , passOn )
#Run Tests
#Run Tests
for i in range ( len ( testScripts ) ) :
for i in range ( len ( testScripts ) ) :
if ( len ( opts ) == 0
if ( len ( opts ) == 0
or ( len ( opts ) == 1 and " -win " in opts )
or ( len ( opts ) == 1 and " -win " in opts )
or run_extended
or run_extended
or testScripts [ i ] in opts
or testScripts [ i ] in opts
or re . sub ( " .py$ " , " " , testScripts [ i ] ) in opts ) :
or re . sub ( " .py$ " , " " , testScripts [ i ] ) in opts ) :
print ( " Running testscript %s %s %s ... " % ( bold [ 1 ] , testScripts [ i ] , bold [ 0 ] ) )
print ( " Running testscript %s %s %s ... " % ( bold [ 1 ] , testScripts [ i ] , bold [ 0 ] ) )
time0 = time . time ( )
time0 = time . time ( )
subprocess . check_call (
subprocess . check_call (
rpcTestDir + testScripts [ i ] + flags , shell = True )
rpcTestDir + testScripts [ i ] + flags , shell = True )
print ( " Duration: %s s \n " % ( int ( time . time ( ) - time0 ) ) )
print ( " Duration: %s s \n " % ( int ( time . time ( ) - time0 ) ) )
# exit if help is called so we print just one set of
# exit if help is called so we print just one set of
# instructions
# instructions
p = re . compile ( " -h| --help " )
p = re . compile ( " -h| --help " )
if p . match ( passOn ) :
if p . match ( passOn ) :
sys . exit ( 0 )
sys . exit ( 0 )
# Run Extended Tests
# Run Extended Tests
for i in range ( len ( testScriptsExt ) ) :
for i in range ( len ( testScriptsExt ) ) :
if ( run_extended or testScriptsExt [ i ] in opts
if ( run_extended or testScriptsExt [ i ] in opts
or re . sub ( " .py$ " , " " , testScriptsExt [ i ] ) in opts ) :
or re . sub ( " .py$ " , " " , testScriptsExt [ i ] ) in opts ) :
print (
print (
" Running 2nd level testscript "
" Running 2nd level testscript "
+ " %s %s %s ... " % ( bold [ 1 ] , testScriptsExt [ i ] , bold [ 0 ] ) )
+ " %s %s %s ... " % ( bold [ 1 ] , testScriptsExt [ i ] , bold [ 0 ] ) )
time0 = time . time ( )
time0 = time . time ( )
subprocess . check_call (
subprocess . check_call (
rpcTestDir + testScriptsExt [ i ] + flags , shell = True )
rpcTestDir + testScriptsExt [ i ] + flags , shell = True )
print ( " Duration: %s s \n " % ( int ( time . time ( ) - time0 ) ) )
print ( " Duration: %s s \n " % ( int ( time . time ( ) - time0 ) ) )
if coverage :
if coverage :
coverage . report_rpc_coverage ( )
coverage . report_rpc_coverage ( )
print ( " Cleaning up coverage data " )
print ( " Cleaning up coverage data " )
coverage . cleanup ( )
coverage . cleanup ( )
else :
print " No rpc tests to run. Wallet, utils, and bitcoind must all be enabled "
class RPCCoverage ( object ) :
class RPCCoverage ( object ) :