summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkauboy26 <vishnu.kaushik@mongodb.com>2023-05-15 16:12:20 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2023-05-15 21:09:51 +0000
commit8564269159e3c4391c676eee5bdb110e4c0367d1 (patch)
tree89e56b1422fe9628e1ba3b9721150019ed5e5fe3
parentb3d9e271fa9ed5234972959d4e616cffc3d0347e (diff)
downloadmongo-8564269159e3c4391c676eee5bdb110e4c0367d1.tar.gz
SERVER-75202 Add ordered bulk write update test and delete test for sharded mongod
-rw-r--r--src/mongo/db/bulk_write_shard_test.cpp72
1 files changed, 47 insertions, 25 deletions
diff --git a/src/mongo/db/bulk_write_shard_test.cpp b/src/mongo/db/bulk_write_shard_test.cpp
index b9162b73913..c0ef402a428 100644
--- a/src/mongo/db/bulk_write_shard_test.cpp
+++ b/src/mongo/db/bulk_write_shard_test.cpp
@@ -454,31 +454,53 @@ TEST_F(BulkWriteShardTest, InsertsAndUpdatesFailUnordered) {
OperationShardingState::get(opCtx()).resetShardingOperationFailedStatus();
}
-// TODO (SERVER-75202): Re-enable this test & write a test for deletes.
-// Unordered updates into different collections where some fail.
-// TEST_F(BulkWriteShardTest, UpdatesFailUnordered) {
-// BulkWriteCommandRequest request(
-// {
-// BulkWriteUpdateOp(1, BSON("x" << BSON("$gt" << 0)), BSON("x" << -99)),
-// BulkWriteUpdateOp(0, BSON("x" << BSON("$gt" << 0)), BSON("x" << -9)),
-// BulkWriteInsertOp(1, BSON("x" << -1))},
-// {nsInfoWithShardDatabaseVersions(
-// nssShardedCollection1, dbVersionTestDb, incorrectShardVersion),
-// nsInfoWithShardDatabaseVersions(
-// nssShardedCollection2, dbVersionTestDb, shardVersionShardedCollection2)});
-
-// request.setOrdered(false);
-
-// const auto& [replyItems, retriedStmtIds, numErrors] =
-// bulk_write::performWrites(opCtx(), request);
-
-// ASSERT_EQ(2, replyItems.size());
-// ASSERT_OK(replyItems.front().getStatus());
-// ASSERT_EQ(ErrorCodes::StaleConfig, replyItems[1].getStatus().code());
-// ASSERT_EQ(1, numErrors);
-
-// OperationShardingState::get(opCtx()).resetShardingOperationFailedStatus();
-// }
+// Ordered updates into different collections where some fail.
+TEST_F(BulkWriteShardTest, UpdatesFailOrdered) {
+ BulkWriteCommandRequest request(
+ {BulkWriteUpdateOp(1, BSON("x" << BSON("$gt" << 0)), BSON("x" << -99)),
+ BulkWriteUpdateOp(0, BSON("x" << BSON("$gt" << 0)), BSON("x" << -9)),
+ BulkWriteInsertOp(1, BSON("x" << -1))},
+ {nsInfoWithShardDatabaseVersions(
+ nssShardedCollection1, dbVersionTestDb1, incorrectShardVersion),
+ nsInfoWithShardDatabaseVersions(
+ nssShardedCollection2, dbVersionTestDb2, shardVersionShardedCollection2)});
+
+ request.setOrdered(true);
+
+ const auto& [replyItems, retriedStmtIds, numErrors] =
+ bulk_write::performWrites(opCtx(), request);
+
+ ASSERT_EQ(2, replyItems.size());
+ ASSERT_OK(replyItems.front().getStatus());
+ ASSERT_EQ(ErrorCodes::StaleConfig, replyItems[1].getStatus().code());
+ ASSERT_EQ(1, numErrors);
+
+ OperationShardingState::get(opCtx()).resetShardingOperationFailedStatus();
+}
+
+// Ordered deletes into different collections where some fail.
+TEST_F(BulkWriteShardTest, DeletesFailOrdered) {
+ BulkWriteCommandRequest request(
+ {BulkWriteInsertOp(1, BSON("x" << -1)),
+ BulkWriteDeleteOp(0, BSON("x" << BSON("$gt" << 0))),
+ BulkWriteInsertOp(1, BSON("x" << -1))},
+ {nsInfoWithShardDatabaseVersions(
+ nssShardedCollection1, dbVersionTestDb1, incorrectShardVersion),
+ nsInfoWithShardDatabaseVersions(
+ nssShardedCollection2, dbVersionTestDb2, shardVersionShardedCollection2)});
+
+ request.setOrdered(true);
+
+ const auto& [replyItems, retriedStmtIds, numErrors] =
+ bulk_write::performWrites(opCtx(), request);
+
+ ASSERT_EQ(2, replyItems.size());
+ ASSERT_OK(replyItems.front().getStatus());
+ ASSERT_EQ(ErrorCodes::StaleConfig, replyItems[1].getStatus().code());
+ ASSERT_EQ(1, numErrors);
+
+ OperationShardingState::get(opCtx()).resetShardingOperationFailedStatus();
+}
// After the first insert fails due to an incorrect database version, the rest
// of the writes are skipped when operations are ordered.