summaryrefslogtreecommitdiff
path: root/src/mongo/dbtests/framework.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/dbtests/framework.cpp')
-rw-r--r--src/mongo/dbtests/framework.cpp158
1 files changed, 80 insertions, 78 deletions
diff --git a/src/mongo/dbtests/framework.cpp b/src/mongo/dbtests/framework.cpp
index d91e7012cea..4b645fd537b 100644
--- a/src/mongo/dbtests/framework.cpp
+++ b/src/mongo/dbtests/framework.cpp
@@ -61,102 +61,104 @@ namespace moe = mongo::optionenvironment;
namespace mongo {
- using std::endl;
- using std::string;
-
- namespace dbtests {
-
- stdx::mutex globalCurrentTestNameMutex;
- std::string globalCurrentTestName;
-
- class TestWatchDog : public BackgroundJob {
- public:
- virtual string name() const { return "TestWatchDog"; }
- virtual void run(){
-
- int minutesRunning = 0;
- std::string lastRunningTestName, currentTestName;
-
- {
- stdx::lock_guard<stdx::mutex> lk( globalCurrentTestNameMutex );
- lastRunningTestName = globalCurrentTestName;
- }
-
- while (true) {
- sleepsecs(60);
- minutesRunning++;
-
- {
- stdx::lock_guard<stdx::mutex> lk( globalCurrentTestNameMutex );
- currentTestName = globalCurrentTestName;
- }
-
- if (currentTestName != lastRunningTestName) {
- minutesRunning = 0;
- lastRunningTestName = currentTestName;
- }
-
- if (minutesRunning > 30){
- log() << currentTestName << " has been running for more than 30 minutes. aborting." << endl;
- ::abort();
- }
- else if (minutesRunning > 1){
- warning() << currentTestName << " has been running for more than " << minutesRunning-1 << " minutes." << endl;
-
- // See what is stuck
- getGlobalLockManager()->dump();
- }
- }
- }
- };
+using std::endl;
+using std::string;
- int runDbTests(int argc, char** argv) {
- frameworkGlobalParams.perfHist = 1;
- frameworkGlobalParams.seed = time( 0 );
- frameworkGlobalParams.runsPerTest = 1;
+namespace dbtests {
- Client::initThread("testsuite");
+stdx::mutex globalCurrentTestNameMutex;
+std::string globalCurrentTestName;
- srand( (unsigned) frameworkGlobalParams.seed );
- printGitVersion();
- printOpenSSLVersion();
+class TestWatchDog : public BackgroundJob {
+public:
+ virtual string name() const {
+ return "TestWatchDog";
+ }
+ virtual void run() {
+ int minutesRunning = 0;
+ std::string lastRunningTestName, currentTestName;
- getGlobalServiceContext()->initializeGlobalStorageEngine();
+ {
+ stdx::lock_guard<stdx::mutex> lk(globalCurrentTestNameMutex);
+ lastRunningTestName = globalCurrentTestName;
+ }
- // Initialize the sharding state so we can run starding tests in isolation
- shardingState.initialize("$dummy:10000");
+ while (true) {
+ sleepsecs(60);
+ minutesRunning++;
- // Note: ShardingState::initialize also initializes the distLockMgr.
- auto distLockMgr = dynamic_cast<LegacyDistLockManager*>(
- grid.catalogManager()->getDistLockManager());
- if (distLockMgr) {
- distLockMgr->enablePinger(false);
+ {
+ stdx::lock_guard<stdx::mutex> lk(globalCurrentTestNameMutex);
+ currentTestName = globalCurrentTestName;
}
- TestWatchDog twd;
- twd.go();
-
- int ret = ::mongo::unittest::Suite::run(frameworkGlobalParams.suites,
- frameworkGlobalParams.filter,
- frameworkGlobalParams.runsPerTest);
+ if (currentTestName != lastRunningTestName) {
+ minutesRunning = 0;
+ lastRunningTestName = currentTestName;
+ }
+ if (minutesRunning > 30) {
+ log() << currentTestName << " has been running for more than 30 minutes. aborting."
+ << endl;
+ ::abort();
+ } else if (minutesRunning > 1) {
+ warning() << currentTestName << " has been running for more than "
+ << minutesRunning - 1 << " minutes." << endl;
- exitCleanly( (ExitCode)ret ); // so everything shuts down cleanly
- return ret;
+ // See what is stuck
+ getGlobalLockManager()->dump();
+ }
}
- } // namespace dbtests
+ }
+};
+
+int runDbTests(int argc, char** argv) {
+ frameworkGlobalParams.perfHist = 1;
+ frameworkGlobalParams.seed = time(0);
+ frameworkGlobalParams.runsPerTest = 1;
+
+ Client::initThread("testsuite");
+
+ srand((unsigned)frameworkGlobalParams.seed);
+ printGitVersion();
+ printOpenSSLVersion();
+
+ getGlobalServiceContext()->initializeGlobalStorageEngine();
+
+ // Initialize the sharding state so we can run starding tests in isolation
+ shardingState.initialize("$dummy:10000");
+
+ // Note: ShardingState::initialize also initializes the distLockMgr.
+ auto distLockMgr =
+ dynamic_cast<LegacyDistLockManager*>(grid.catalogManager()->getDistLockManager());
+ if (distLockMgr) {
+ distLockMgr->enablePinger(false);
+ }
+
+ TestWatchDog twd;
+ twd.go();
+
+ int ret = ::mongo::unittest::Suite::run(frameworkGlobalParams.suites,
+ frameworkGlobalParams.filter,
+ frameworkGlobalParams.runsPerTest);
+
+
+ exitCleanly((ExitCode)ret); // so everything shuts down cleanly
+ return ret;
+}
+} // namespace dbtests
#ifdef _WIN32
namespace ntservice {
- bool shouldStartService() {
- return false;
- }
+bool shouldStartService() {
+ return false;
+}
}
#endif
} // namespace mongo
-void mongo::unittest::onCurrentTestNameChange( const std::string &testName ) {
- stdx::lock_guard<stdx::mutex> lk( mongo::dbtests::globalCurrentTestNameMutex );
+void mongo::unittest::onCurrentTestNameChange(const std::string& testName) {
+ stdx::lock_guard<stdx::mutex> lk(mongo::dbtests::globalCurrentTestNameMutex);
mongo::dbtests::globalCurrentTestName = testName;
}