summaryrefslogtreecommitdiff
path: root/src/mongo
diff options
context:
space:
mode:
authorSara Golemon <sara.golemon@mongodb.com>2019-02-21 18:39:30 +0000
committerSara Golemon <sara.golemon@mongodb.com>2019-02-22 19:07:37 +0000
commitf78470edc935205c9d5b5c5253ff210d6f4471d3 (patch)
treebfbe14086c773b62dcbaad7d2c156b93edc7a486 /src/mongo
parentbd5bd0eff3fc852d55760ebb4c7ac62e394e8ce6 (diff)
downloadmongo-f78470edc935205c9d5b5c5253ff210d6f4471d3.tar.gz
SERVER-39724 Migrate embedded options to IDL
Diffstat (limited to 'src/mongo')
-rw-r--r--src/mongo/embedded/SConscript1
-rw-r--r--src/mongo/embedded/embedded_options.cpp45
-rw-r--r--src/mongo/embedded/embedded_options.h1
-rw-r--r--src/mongo/embedded/embedded_options.idl52
-rw-r--r--src/mongo/tools/SConscript1
-rw-r--r--src/mongo/tools/mongoebench_main.cpp1
-rw-r--r--src/mongo/tools/mongoebench_options.cpp27
-rw-r--r--src/mongo/tools/mongoebench_options.idl66
8 files changed, 139 insertions, 55 deletions
diff --git a/src/mongo/embedded/SConscript b/src/mongo/embedded/SConscript
index 664f132c121..3f7392933bb 100644
--- a/src/mongo/embedded/SConscript
+++ b/src/mongo/embedded/SConscript
@@ -79,6 +79,7 @@ env.Library(
'replication_coordinator_embedded.cpp',
'service_entry_point_embedded.cpp',
'transaction_coordinator_factory_embedded.cpp',
+ env.Idlc('embedded_options.idl')[0],
],
LIBDEPS=[
'$BUILD_DIR/mongo/base',
diff --git a/src/mongo/embedded/embedded_options.cpp b/src/mongo/embedded/embedded_options.cpp
index 8ba787b2bfd..522dea25616 100644
--- a/src/mongo/embedded/embedded_options.cpp
+++ b/src/mongo/embedded/embedded_options.cpp
@@ -34,6 +34,7 @@
#include "mongo/db/server_options_base.h"
#include "mongo/db/server_options_helpers.h"
#include "mongo/db/storage/storage_options.h"
+#include "mongo/embedded/embedded_options_gen.h"
#include <boost/filesystem.hpp>
#include <string>
@@ -49,34 +50,7 @@ Status addOptions(optionenvironment::OptionSection* options) {
return ret;
}
- moe::OptionSection storage_options("Storage options");
-
- storage_options
- .addOptionChaining(
- "storage.engine", "storageEngine", moe::String, "what storage engine to use")
- .setDefault(optionenvironment::Value("mobile"));
-
-#ifdef _WIN32
- boost::filesystem::path currentPath = boost::filesystem::current_path();
-
- std::string defaultPath = currentPath.root_name().string() + storageGlobalParams.kDefaultDbPath;
- storage_options.addOptionChaining("storage.dbPath",
- "dbpath",
- optionenvironment::String,
- std::string("directory for datafiles - defaults to ") +
- storageGlobalParams.kDefaultDbPath + " which is " +
- defaultPath + " based on the current working drive");
-
-#else
- storage_options.addOptionChaining("storage.dbPath",
- "dbpath",
- optionenvironment::String,
- std::string("directory for datafiles - defaults to ") +
- storageGlobalParams.kDefaultDbPath);
-
-#endif
-
- return options->addSection(storage_options);
+ return embedded::addStorageOptions(options);
}
Status canonicalizeOptions(optionenvironment::Environment* params) {
@@ -129,5 +103,20 @@ void resetOptions() {
storageGlobalParams.reset();
}
+std::string storageDBPathDescription() {
+ StringBuilder sb;
+
+ sb << "Directory for datafiles - defaults to " << storageGlobalParams.kDefaultDbPath;
+
+#ifdef _WIN32
+ boost::filesystem::path currentPath = boost::filesystem::current_path();
+
+ sb << " which is " << currentPath.root_name().string() << storageGlobalParams.kDefaultDbPath
+ << " based on the current working drive";
+#endif
+
+ return sb.str();
+}
+
} // namespace embedded
} // namespace mongo
diff --git a/src/mongo/embedded/embedded_options.h b/src/mongo/embedded/embedded_options.h
index e6f8fd66424..0c188efcd6d 100644
--- a/src/mongo/embedded/embedded_options.h
+++ b/src/mongo/embedded/embedded_options.h
@@ -48,6 +48,7 @@ Status canonicalizeOptions(optionenvironment::Environment* params);
Status storeOptions(const optionenvironment::Environment& params);
void resetOptions();
+std::string storageDBPathDescription();
} // namespace embedded
} // namespace mongo
diff --git a/src/mongo/embedded/embedded_options.idl b/src/mongo/embedded/embedded_options.idl
new file mode 100644
index 00000000000..070ce9aa5ce
--- /dev/null
+++ b/src/mongo/embedded/embedded_options.idl
@@ -0,0 +1,52 @@
+# Copyright (C) 2019-present MongoDB, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the Server Side Public License, version 1,
+# as published by MongoDB, Inc.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# Server Side Public License for more details.
+#
+# You should have received a copy of the Server Side Public License
+# along with this program. If not, see
+# <http://www.mongodb.com/licensing/server-side-public-license>.
+#
+# As a special exception, the copyright holders give permission to link the
+# code of portions of this program with the OpenSSL library under certain
+# conditions as described in each individual source file and distribute
+# linked combinations including the program with the OpenSSL library. You
+# must comply with the Server Side Public License in all respects for
+# all of the code used other than as permitted herein. If you modify file(s)
+# with this exception, you may extend this exception to your version of the
+# file(s), but you are not obligated to do so. If you do not wish to do so,
+# delete this exception statement from your version. If you delete this
+# exception statement from all source files in the program, then also delete
+# it in the license file.
+#
+
+global:
+ cpp_namespace: "mongo::embedded"
+ cpp_includes:
+ - "mongo/embedded/embedded_options.h"
+ configs:
+ section: 'Storage options'
+ source: [ yaml, cli, ini ]
+ initializer:
+ register: addStorageOptions
+
+configs:
+ 'storage.engine':
+ description: 'What storage engine to use'
+ short_name: storageEngine
+ arg_vartype: String
+ default: mobile
+
+ 'storage.dbPath':
+ description:
+ expr: 'storageDBPathDescription()'
+ is_constexpr: false
+ short_name: dbpath
+ arg_vartype: String
+
diff --git a/src/mongo/tools/SConscript b/src/mongo/tools/SConscript
index e27673dd9b4..5daad550c6b 100644
--- a/src/mongo/tools/SConscript
+++ b/src/mongo/tools/SConscript
@@ -40,6 +40,7 @@ mongoebench = yamlEnv.Program(
'mongoebench_main.cpp',
'mongoebench_options.cpp',
'mongoebench_options_init.cpp',
+ env.Idlc('mongoebench_options.idl')[0],
],
LIBDEPS=[
'$BUILD_DIR/mongo/db/dbdirectclient',
diff --git a/src/mongo/tools/mongoebench_main.cpp b/src/mongo/tools/mongoebench_main.cpp
index f9928cff3e0..89feb7cfb55 100644
--- a/src/mongo/tools/mongoebench_main.cpp
+++ b/src/mongo/tools/mongoebench_main.cpp
@@ -42,6 +42,7 @@
#include "mongo/scripting/bson_template_evaluator.h"
#include "mongo/shell/bench.h"
#include "mongo/tools/mongoebench_options.h"
+#include "mongo/tools/mongoebench_options_gen.h"
#include "mongo/util/exit.h"
#include "mongo/util/log.h"
#include "mongo/util/options_parser/option_section.h"
diff --git a/src/mongo/tools/mongoebench_options.cpp b/src/mongo/tools/mongoebench_options.cpp
index 755c23251f6..501966bad54 100644
--- a/src/mongo/tools/mongoebench_options.cpp
+++ b/src/mongo/tools/mongoebench_options.cpp
@@ -47,33 +47,6 @@ namespace mongo {
MongoeBenchGlobalParams mongoeBenchGlobalParams;
-Status addMongoeBenchOptions(moe::OptionSection* options) {
- options->addOptionChaining("help", "help", moe::Switch, "show this usage information");
-
- options
- ->addOptionChaining(
- "benchRunConfigFile", "benchRunConfigFile", moe::String, "config file for benchRun")
- .hidden()
- .positional(1, 1);
-
- options->addOptionChaining("seed", "seed", moe::Long, "random seed to use");
-
- options
- ->addOptionChaining(
- "threads", "threads,t", moe::Unsigned, "number of benchRun worker threads")
- .setDefault(moe::Value(1U));
-
- options->addOptionChaining("time", "time,s", moe::Double, "seconds to run benchRun for")
- .setDefault(moe::Value(1.0));
-
- options->addOptionChaining("output",
- "output,o",
- moe::String,
- "output file for benchRun stats (defaults to <dbPath>/perf.json)");
-
- return Status::OK();
-}
-
void printMongoeBenchHelp(std::ostream* out) {
*out << "Usage: mongoebench <config file> [options]" << std::endl;
*out << moe::startupOptions.helpString();
diff --git a/src/mongo/tools/mongoebench_options.idl b/src/mongo/tools/mongoebench_options.idl
new file mode 100644
index 00000000000..b86795f8790
--- /dev/null
+++ b/src/mongo/tools/mongoebench_options.idl
@@ -0,0 +1,66 @@
+# Copyright (C) 2019-present MongoDB, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the Server Side Public License, version 1,
+# as published by MongoDB, Inc.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# Server Side Public License for more details.
+#
+# You should have received a copy of the Server Side Public License
+# along with this program. If not, see
+# <http://www.mongodb.com/licensing/server-side-public-license>.
+#
+# As a special exception, the copyright holders give permission to link the
+# code of portions of this program with the OpenSSL library under certain
+# conditions as described in each individual source file and distribute
+# linked combinations including the program with the OpenSSL library. You
+# must comply with the Server Side Public License in all respects for
+# all of the code used other than as permitted herein. If you modify file(s)
+# with this exception, you may extend this exception to your version of the
+# file(s), but you are not obligated to do so. If you do not wish to do so,
+# delete this exception statement from your version. If you delete this
+# exception statement from all source files in the program, then also delete
+# it in the license file.
+#
+
+global:
+ cpp_namespace: "mongo"
+ configs:
+ source: [ cli, ini ]
+ initializer:
+ register: addMongoeBenchOptions
+
+configs:
+ help:
+ description: 'Show this usage information'
+ arg_vartype: Switch
+
+ benchRunConfigFile:
+ description: 'Config file for benchRun'
+ arg_vartype: String
+ hidden: true
+ positional: 1
+
+ seed:
+ description: 'Random seed to use'
+ arg_vartype: Long
+
+ threads:
+ description: 'Number of benchRun worker threads'
+ single_name: t
+ arg_vartype: Unsigned
+ default: { expr: '1U' }
+
+ time:
+ description: 'Seconds to run benchRun for'
+ single_name: s
+ arg_vartype: Double
+ default: 1.0
+
+ output:
+ description: 'Output file for benchRun stats (defaults to <dbPath>/perf.json)'
+ single_name: o
+ arg_vartype: String