diff options
Diffstat (limited to 'src/mongo/dbtests/framework_options.cpp')
-rw-r--r-- | src/mongo/dbtests/framework_options.cpp | 288 |
1 files changed, 143 insertions, 145 deletions
diff --git a/src/mongo/dbtests/framework_options.cpp b/src/mongo/dbtests/framework_options.cpp index 2e8daff0aff..fcdd6e57317 100644 --- a/src/mongo/dbtests/framework_options.cpp +++ b/src/mongo/dbtests/framework_options.cpp @@ -46,197 +46,195 @@ namespace mongo { - using std::cout; - using std::endl; - using std::string; - using std::vector; +using std::cout; +using std::endl; +using std::string; +using std::vector; - FrameworkGlobalParams frameworkGlobalParams; +FrameworkGlobalParams frameworkGlobalParams; - Status addTestFrameworkOptions(moe::OptionSection* options) { +Status addTestFrameworkOptions(moe::OptionSection* options) { + options->addOptionChaining("help", "help,h", moe::Switch, "show this usage information"); - options->addOptionChaining("help", "help,h", moe::Switch, "show this usage information"); + options->addOptionChaining( + "dbpath", + "dbpath", + moe::String, + "db data path for this test run. NOTE: the contents of this directory will " + "be overwritten if it already exists") + .setDefault(moe::Value(dbtests::default_test_dbpath)); - options->addOptionChaining("dbpath", "dbpath", moe::String, - "db data path for this test run. NOTE: the contents of this directory will " - "be overwritten if it already exists") - .setDefault(moe::Value(dbtests::default_test_dbpath)); + options->addOptionChaining("debug", "debug", moe::Switch, "run tests with verbose output"); - options->addOptionChaining("debug", "debug", moe::Switch, "run tests with verbose output"); + options->addOptionChaining("list", "list,l", moe::Switch, "list available test suites"); - options->addOptionChaining("list", "list,l", moe::Switch, "list available test suites"); + options->addOptionChaining("bigfiles", + "bigfiles", + moe::Switch, + "use big datafiles instead of smallfiles which is the default"); - options->addOptionChaining("bigfiles", "bigfiles", moe::Switch, - "use big datafiles instead of smallfiles which is the default"); + options->addOptionChaining( + "filter", "filter,f", moe::String, "string substring filter on test name"); - options->addOptionChaining("filter", "filter,f", moe::String, - "string substring filter on test name"); + options->addOptionChaining("verbose", "verbose,v", moe::Switch, "verbose"); - options->addOptionChaining("verbose", "verbose,v", moe::Switch, "verbose"); + options->addOptionChaining( + "dur", "dur", moe::Switch, "enable journaling (currently the default)"); - options->addOptionChaining("dur", "dur", moe::Switch, - "enable journaling (currently the default)"); + options->addOptionChaining("nodur", "nodur", moe::Switch, "disable journaling"); - options->addOptionChaining("nodur", "nodur", moe::Switch, "disable journaling"); + options->addOptionChaining("seed", "seed", moe::UnsignedLongLong, "random number seed"); - options->addOptionChaining("seed", "seed", moe::UnsignedLongLong, "random number seed"); + options->addOptionChaining("runs", "runs", moe::Int, "number of times to run each test"); - options->addOptionChaining("runs", "runs", moe::Int, "number of times to run each test"); + options->addOptionChaining( + "perfHist", "perfHist", moe::Unsigned, "number of back runs of perf stats to display"); - options->addOptionChaining("perfHist", "perfHist", moe::Unsigned, - "number of back runs of perf stats to display"); + options->addOptionChaining( + "storage.engine", "storageEngine", moe::String, "what storage engine to use") + .setDefault(moe::Value(std::string("wiredTiger"))); - options->addOptionChaining("storage.engine", "storageEngine", moe::String, - "what storage engine to use") - .setDefault(moe::Value(std::string("wiredTiger"))); + options->addOptionChaining("suites", "suites", moe::StringVector, "test suites to run") + .hidden() + .positional(1, -1); - options->addOptionChaining("suites", "suites", moe::StringVector, "test suites to run") - .hidden() - .positional(1, -1); + options->addOptionChaining( + "nopreallocj", "nopreallocj", moe::Switch, "disable journal prealloc").hidden(); - options->addOptionChaining("nopreallocj", "nopreallocj", moe::Switch, - "disable journal prealloc") - .hidden(); + return Status::OK(); +} - return Status::OK(); - } +std::string getTestFrameworkHelp(StringData name, const moe::OptionSection& options) { + StringBuilder sb; + sb << "usage: " << name << " [options] [suite]...\n" << options.helpString() + << "suite: run the specified test suite(s) only\n"; + return sb.str(); +} - std::string getTestFrameworkHelp(StringData name, const moe::OptionSection& options) { - StringBuilder sb; - sb << "usage: " << name << " [options] [suite]...\n" - << options.helpString() << "suite: run the specified test suite(s) only\n"; - return sb.str(); +bool handlePreValidationTestFrameworkOptions(const moe::Environment& params, + const std::vector<std::string>& args) { + if (params.count("help")) { + std::cout << getTestFrameworkHelp(args[0], moe::startupOptions) << std::endl; + return false; } - bool handlePreValidationTestFrameworkOptions(const moe::Environment& params, - const std::vector<std::string>& args) { - if (params.count("help")) { - std::cout << getTestFrameworkHelp(args[0], moe::startupOptions) << std::endl; - return false; + if (params.count("list")) { + std::vector<std::string> suiteNames = mongo::unittest::getAllSuiteNames(); + for (std::vector<std::string>::const_iterator i = suiteNames.begin(); i != suiteNames.end(); + ++i) { + std::cout << *i << std::endl; } + return false; + } - if (params.count("list")) { - std::vector<std::string> suiteNames = mongo::unittest::getAllSuiteNames(); - for ( std::vector<std::string>::const_iterator i = suiteNames.begin(); - i != suiteNames.end(); ++i ) { - - std::cout << *i << std::endl; - } - return false; - } + return true; +} - return true; +Status storeTestFrameworkOptions(const moe::Environment& params, + const std::vector<std::string>& args) { + if (params.count("dbpath")) { + frameworkGlobalParams.dbpathSpec = params["dbpath"].as<string>(); } - Status storeTestFrameworkOptions(const moe::Environment& params, - const std::vector<std::string>& args) { - - if (params.count("dbpath")) { - frameworkGlobalParams.dbpathSpec = params["dbpath"].as<string>(); - } + if (params.count("seed")) { + frameworkGlobalParams.seed = params["seed"].as<unsigned long long>(); + } - if (params.count("seed")) { - frameworkGlobalParams.seed = params["seed"].as<unsigned long long>(); - } + if (params.count("runs")) { + frameworkGlobalParams.runsPerTest = params["runs"].as<int>(); + } - if (params.count("runs")) { - frameworkGlobalParams.runsPerTest = params["runs"].as<int>(); - } + if (params.count("perfHist")) { + frameworkGlobalParams.perfHist = params["perfHist"].as<unsigned>(); + } - if (params.count("perfHist")) { - frameworkGlobalParams.perfHist = params["perfHist"].as<unsigned>(); - } + bool nodur = false; + if (params.count("nodur")) { + nodur = true; + storageGlobalParams.dur = false; + } + if (params.count("dur") || storageGlobalParams.dur) { + storageGlobalParams.dur = true; + } - bool nodur = false; - if( params.count("nodur") ) { - nodur = true; - storageGlobalParams.dur = false; - } - if( params.count("dur") || storageGlobalParams.dur ) { - storageGlobalParams.dur = true; - } + if (params.count("nopreallocj")) { + mmapv1GlobalOptions.preallocj = false; + } - if( params.count("nopreallocj") ) { - mmapv1GlobalOptions.preallocj = false; - } + if (params.count("debug") || params.count("verbose")) { + logger::globalLogDomain()->setMinimumLoggedSeverity(logger::LogSeverity::Debug(1)); + } - if (params.count("debug") || params.count("verbose") ) { - logger::globalLogDomain()->setMinimumLoggedSeverity(logger::LogSeverity::Debug(1)); - } + boost::filesystem::path p(frameworkGlobalParams.dbpathSpec); - boost::filesystem::path p(frameworkGlobalParams.dbpathSpec); - - /* remove the contents of the test directory if it exists. */ - try { - if (boost::filesystem::exists(p)) { - if (!boost::filesystem::is_directory(p)) { - StringBuilder sb; - sb << "ERROR: path \"" << p.string() << "\" is not a directory"; - sb << getTestFrameworkHelp(args[0], moe::startupOptions); - return Status(ErrorCodes::BadValue, sb.str()); - } - boost::filesystem::directory_iterator end_iter; - for (boost::filesystem::directory_iterator dir_iter(p); - dir_iter != end_iter; ++dir_iter) { - boost::filesystem::remove_all(*dir_iter); - } + /* remove the contents of the test directory if it exists. */ + try { + if (boost::filesystem::exists(p)) { + if (!boost::filesystem::is_directory(p)) { + StringBuilder sb; + sb << "ERROR: path \"" << p.string() << "\" is not a directory"; + sb << getTestFrameworkHelp(args[0], moe::startupOptions); + return Status(ErrorCodes::BadValue, sb.str()); } - else { - boost::filesystem::create_directory(p); + boost::filesystem::directory_iterator end_iter; + for (boost::filesystem::directory_iterator dir_iter(p); dir_iter != end_iter; + ++dir_iter) { + boost::filesystem::remove_all(*dir_iter); } + } else { + boost::filesystem::create_directory(p); } - catch (const boost::filesystem::filesystem_error& e) { - StringBuilder sb; - sb << "boost::filesystem threw exception: " << e.what(); - return Status(ErrorCodes::BadValue, sb.str()); - } - - string dbpathString = p.string(); - storageGlobalParams.dbpath = dbpathString.c_str(); + } catch (const boost::filesystem::filesystem_error& e) { + StringBuilder sb; + sb << "boost::filesystem threw exception: " << e.what(); + return Status(ErrorCodes::BadValue, sb.str()); + } - mmapv1GlobalOptions.prealloc = false; + string dbpathString = p.string(); + storageGlobalParams.dbpath = dbpathString.c_str(); - // dbtest defaults to smallfiles - mmapv1GlobalOptions.smallfiles = true; - if( params.count("bigfiles") ) { - storageGlobalParams.dur = true; - } + mmapv1GlobalOptions.prealloc = false; - DEV log() << "DEBUG build" << endl; - if( sizeof(void*)==4 ) - log() << "32bit" << endl; - log() << "random seed: " << frameworkGlobalParams.seed << endl; - - if( time(0) % 3 == 0 && !nodur ) { - if (!storageGlobalParams.dur) { - storageGlobalParams.dur = true; - log() << "****************" << endl; - log() << "running with journaling enabled to test that. dbtests will do this " - << "occasionally even if --dur is not specified." << endl; - log() << "****************" << endl; - } - } + // dbtest defaults to smallfiles + mmapv1GlobalOptions.smallfiles = true; + if (params.count("bigfiles")) { + storageGlobalParams.dur = true; + } - storageGlobalParams.engine = params["storage.engine"].as<string>(); + DEV log() << "DEBUG build" << endl; + if (sizeof(void*) == 4) + log() << "32bit" << endl; + log() << "random seed: " << frameworkGlobalParams.seed << endl; - if (params.count("suites")) { - frameworkGlobalParams.suites = params["suites"].as< vector<string> >(); + if (time(0) % 3 == 0 && !nodur) { + if (!storageGlobalParams.dur) { + storageGlobalParams.dur = true; + log() << "****************" << endl; + log() << "running with journaling enabled to test that. dbtests will do this " + << "occasionally even if --dur is not specified." << endl; + log() << "****************" << endl; } + } - frameworkGlobalParams.filter = ""; - if ( params.count( "filter" ) ) { - frameworkGlobalParams.filter = params["filter"].as<string>(); - } + storageGlobalParams.engine = params["storage.engine"].as<string>(); - if (kDebugBuild && storageGlobalParams.dur) { - log() << "Debug Build: automatically enabling mmapv1GlobalOptions.journalOptions=8 " - << "(JournalParanoid)" << endl; - // this was commented out. why too slow or something? - mmapv1GlobalOptions.journalOptions |= MMAPV1Options::JournalParanoid; - } + if (params.count("suites")) { + frameworkGlobalParams.suites = params["suites"].as<vector<string>>(); + } - return Status::OK(); + frameworkGlobalParams.filter = ""; + if (params.count("filter")) { + frameworkGlobalParams.filter = params["filter"].as<string>(); } + if (kDebugBuild && storageGlobalParams.dur) { + log() << "Debug Build: automatically enabling mmapv1GlobalOptions.journalOptions=8 " + << "(JournalParanoid)" << endl; + // this was commented out. why too slow or something? + mmapv1GlobalOptions.journalOptions |= MMAPV1Options::JournalParanoid; + } + + return Status::OK(); +} } |