summaryrefslogtreecommitdiff
path: root/jstests/serverless
diff options
context:
space:
mode:
authorMindaugas Malinauskas <mindaugas.malinauskas@mongodb.com>2023-04-12 10:27:13 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2023-04-12 11:06:27 +0000
commited0d55f7e8686c7c71fe113554e7e2782d7ea6d8 (patch)
treeff325fdcf9bd26e86cfd78f8d483f41d46d77183 /jstests/serverless
parente72720dda5265d438837d8d6028c665f7bbe6c58 (diff)
downloadmongo-ed0d55f7e8686c7c71fe113554e7e2782d7ea6d8.tar.gz
SERVER-66715 Add tenant lock
Diffstat (limited to 'jstests/serverless')
-rw-r--r--jstests/serverless/change_stream_state_commands.js11
-rw-r--r--jstests/serverless/change_streams/multitenant_read_from_change_collection.js9
-rw-r--r--jstests/serverless/change_streams_cluster_parameter.js2
3 files changed, 22 insertions, 0 deletions
diff --git a/jstests/serverless/change_stream_state_commands.js b/jstests/serverless/change_stream_state_commands.js
index c7196e7a104..f6fdcb6eb61 100644
--- a/jstests/serverless/change_stream_state_commands.js
+++ b/jstests/serverless/change_stream_state_commands.js
@@ -9,6 +9,10 @@
load("jstests/libs/fail_point_util.js"); // For configureFailPoint.
load('jstests/libs/parallel_shell_helpers.js'); // For funWithArgs.
+// Disable implicit sessions since dropping "config" database for a tenant must be done not in a
+// session.
+TestData.disableImplicitSessions = true;
+
const replSetTest =
new ReplSetTest({nodes: 2, name: "change-stream-state-commands", serverless: true});
@@ -104,6 +108,12 @@ const secondOrgTenantId = ObjectId();
setChangeStreamState(firstOrgTenantId, false);
setChangeStreamState(firstOrgTenantId, false);
assertChangeStreamState(firstOrgTenantId, false);
+
+ // Verify that dropping "config" database works and effectively disables change streams.
+ setChangeStreamState(firstOrgTenantId, true);
+ assert.commandWorked(replSetTest.getPrimary().getDB("config").runCommand(
+ {dropDatabase: 1, $tenant: firstOrgTenantId}));
+ assertChangeStreamState(firstOrgTenantId, false);
})();
// Tests that the 'setChangeStreamState' command tolerates the primary step-down and can
@@ -302,4 +312,5 @@ const secondOrgTenantId = ObjectId();
})();
replSetTest.stopSet();
+TestData.disableImplicitSessions = false;
}());
diff --git a/jstests/serverless/change_streams/multitenant_read_from_change_collection.js b/jstests/serverless/change_streams/multitenant_read_from_change_collection.js
index 47872e89d71..1f8eabbd640 100644
--- a/jstests/serverless/change_streams/multitenant_read_from_change_collection.js
+++ b/jstests/serverless/change_streams/multitenant_read_from_change_collection.js
@@ -67,6 +67,15 @@ assertDropAndRecreateCollection(
assert(secondTenantTestDb.getCollectionInfos({name: "stockPrice"})[0]
.options.changeStreamPreAndPostImages.enabled);
+// Verify that while the change streams are disabled for the tenant, performing update and delete
+// operations on a collection with change stream pre- and post-images enabled succeeds. The
+// pre-images collection shouldn't be affected either.
+replSetTest.setChangeStreamState(firstTenantConn, false);
+assert.commandWorked(firstTenantTestDb.stockPrice.insert({_id: "mdb", price: 350}));
+assert.commandWorked(firstTenantTestDb.stockPrice.updateOne({_id: "mdb"}, {$set: {price: 450}}));
+assert.commandWorked(firstTenantTestDb.stockPrice.deleteOne({_id: "mdb"}));
+assert(!firstTenantConn.getDB("config").getCollectionNames().includes("system.preimages"));
+
// Create a new incarnation of the change collection for the first tenant.
replSetTest.setChangeStreamState(firstTenantConn, false);
replSetTest.setChangeStreamState(firstTenantConn, true);
diff --git a/jstests/serverless/change_streams_cluster_parameter.js b/jstests/serverless/change_streams_cluster_parameter.js
index 05e071d7da5..474f481d172 100644
--- a/jstests/serverless/change_streams_cluster_parameter.js
+++ b/jstests/serverless/change_streams_cluster_parameter.js
@@ -5,6 +5,8 @@
// requires_sharding,
// featureFlagServerlessChangeStreams,
// requires_fcv_63,
+// # TODO SERVER-74811: Re-enable this test.
+// __TEMPORARILY_DISABLED__,
// ]
(function() {
"use strict";