summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEliot Horowitz <eliot@10gen.com>2012-06-12 13:57:14 -0400
committerEliot Horowitz <eliot@10gen.com>2012-06-12 13:57:32 -0400
commit76ab87d23347fdd841624d8f15687f898647816a (patch)
tree940e870a6124192cc013fbe458b2b853942dce99 /src
parent661790cc272929dd698e2c5a5679f47ea3cf1ea8 (diff)
downloadmongo-76ab87d23347fdd841624d8f15687f898647816a.tar.gz
add a --runs option to dbtests
Diffstat (limited to 'src')
-rw-r--r--src/mongo/dbtests/framework.cpp4
-rw-r--r--src/mongo/dbtests/perftests.cpp4
-rw-r--r--src/mongo/unittest/unittest.cpp9
-rw-r--r--src/mongo/unittest/unittest.h4
-rw-r--r--src/mongo/unittest/unittest_main.cpp2
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 ) {}