summaryrefslogtreecommitdiff
path: root/jstests
diff options
context:
space:
mode:
authorSophia Tan <sophia_tll@hotmail.com>2021-12-16 06:00:16 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-12-16 06:24:38 +0000
commitff09a4be4a337eb39616368d2806027233cf6f46 (patch)
tree6176595ef52783dad2ea320a54f5874d076dbbd9 /jstests
parentc3a0c1fd88a26d52b17b8895a90fade3a2bc2174 (diff)
downloadmongo-ff09a4be4a337eb39616368d2806027233cf6f46.tar.gz
SERVER-61463 Create javascript library for adding and removing entries from config.shards
Diffstat (limited to 'jstests')
-rw-r--r--jstests/serverless/rd.js35
1 files changed, 35 insertions, 0 deletions
diff --git a/jstests/serverless/rd.js b/jstests/serverless/rd.js
new file mode 100644
index 00000000000..9662dd7f2aa
--- /dev/null
+++ b/jstests/serverless/rd.js
@@ -0,0 +1,35 @@
+/**
+ * Set up a mocked Rd which supports to add and remove entries from config.shards.
+ */
+
+class Rd {
+ constructor() {
+ jsTest.log("Going to create and start Rd.");
+ this.rs = new ReplSetTest({name: "Rd", nodes: 3, useHostName: true});
+ this.rs.startSet({journal: "", storageEngine: 'wiredTiger'});
+ this.rs.initiate();
+
+ jsTest.log("Going to create connection with Rd.");
+ this.conn = new Mongo(this.rs.getURL());
+ }
+
+ addShard(shardId, shardUrl) {
+ jsTestLog("Add entry to config.shards: " + shardId);
+
+ let coll = this.conn.getCollection("config.shards");
+ let request = {insert: coll.getName(), documents: [{_id: shardId, host: shardUrl}]};
+ assert.commandWorked(coll.runCommand(request));
+ }
+
+ removeShard(shardId) {
+ jsTestLog("Remove entry from config.shards: " + shardId);
+
+ let coll = this.conn.getCollection("config.shards");
+ let request = {delete: coll.getName(), deletes: [{q: {_id: shardId}, limit: 1}]};
+ assert.commandWorked(coll.runCommand(request));
+ }
+
+ stop() {
+ this.rs.stopSet();
+ }
+}