summaryrefslogtreecommitdiff
path: root/src/mongo/db/s/sharding_ddl_util_test.cpp
diff options
context:
space:
mode:
authorAntonio Fuschetto <antonio.fuschetto@mongodb.com>2023-03-09 20:08:08 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2023-03-09 20:52:59 +0000
commitb01ba75c76f72bc82167662fdf3c55eb24085acb (patch)
treedc1e9d2bee0b4f0a45d9b5acf57a64f323f68a16 /src/mongo/db/s/sharding_ddl_util_test.cpp
parent52c4ac5618a6325a69cf68ab498ff3f5b0590b90 (diff)
downloadmongo-b01ba75c76f72bc82167662fdf3c55eb24085acb.tar.gz
SERVER-74185 Support for cleanup in Recoverable Sharding DDL Coordinator
Diffstat (limited to 'src/mongo/db/s/sharding_ddl_util_test.cpp')
-rw-r--r--src/mongo/db/s/sharding_ddl_util_test.cpp92
1 files changed, 92 insertions, 0 deletions
diff --git a/src/mongo/db/s/sharding_ddl_util_test.cpp b/src/mongo/db/s/sharding_ddl_util_test.cpp
index 7b373dfb284..ee4c94640e6 100644
--- a/src/mongo/db/s/sharding_ddl_util_test.cpp
+++ b/src/mongo/db/s/sharding_ddl_util_test.cpp
@@ -103,6 +103,98 @@ void findN(DBClientBase& client,
}
}
+TEST_F(ShardingDDLUtilTest, SerializeDeserializeErrorStatusWithoutExtraInfo) {
+ const Status sample{ErrorCodes::ForTestingOptionalErrorExtraInfo, "Dummy reason"};
+
+ BSONObjBuilder bsonBuilder;
+ sharding_ddl_util_serializeErrorStatusToBSON(sample, "status", &bsonBuilder);
+ const auto serialized = bsonBuilder.done();
+
+ const auto deserialized =
+ sharding_ddl_util_deserializeErrorStatusFromBSON(serialized.firstElement());
+
+ ASSERT_EQ(sample.code(), deserialized.code());
+ ASSERT_EQ(sample.reason(), deserialized.reason());
+ ASSERT(!deserialized.extraInfo());
+}
+
+TEST_F(ShardingDDLUtilTest, SerializeDeserializeErrorStatusWithExtraInfo) {
+ OptionalErrorExtraInfoExample::EnableParserForTest whenInScope;
+
+ const Status sample{
+ ErrorCodes::ForTestingOptionalErrorExtraInfo, "Dummy reason", fromjson("{data: 123}")};
+
+ BSONObjBuilder bsonBuilder;
+ sharding_ddl_util_serializeErrorStatusToBSON(sample, "status", &bsonBuilder);
+ const auto serialized = bsonBuilder.done();
+
+ const auto deserialized =
+ sharding_ddl_util_deserializeErrorStatusFromBSON(serialized.firstElement());
+
+ ASSERT_EQ(sample.code(), deserialized.code());
+ ASSERT_EQ(sample.reason(), deserialized.reason());
+ ASSERT(deserialized.extraInfo());
+ ASSERT(deserialized.extraInfo<OptionalErrorExtraInfoExample>());
+ ASSERT_EQ(deserialized.extraInfo<OptionalErrorExtraInfoExample>()->data, 123);
+}
+
+TEST_F(ShardingDDLUtilTest, SerializeDeserializeErrorStatusInvalid) {
+ BSONObjBuilder bsonBuilder;
+ ASSERT_THROWS_CODE(
+ sharding_ddl_util_serializeErrorStatusToBSON(Status::OK(), "status", &bsonBuilder),
+ DBException,
+ 7418500);
+
+ const auto okStatusBSON =
+ BSON("status" << BSON("code" << ErrorCodes::OK << "codeName"
+ << ErrorCodes::errorString(ErrorCodes::OK)));
+ ASSERT_THROWS_CODE(
+ sharding_ddl_util_deserializeErrorStatusFromBSON(okStatusBSON.firstElement()),
+ DBException,
+ 7418501);
+}
+
+TEST_F(ShardingDDLUtilTest, SerializeErrorStatusTooBig) {
+ const std::string longReason(1024 * 3, 'x');
+ const Status sample{ErrorCodes::ForTestingOptionalErrorExtraInfo, longReason};
+
+ BSONObjBuilder bsonBuilder;
+ sharding_ddl_util_serializeErrorStatusToBSON(sample, "status", &bsonBuilder);
+ const auto serialized = bsonBuilder.done();
+
+ const auto deserialized =
+ sharding_ddl_util_deserializeErrorStatusFromBSON(serialized.firstElement());
+
+ ASSERT_EQ(ErrorCodes::TruncatedSerialization, deserialized.code());
+ ASSERT_EQ(
+ "ForTestingOptionalErrorExtraInfo: "
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
+ deserialized.reason());
+ ASSERT(!deserialized.extraInfo());
+}
+
// Test that config.collection document and config.chunks documents are properly updated from source
// to destination collection metadata
TEST_F(ShardingDDLUtilTest, ShardedRenameMetadata) {