summaryrefslogtreecommitdiff
path: root/jstests/replsets/secondaryOk_slaveOk_aliases.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/replsets/secondaryOk_slaveOk_aliases.js')
-rw-r--r--jstests/replsets/secondaryOk_slaveOk_aliases.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/jstests/replsets/secondaryOk_slaveOk_aliases.js b/jstests/replsets/secondaryOk_slaveOk_aliases.js
new file mode 100644
index 00000000000..ffb9bbbe7a3
--- /dev/null
+++ b/jstests/replsets/secondaryOk_slaveOk_aliases.js
@@ -0,0 +1,46 @@
+// Tests that member functions setSecondaryOk()/getSecondaryOk() and their
+// aliases, setSlaveOk()/getSlaveOk(), produce the same results.
+
+(function() {
+ "use strict";
+ const dbName = "test";
+ const collName = "coll";
+ const rst = new ReplSetTest({nodes: 2});
+ rst.startSet();
+ rst.initiate();
+ const primary = rst.getPrimary();
+ const secondary = rst.getSecondary();
+
+ assert.writeOK(primary.getDB(dbName)[collName].insert({x: 1}));
+ rst.awaitReplication();
+
+ // secondaryOk is initially set to true in awaitReplication, so reads on secondaries should
+ // succeed.
+ assert.eq(secondary.getDB(dbName).getMongo().getSecondaryOk(), true);
+ assert.eq(secondary.getDB(dbName).getSecondaryOk(), true);
+ assert.commandWorked(secondary.getDB(dbName).runCommand({find: collName}),
+ "find command failed with an unexpected error");
+
+ // Set secondaryOk to false, disallowing reads on secondaries.
+ secondary.getDB(dbName).getMongo().setSecondaryOk(false);
+ assert.eq(secondary.getDB(dbName).getMongo().getSecondaryOk(), false);
+ assert.commandFailedWithCode(secondary.getDB(dbName).runCommand({find: collName}),
+ ErrorCodes.NotMasterNoSlaveOk,
+ "find did not fail with the correct error code");
+
+ // setSlaveOk() is deprecated and aliased to setSecondaryOk(), but ensure
+ // it still works for backwards compatibility.
+ secondary.getDB(dbName).getMongo().setSlaveOk();
+ assert.eq(secondary.getDB(dbName).getMongo().getSlaveOk(), true);
+ assert.eq(secondary.getDB(dbName).getSlaveOk(), true);
+ assert.commandWorked(secondary.getDB(dbName).runCommand({find: collName}),
+ "find command failed with an unexpected error");
+
+ // Set slaveOk to false, disallowing reads on secondaries.
+ secondary.getDB(dbName).getMongo().setSlaveOk(false);
+ assert.eq(secondary.getDB(dbName).getMongo().getSlaveOk(), false);
+ assert.commandFailedWithCode(secondary.getDB(dbName).runCommand({find: collName}),
+ ErrorCodes.NotMasterNoSlaveOk,
+ "find did not fail with the correct error code");
+ rst.stopSet();
+})();