diff options
author | Eliot Horowitz <eliot@10gen.com> | 2012-06-12 13:57:14 -0400 |
---|---|---|
committer | Eliot Horowitz <eliot@10gen.com> | 2012-06-12 13:57:32 -0400 |
commit | 76ab87d23347fdd841624d8f15687f898647816a (patch) | |
tree | 940e870a6124192cc013fbe458b2b853942dce99 /src | |
parent | 661790cc272929dd698e2c5a5679f47ea3cf1ea8 (diff) | |
download | mongo-76ab87d23347fdd841624d8f15687f898647816a.tar.gz |
add a --runs option to dbtests
Diffstat (limited to 'src')
-rw-r--r-- | src/mongo/dbtests/framework.cpp | 4 | ||||
-rw-r--r-- | src/mongo/dbtests/perftests.cpp | 4 | ||||
-rw-r--r-- | src/mongo/unittest/unittest.cpp | 9 | ||||
-rw-r--r-- | src/mongo/unittest/unittest.h | 4 | ||||
-rw-r--r-- | src/mongo/unittest/unittest_main.cpp | 2 |
5 files changed, 13 insertions, 10 deletions
diff --git a/src/mongo/dbtests/framework.cpp b/src/mongo/dbtests/framework.cpp index 9ce7551b2bf..2500166a3f6 100644 --- a/src/mongo/dbtests/framework.cpp +++ b/src/mongo/dbtests/framework.cpp @@ -100,6 +100,7 @@ namespace mongo { int runDbTests( int argc , char** argv , string default_dbpath ) { unsigned long long seed = time( 0 ); + int runsPerTest = 1; string dbpathSpec; po::options_description shell_options("options"); @@ -120,6 +121,7 @@ namespace mongo { ("dur", "enable journaling (currently the default)") ("nodur", "disable journaling") ("seed", po::value<unsigned long long>(&seed), "random number seed") + ("runs", po::value<int>(&runsPerTest), "number of times to run each test") ("perfHist", po::value<unsigned>(&perfHist), "number of back runs of perf stats to display") ; @@ -266,7 +268,7 @@ namespace mongo { // set tlogLevel to -1 to suppress tlog() output in a test program tlogLevel = -1; - int ret = ::mongo::unittest::Suite::run(suites,filter); + int ret = ::mongo::unittest::Suite::run(suites,filter,runsPerTest); #if !defined(_WIN32) && !defined(__sunos__) flock( lockFile, LOCK_UN ); diff --git a/src/mongo/dbtests/perftests.cpp b/src/mongo/dbtests/perftests.cpp index 0edf4fdd017..1f1faa600e6 100644 --- a/src/mongo/dbtests/perftests.cpp +++ b/src/mongo/dbtests/perftests.cpp @@ -1098,9 +1098,9 @@ namespace PerfTests { public: All() : Suite( "perf" ) { } - Result * run( const string& filter ) { + Result * run( const string& filter, int runsPerTest ) { boost::thread a(t); - Result * res = Suite::run(filter); + Result * res = Suite::run(filter, runsPerTest); a.join(); return res; } diff --git a/src/mongo/unittest/unittest.cpp b/src/mongo/unittest/unittest.cpp index 3e009242535..d67ad6ff6f3 100644 --- a/src/mongo/unittest/unittest.cpp +++ b/src/mongo/unittest/unittest.cpp @@ -95,7 +95,7 @@ namespace mongo { _tests.push_back(new TestHolder(name, testFn)); } - Result * Suite::run( const std::string& filter ) { + Result * Suite::run( const std::string& filter, int runsPerTest ) { log(1) << "\t about to setupTests" << std::endl; setupTests(); @@ -123,7 +123,8 @@ namespace mongo { err << tc->getName() << "\t"; try { - tc->run(); + for ( int x=0; x<runsPerTest; x++ ) + tc->run(); passes = true; } catch ( const TestAssertionFailureException& ae ) { @@ -155,7 +156,7 @@ namespace mongo { return r; } - int Suite::run( const std::vector<std::string>& suites , const std::string& filter ) { + int Suite::run( const std::vector<std::string>& suites , const std::string& filter , int runsPerTest ) { if (_allSuites().empty()) { log() << "error: no suites registered."; @@ -187,7 +188,7 @@ namespace mongo { fassert( 16145, s ); log() << "going to run suite: " << name << std::endl; - results.push_back( s->run( filter ) ); + results.push_back( s->run( filter, runsPerTest ) ); } log() << "**************************************************" << std::endl; diff --git a/src/mongo/unittest/unittest.h b/src/mongo/unittest/unittest.h index bccda07ecc9..67277c4cd87 100644 --- a/src/mongo/unittest/unittest.h +++ b/src/mongo/unittest/unittest.h @@ -216,9 +216,9 @@ namespace mongo { void add(const std::string& name, const TestFunction& testFn); - Result * run( const std::string& filter ); + Result * run( const std::string& filter , int runsPerTest ); - static int run( const std::vector<std::string>& suites , const std::string& filter ); + static int run( const std::vector<std::string>& suites , const std::string& filter , int runsPerTest ); /** * Get a suite with the given name, creating it if necessary. diff --git a/src/mongo/unittest/unittest_main.cpp b/src/mongo/unittest/unittest_main.cpp index 7f685ae4362..69113627564 100644 --- a/src/mongo/unittest/unittest_main.cpp +++ b/src/mongo/unittest/unittest_main.cpp @@ -6,7 +6,7 @@ #include "mongo/unittest/unittest.h" int main( int argc, char **argv ) { - return ::mongo::unittest::Suite::run(std::vector<std::string>(), ""); + return ::mongo::unittest::Suite::run(std::vector<std::string>(), "", 1); } void mongo::unittest::onCurrentTestNameChange( const std::string &testName ) {} |