summaryrefslogtreecommitdiff
path: root/src/mongo/db/server_parameters.cpp
diff options
context:
space:
mode:
authorSara Golemon <sara.golemon@mongodb.com>2018-12-11 21:35:15 +0000
committerSara Golemon <sara.golemon@mongodb.com>2018-12-17 16:15:06 +0000
commitdb3a8c4daddcefc4506c010699b1f6d3dce2c910 (patch)
tree2b310be65c8463fa5ef4bfab89247d370f6700b7 /src/mongo/db/server_parameters.cpp
parentcce23861d5a0141b556b3d476812d8d5ded71d5d (diff)
downloadmongo-db3a8c4daddcefc4506c010699b1f6d3dce2c910.tar.gz
SERVER-25323 Allow marking ServerParameters as 'test only'
Diffstat (limited to 'src/mongo/db/server_parameters.cpp')
-rw-r--r--src/mongo/db/server_parameters.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/mongo/db/server_parameters.cpp b/src/mongo/db/server_parameters.cpp
index 43690937095..f0856508769 100644
--- a/src/mongo/db/server_parameters.cpp
+++ b/src/mongo/db/server_parameters.cpp
@@ -85,4 +85,36 @@ void ServerParameterSet::add(ServerParameter* sp) {
x = sp;
}
+namespace {
+class DisabledTestParameter : public ServerParameter {
+public:
+ DisabledTestParameter(StringData name, bool startup, bool runtime)
+ : ServerParameter(nullptr, name, startup, runtime) {
+ setTestOnly();
+ }
+
+ void append(OperationContext* opCtx, BSONObjBuilder& b, const std::string& name) final {}
+
+ Status setFromString(const std::string&) final {
+ return {ErrorCodes::BadValue,
+ str::stream() << "setParameter: '" << name()
+ << "' is only supported with 'enableTestCommands=true'"};
+ }
+
+ Status set(const BSONElement& newValueElement) final {
+ return setFromString("");
+ }
+};
+} // namespace
+
+void ServerParameterSet::disableTestParameters() {
+ for (auto& spit : _map) {
+ auto*& sp = spit.second;
+ if (sp->isTestOnly()) {
+ sp = new DisabledTestParameter(
+ sp->name(), sp->allowedToChangeAtStartup(), sp->allowedToChangeAtRuntime());
+ }
+ }
+}
+
} // namespace mongo