diff options
Diffstat (limited to 'src/mongo/idl/server_parameter_test_util.h')
| -rw-r--r-- | src/mongo/idl/server_parameter_test_util.h | 43 |
1 files changed, 11 insertions, 32 deletions
diff --git a/src/mongo/idl/server_parameter_test_util.h b/src/mongo/idl/server_parameter_test_util.h index f7e2ae31834..566489dd1a9 100644 --- a/src/mongo/idl/server_parameter_test_util.h +++ b/src/mongo/idl/server_parameter_test_util.h @@ -36,59 +36,38 @@ namespace mongo { /** - * Test-only class that sets a server parameter to the specified value and allows - * resetting after the test completes. + * Test-only RAII type that allows to set a server parameter value during the execution of a + * unit test, or part of a unit test, and resets it to the original value on destruction. */ -class ServerParameterControllerForTest { +class RAIIServerParameterControllerForTest { public: /** * Constructor setting the server parameter to the specified value. */ template <typename T> - ServerParameterControllerForTest(const std::string& name, T value) + RAIIServerParameterControllerForTest(const std::string& name, T value) : _serverParam(ServerParameterSet::getNodeParameterSet()->get(name)) { - // Save the old value. + // Save the old value BSONObjBuilder bob; _serverParam->appendSupportingRoundtrip(nullptr, bob, name); _oldValue = bob.obj(); - // Set server param to the new value. + // Set to the new value uassertStatusOK(_serverParam->set(BSON(name << value).firstElement())); } - void reset() { - // Reset to the old value. - auto elem = _oldValue.firstElement(); - uassertStatusOK(_serverParam->set(elem)); - } - -private: - ServerParameter* _serverParam; - BSONObj _oldValue; -}; - -/** - * Test-only RAII type that wraps ServerParameterControllerForTest. Upon destruction, the server - * parameter will be set to its original value. - */ -class RAIIServerParameterControllerForTest { -public: - /** - * Constructor setting the server parameter to the specified value. - */ - template <typename T> - RAIIServerParameterControllerForTest(const std::string& name, T value) - : _serverParamController(ServerParameterControllerForTest(name, value)) {} - /** * Destructor resetting the server parameter to the original value. */ ~RAIIServerParameterControllerForTest() { - _serverParamController.reset(); + // Reset to the old value + auto elem = _oldValue.firstElement(); + uassertStatusOK(_serverParam->set(elem)); } private: - ServerParameterControllerForTest _serverParamController; + ServerParameter* _serverParam; + BSONObj _oldValue; }; } // namespace mongo |
