diff options
author | Sara Golemon <sara.golemon@mongodb.com> | 2018-12-11 21:35:15 +0000 |
---|---|---|
committer | Sara Golemon <sara.golemon@mongodb.com> | 2018-12-17 16:15:06 +0000 |
commit | db3a8c4daddcefc4506c010699b1f6d3dce2c910 (patch) | |
tree | 2b310be65c8463fa5ef4bfab89247d370f6700b7 /src/mongo/db/server_parameters.cpp | |
parent | cce23861d5a0141b556b3d476812d8d5ded71d5d (diff) | |
download | mongo-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.cpp | 32 |
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 |