summaryrefslogtreecommitdiff
path: root/SConscript.smoke
diff options
context:
space:
mode:
Diffstat (limited to 'SConscript.smoke')
-rw-r--r--SConscript.smoke117
1 files changed, 117 insertions, 0 deletions
diff --git a/SConscript.smoke b/SConscript.smoke
new file mode 100644
index 00000000000..1a7f6196cde
--- /dev/null
+++ b/SConscript.smoke
@@ -0,0 +1,117 @@
+# -*- mode: python -*-
+#
+# This SConscript file describes the build rules for smoke tests (scons smoke,
+# e.g.)
+
+import os
+
+Import( "has_option env shellEnv testEnv" )
+
+def add_exe( v ):
+ return "${PROGPREFIX}%s${PROGSUFFIX}" % v
+
+smokeEnv = testEnv.Clone()
+smokeEnv['ENV']['PATH']=os.environ['PATH']
+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"]
+
+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 ):
+ # 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:]
+
+ addTest(name, deps, [ "python buildscripts/smoke.py " + " ".join(smokeFlags) + ' ' + target ])
+
+addSmoketest( "smoke", [ add_exe( "test" ), add_exe( "mongod" ), add_exe( "mongo" ) ] )
+addSmoketest( "smokePerf", [ add_exe("perftest") ] )
+addSmoketest( "smokeClient", [
+ add_exe('firstExample'),
+ add_exe('rsExample'),
+ add_exe('secondExample'),
+ add_exe('whereExample'),
+ add_exe('authTest'),
+ add_exe('httpClientTest'),
+ add_exe('bsondemo'),
+ add_exe('clientTest'),
+ ] )
+addSmoketest( "mongosTest", [ add_exe( 'mongos' ) ])
+
+# These tests require the mongo shell
+if shellEnv is not None:
+ addSmoketest( "smokeJs", [add_exe("mongo")] )
+ 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") ] )
+ addSmoketest( "smokeJsPerf", [ add_exe("mongo") ] )
+ addSmoketest( "smokeJsSlowNightly", [add_exe("mongo")])
+ addSmoketest( "smokeJsSlowWeekly", [add_exe("mongo")])
+ addSmoketest( "smokeQuota", [ add_exe("mongo") ] )
+ addSmoketest( "smokeTool", [ add_exe( "mongo" ), add_exe("mongod"), add_exe("mongos"), "tools" ] )
+
+# Note: although the test running logic has been moved to
+# buildscripts/smoke.py, the interface to running the tests has been
+# something like 'scons startMongod <suite>'; startMongod is now a
+# no-op, and should go away eventually.
+smokeEnv.Alias( "startMongod", [add_exe("mongod")]);
+smokeEnv.AlwaysBuild( "startMongod" );
+smokeEnv.SideEffect( "dummySmokeSideEffect", "startMongod" )
+
+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")