diff options
Diffstat (limited to 'src/mongo/rpc/metadata/client_metadata_test.cpp')
| -rw-r--r-- | src/mongo/rpc/metadata/client_metadata_test.cpp | 72 |
1 files changed, 9 insertions, 63 deletions
diff --git a/src/mongo/rpc/metadata/client_metadata_test.cpp b/src/mongo/rpc/metadata/client_metadata_test.cpp index 4b698aa3a14..becb3af5698 100644 --- a/src/mongo/rpc/metadata/client_metadata_test.cpp +++ b/src/mongo/rpc/metadata/client_metadata_test.cpp @@ -308,17 +308,16 @@ TEST(ClientMetadataTest, TestMongoSAppend) { auto obj = builder.obj(); auto swParseStatus = ClientMetadata::parse(obj[kMetadataDoc]); ASSERT_OK(swParseStatus.getStatus()); - auto metaObj = swParseStatus.getValue().value(); - ASSERT_EQUALS("g", metaObj.getApplicationName()); - auto docBeforeMongos = obj[kMetadataDoc].Obj(); - ASSERT_BSONOBJ_EQ(metaObj.getDocument(), docBeforeMongos); + ASSERT_EQUALS("g", swParseStatus.getValue().get().getApplicationName()); - metaObj.setMongoSMetadata("h", "i", "j"); - ASSERT_BSONOBJ_NE(metaObj.getDocument(), docBeforeMongos); - ASSERT_EQUALS("g", metaObj.getApplicationName()); + swParseStatus.getValue().get().setMongoSMetadata("h", "i", "j"); + ASSERT_EQUALS("g", swParseStatus.getValue().get().getApplicationName()); - auto docWithMongosInfo = metaObj.getDocument(); - ASSERT_BSONOBJ_EQ(metaObj.documentWithoutMongosInfo(), docBeforeMongos); + auto doc = swParseStatus.getValue().get().getDocument(); + + constexpr auto kMongos = "mongos"_sd; + constexpr auto kClient = "client"_sd; + constexpr auto kHost = "host"_sd; auto pid = ProcessId::getCurrent().toString(); @@ -341,60 +340,7 @@ TEST(ClientMetadataTest, TestMongoSAppend) { .append(kMongos, BOB{}.append(kHost, "h").append(kClient, "i").append(kVersion, "j").obj()) .obj(); - ASSERT_BSONOBJ_EQ(docWithMongosInfo, outDoc); -} - -// Test that if mongos information is present from the beginning, we can still request the document -// without the mongos info. -TEST(ClientMetadataTest, MongosMetaCanBeRemoved) { - BSONObjBuilder realBuilder; - BSONObjBuilder tmpBuilder; - ASSERT_OK(ClientMetadata::serializePrivate("a", "b", "c", "d", "e", "f", "g", &tmpBuilder)); - auto objWithoutMongosMeta = tmpBuilder.obj(); - const auto metaBsonNoMongosInfo = objWithoutMongosMeta[kMetadataDoc].Obj(); - { - BSONObjBuilder metaBuilder = realBuilder.subobjStart(kMetadataDoc); - metaBuilder.appendElements(metaBsonNoMongosInfo); - metaBuilder.append("mongos", BSON(kHost << "h" << kClient << "i" << kVersion << "j")); - metaBuilder.doneFast(); - } - - const auto wrappingMetaBson = realBuilder.obj(); - const auto metaElt = wrappingMetaBson[kMetadataDoc]; - // Add this mongos info without calling 'setMongoSMetadata().' - ASSERT_BSONOBJ_NE(metaElt.Obj(), metaBsonNoMongosInfo); - - auto swParseStatus = ClientMetadata::parse(metaElt); - ASSERT_OK(swParseStatus.getStatus()); - const auto& metaObj = swParseStatus.getValue().value(); - // Test the various copy/move constructors. - ClientMetadata copyConstructed(metaObj); - auto tmpThirdCopy = metaObj; - ClientMetadata moveConstructed(std::move(tmpThirdCopy)); - - auto tmpFourthCopy = metaObj; - auto moveAssigned = metaObj; // copy for now, until next line. - moveAssigned = std::move(tmpFourthCopy); - - const auto tmpFifthCopy = metaObj; - auto copyAssigned = metaObj; // copy construct. - copyAssigned = tmpFifthCopy; // copy assign. - - ASSERT_BSONOBJ_EQ(metaObj.getDocument(), metaElt.Obj()); - ASSERT_BSONOBJ_EQ(metaObj.documentWithoutMongosInfo(), metaBsonNoMongosInfo); - ASSERT_BSONOBJ_EQ(metaObj.documentWithoutMongosInfo(), - copyConstructed.documentWithoutMongosInfo()); - ASSERT_BSONOBJ_EQ(metaObj.documentWithoutMongosInfo(), - moveConstructed.documentWithoutMongosInfo()); - ASSERT_BSONOBJ_EQ(metaObj.documentWithoutMongosInfo(), - copyAssigned.documentWithoutMongosInfo()); - ASSERT_BSONOBJ_EQ(metaObj.documentWithoutMongosInfo(), - moveAssigned.documentWithoutMongosInfo()); - - ASSERT_EQ(metaObj.hashWithoutMongosInfo(), copyConstructed.hashWithoutMongosInfo()); - ASSERT_EQ(metaObj.hashWithoutMongosInfo(), moveConstructed.hashWithoutMongosInfo()); - ASSERT_EQ(metaObj.hashWithoutMongosInfo(), copyAssigned.hashWithoutMongosInfo()); - ASSERT_EQ(metaObj.hashWithoutMongosInfo(), moveAssigned.hashWithoutMongosInfo()); + ASSERT_BSONOBJ_EQ(doc, outDoc); } TEST(ClientMetadataTest, TestInvalidDocWhileSettingOpCtxMetadata) { |
