mirror of
https://github.com/mongodb/mongo.git
synced 2024-11-28 16:24:56 +01:00
151 lines
6.3 KiB
Python
151 lines
6.3 KiB
Python
# -*- mode: python -*-
|
|
#
|
|
# This SConscript file describes the build rules for smoke tests (scons smoke,
|
|
# e.g.)
|
|
|
|
import os
|
|
from buildscripts import utils
|
|
|
|
Import( "has_option env shellEnv testEnv" )
|
|
|
|
def add_exe( v ):
|
|
return "${PROGPREFIX}%s${PROGSUFFIX}" % v
|
|
|
|
smokeEnv = testEnv.Clone()
|
|
smokeEnv['ENV']['PATH']=os.environ['PATH']
|
|
|
|
# copy in any envrionment variables beginning with MONGO_; these
|
|
# are used by buildscripts/buildlogger.py
|
|
for name, value in os.environ.items():
|
|
if name.startswith('MONGO_'):
|
|
smokeEnv['ENV'][name] = value
|
|
|
|
smokeEnv.Alias( "dummySmokeSideEffect", [], [] )
|
|
|
|
smokeFlags = []
|
|
|
|
# Ugh. Frobbing the smokeFlags must precede using them to construct
|
|
# actions, I think.
|
|
if has_option( 'smokedbprefix'):
|
|
smokeFlags += ['--smoke-db-prefix', GetOption( 'smokedbprefix')]
|
|
|
|
if 'startMongodSmallOplog' in COMMAND_LINE_TARGETS:
|
|
smokeFlags += ["--small-oplog"]
|
|
|
|
if has_option('smokeauth'):
|
|
smokeFlags += ['--auth']
|
|
|
|
def addTest(name, deps, actions):
|
|
smokeEnv.Alias( name, deps, actions )
|
|
smokeEnv.AlwaysBuild( name )
|
|
# Prevent smoke tests from running in parallel
|
|
smokeEnv.SideEffect( "dummySmokeSideEffect", name )
|
|
|
|
def addSmoketest( name, deps, extraSmokeArgs=[] ):
|
|
# Convert from smoke to test, smokeJs to js, and foo to foo
|
|
target = name
|
|
if name.startswith("smoke"):
|
|
if name == "smoke":
|
|
target = File("test").path
|
|
else:
|
|
target = name[5].lower() + name[6:]
|
|
|
|
smokeArgs = smokeFlags + [target] + extraSmokeArgs
|
|
addTest(name, deps, utils.run_smoke_command(*smokeArgs))
|
|
|
|
def addSmokeSuite( name, suitefile, needMongod=False ):
|
|
# Add a smoketest target which invokes smoke.py with
|
|
# --from-file, and passes the named suitefile as the
|
|
# command line argument.
|
|
|
|
# resolve an initial # in the suitefile
|
|
suitefile = str(env.File(suitefile))
|
|
|
|
smoke_args = ['--mode', 'files', '--from-file', suitefile]
|
|
if not needMongod:
|
|
smoke_args.append('--dont-start-mongod')
|
|
addTest(name, [suitefile], utils.run_smoke_command(*smoke_args))
|
|
|
|
addSmoketest( "smoke", [ add_exe( "test" ), add_exe( "mongod" ), add_exe( "mongo" ) ] )
|
|
addSmoketest( "smokePerf", [ add_exe("perftest") ] )
|
|
|
|
smokeClientDeps = [
|
|
add_exe('firstExample'),
|
|
add_exe('rsExample'),
|
|
add_exe('secondExample'),
|
|
add_exe('whereExample'),
|
|
add_exe('authTest'),
|
|
add_exe('httpClientTest'),
|
|
add_exe('clientTest'),
|
|
]
|
|
if has_option("sharedclient"):
|
|
smokeClientDeps += [ "sharedclient/" + name for name in smokeClientDeps ]
|
|
smokeClientDeps += [add_exe('bsondemo')]
|
|
smokeClientDeps += [add_exe('mongod'), add_exe('mongo')]
|
|
smokeClient = addSmoketest( "smokeClient", smokeClientDeps )
|
|
|
|
addSmoketest( "mongosTest", [ add_exe( 'mongos' ) ])
|
|
addSmokeSuite( "smokeCppUnittests", "$UNITTEST_LIST" )
|
|
addSmokeSuite( "smokeModuleTests", "$MODULETEST_LIST" )
|
|
|
|
# These tests require the mongo shell
|
|
if shellEnv is not None:
|
|
addSmoketest( "smokeJs", [add_exe("mongo"), add_exe("mongod")] )
|
|
addSmoketest( "smokeClone", [ add_exe("mongo"), add_exe("mongod") ] )
|
|
addSmoketest( "smokeRepl", [ add_exe("mongo"), add_exe("mongod"), add_exe("mongobridge") ] )
|
|
addSmoketest( "smokeReplSets", [ add_exe("mongo"), add_exe("mongod"), add_exe("mongobridge") ] )
|
|
addSmoketest( "smokeDur", [ add_exe( "mongo" ), add_exe( "mongod" ), add_exe('mongorestore') ] )
|
|
addSmoketest( "smokeDisk", [ add_exe( "mongo" ), add_exe( "mongod" ), add_exe( "mongodump" ), add_exe( "mongorestore" ) ] )
|
|
addSmoketest( "smokeAuth", [ add_exe( "mongo" ), add_exe( "mongod" ) ] )
|
|
addSmoketest( "smokeParallel", [ add_exe( "mongo" ), add_exe( "mongod" ) ] )
|
|
addSmoketest( "smokeSharding", [ add_exe("mongo"), add_exe("mongod"), add_exe("mongos"), add_exe('mongofiles') ] )
|
|
addSmoketest( "smokeJsPerf", [ add_exe("mongo"), add_exe("mongod") ] )
|
|
addSmoketest( "smokeJsSlowNightly", [add_exe("mongo"), add_exe("mongod"), add_exe("mongos") ])
|
|
addSmoketest( "smokeJsSlowWeekly", [add_exe("mongo"), add_exe("mongod"), add_exe("mongos") ])
|
|
addSmoketest( "smokeQuota", [ add_exe("mongo"), add_exe("mongod") ] )
|
|
addSmoketest( "smokeTool", [ add_exe( "mongo" ), add_exe("mongod"), add_exe("mongos"), "tools" ] )
|
|
addSmoketest( "smokeAggregation", [ add_exe( "mongo" ), add_exe( "mongod" ), add_exe( "mongos" ) ] )
|
|
addSmoketest( "smokeMultiVersion", [ add_exe( "mongo" ), add_exe( "mongod" ), add_exe( "mongos" ) ] )
|
|
addSmoketest( "smokeFailPoint", [ add_exe( "mongo" ), add_exe( "mongod" ), add_exe( "mongos" ) ] )
|
|
addSmoketest( "smokeSsl", [ add_exe("mongo"), add_exe("mongod"), add_exe("mongos"), "tools" ],
|
|
['--use-ssl','--use-x509'] )
|
|
|
|
addSmoketest( "smokeFailingTests", [ add_exe( "mongo" ), add_exe( "mongod" ) ], ['--only-old-fails', '--continue-on-failure'] )
|
|
addSmoketest( "smokeResetFails", [ add_exe( "mongo" ), add_exe( "mongod" ) ], ['--reset-old-fails'] )
|
|
|
|
smokeEnv.Alias( "startMongodSmallOplog", [add_exe("mongod")], [] );
|
|
smokeEnv.AlwaysBuild( "startMongodSmallOplog" );
|
|
smokeEnv.SideEffect( "dummySmokeSideEffect", "startMongodSmallOplog" )
|
|
|
|
def addMongodReqTargets( env, target, source ):
|
|
mongodReqTargets = [ "smokeClient", "smokeJs" ]
|
|
for target in mongodReqTargets:
|
|
smokeEnv.Depends( target, "startMongod" )
|
|
smokeEnv.Depends( "smokeAll", target )
|
|
|
|
smokeEnv.Alias( "addMongodReqTargets", [], [addMongodReqTargets] )
|
|
smokeEnv.AlwaysBuild( "addMongodReqTargets" )
|
|
|
|
smokeEnv.Alias( "smokeAll", [ "smoke", "mongosTest", "smokeClone", "smokeRepl", "addMongodReqTargets", "smokeDisk", "smokeAuth", "smokeSharding", "smokeTool" ] )
|
|
smokeEnv.AlwaysBuild( "smokeAll" )
|
|
|
|
def addMongodReqNoJsTargets( env, target, source ):
|
|
mongodReqTargets = [ "smokeClient" ]
|
|
for target in mongodReqTargets:
|
|
smokeEnv.Depends( target, "startMongod" )
|
|
smokeEnv.Depends( "smokeAllNoJs", target )
|
|
|
|
smokeEnv.Alias( "addMongodReqNoJsTargets", [], [addMongodReqNoJsTargets] )
|
|
smokeEnv.AlwaysBuild( "addMongodReqNoJsTargets" )
|
|
|
|
smokeEnv.Alias( "smokeAllNoJs", [ "smoke", "mongosTest", "addMongodReqNoJsTargets" ] )
|
|
smokeEnv.AlwaysBuild( "smokeAllNoJs" )
|
|
|
|
def run_shell_tests(env, target, source):
|
|
from buildscripts import test_shell
|
|
test_shell.mongo_path = windows and "mongo.exe" or "mongo"
|
|
test_shell.run_tests()
|
|
|
|
env.Alias("test_shell", [], [run_shell_tests])
|
|
env.AlwaysBuild("test_shell")
|