summaryrefslogtreecommitdiff
path: root/src/mongo/idl
diff options
context:
space:
mode:
authorVarun Ravichandran <varun.ravichandran@mongodb.com>2022-04-05 20:41:24 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-04-07 04:40:40 +0000
commitdf9851154bc9847dc6a736dcdb0e85c2176d0520 (patch)
tree9fa02afd6a1fedb0d43c85a29116f58a056ebfa7 /src/mongo/idl
parent74076ecb661127f73990cfca898fcf9b914aabd5 (diff)
downloadmongo-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.cpp16
-rw-r--r--src/mongo/idl/server_parameter_specialized_test.h16
-rw-r--r--src/mongo/idl/server_parameter_with_storage.h3
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());
}