diff options
author | Varun Ravichandran <varun.ravichandran@mongodb.com> | 2022-04-05 20:41:24 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-04-07 04:40:40 +0000 |
commit | df9851154bc9847dc6a736dcdb0e85c2176d0520 (patch) | |
tree | 9fa02afd6a1fedb0d43c85a29116f58a056ebfa7 /src/mongo/idl | |
parent | 74076ecb661127f73990cfca898fcf9b914aabd5 (diff) | |
download | mongo-df9851154bc9847dc6a736dcdb0e85c2176d0520.tar.gz |
SERVER-65128: Improve integration testing and address bugs in setClusterParameter
Diffstat (limited to 'src/mongo/idl')
-rw-r--r-- | src/mongo/idl/server_parameter_specialized_test.cpp | 16 | ||||
-rw-r--r-- | src/mongo/idl/server_parameter_specialized_test.h | 16 | ||||
-rw-r--r-- | src/mongo/idl/server_parameter_with_storage.h | 3 |
3 files changed, 27 insertions, 8 deletions
diff --git a/src/mongo/idl/server_parameter_specialized_test.cpp b/src/mongo/idl/server_parameter_specialized_test.cpp index 611af89335f..36a28fc7bf5 100644 --- a/src/mongo/idl/server_parameter_specialized_test.cpp +++ b/src/mongo/idl/server_parameter_specialized_test.cpp @@ -433,9 +433,8 @@ TEST(SpecializedServerParameter, withValidate) { void SpecializedClusterServerParameter::append(OperationContext*, BSONObjBuilder& builder, const std::string& name) { - BSONObjBuilder subObjBuilder = builder.subobjStart(name); - _data.serialize(&subObjBuilder); - subObjBuilder.done(); + builder.append("_id"_sd, name); + builder.appendElementsUnique(_data.toBSON()); } Status SpecializedClusterServerParameter::set(const BSONElement& newValueElement) { @@ -488,6 +487,7 @@ TEST(SpecializedServerParameter, clusterServerParameter) { data.setClusterParameterTime(updateTime); data.setIntData(50); data.setStrData("hello"); + data.setId(kSpecializedCSPName); data.serialize(&builder); ASSERT_OK(specializedCsp->set(builder.asTempObj())); @@ -500,8 +500,9 @@ TEST(SpecializedServerParameter, clusterServerParameter) { // Assert that the parameter can be appended to a builder. builder.resetToEmpty(); specializedCsp->append(nullptr, builder, kSpecializedCSPName.toString()); - auto obj = builder.asTempObj()["specializedCluster"_sd].Obj(); - ASSERT_EQ(obj.nFields(), 3); + auto obj = builder.asTempObj(); + ASSERT_EQ(obj.nFields(), 4); + ASSERT_EQ(obj["_id"_sd].String(), kSpecializedCSPName); ASSERT_EQ(obj["clusterParameterTime"_sd].timestamp(), updateTime.asTimestamp()); ASSERT_EQ(obj["strData"_sd].String(), "hello"); ASSERT_EQ(obj["intData"_sd].Int(), 50); @@ -520,8 +521,9 @@ TEST(SpecializedServerParameter, clusterServerParameter) { builder.resetToEmpty(); ASSERT_OK(specializedCsp->reset()); specializedCsp->append(nullptr, builder, kSpecializedCSPName.toString()); - obj = builder.asTempObj()["specializedCluster"_sd].Obj(); - ASSERT_EQ(obj.nFields(), 3); + obj = builder.asTempObj(); + ASSERT_EQ(obj.nFields(), 4); + ASSERT_EQ(obj["_id"_sd].String(), kSpecializedCSPName); ASSERT_EQ(obj["clusterParameterTime"_sd].timestamp(), LogicalTime().asTimestamp()); ASSERT_EQ(obj["strData"_sd].String(), "default"); ASSERT_EQ(obj["intData"_sd].Int(), 30); diff --git a/src/mongo/idl/server_parameter_specialized_test.h b/src/mongo/idl/server_parameter_specialized_test.h index 00047c14e90..d21d36175e1 100644 --- a/src/mongo/idl/server_parameter_specialized_test.h +++ b/src/mongo/idl/server_parameter_specialized_test.h @@ -82,6 +82,11 @@ public: _intData = intData; } + void setId(StringData id) { + stdx::lock_guard<Latch> lg(_mutex); + _id = id.toString(); + } + void parse(const BSONObj& updatedObj) { stdx::lock_guard<Latch> lg(_mutex); _clusterParameterTime = LogicalTime(updatedObj["clusterParameterTime"].timestamp()); @@ -91,19 +96,30 @@ public: const void serialize(BSONObjBuilder* builder) const { stdx::lock_guard<Latch> lg(_mutex); + if (_id.is_initialized()) { + builder->append("_id"_sd, _id.get()); + } builder->append("clusterParameterTime"_sd, _clusterParameterTime.asTimestamp()); builder->append("strData"_sd, _strData); builder->append("intData"_sd, _intData); } + BSONObj toBSON() const { + BSONObjBuilder builder; + serialize(&builder); + return builder.obj(); + } + void reset() { stdx::lock_guard<Latch> lg(_mutex); _clusterParameterTime = LogicalTime(); _strData = "default"; _intData = 30; + _id = boost::none; } private: + boost::optional<std::string> _id; LogicalTime _clusterParameterTime; std::string _strData; std::int32_t _intData; diff --git a/src/mongo/idl/server_parameter_with_storage.h b/src/mongo/idl/server_parameter_with_storage.h index e116dee1078..c90280ed60c 100644 --- a/src/mongo/idl/server_parameter_with_storage.h +++ b/src/mongo/idl/server_parameter_with_storage.h @@ -350,7 +350,8 @@ public: if (isRedact()) { b.append(name, "###"); } else if constexpr (paramType == SPT::kClusterWide) { - getValue().serialize(&b); + b.append("_id"_sd, name); + b.appendElementsUnique(getValue().toBSON()); } else { b.append(name, getValue()); } |