summaryrefslogtreecommitdiff
path: root/jstests/concurrency/fsm_libs
diff options
context:
space:
mode:
authorXiangyu Yao <xiangyu.yao@mongodb.com>2018-05-08 12:01:47 -0400
committerXiangyu Yao <xiangyu.yao@mongodb.com>2018-05-23 18:01:13 -0400
commit73cf3829a07f09bf35e1563a8cd0c1bad74bc226 (patch)
tree583c1e66a44b22cde74fdf9209100c2bb177b6bc /jstests/concurrency/fsm_libs
parentee5a75a518806dbdd20460ef81db2b6a9717ece4 (diff)
downloadmongo-73cf3829a07f09bf35e1563a8cd0c1bad74bc226.tar.gz
SERVER-32883 Add concurrency_replication_causal_consistency suite
Diffstat (limited to 'jstests/concurrency/fsm_libs')
-rw-r--r--jstests/concurrency/fsm_libs/cluster.js11
-rw-r--r--jstests/concurrency/fsm_libs/thread_mgr.js1
-rw-r--r--jstests/concurrency/fsm_libs/worker_thread.js13
3 files changed, 21 insertions, 4 deletions
diff --git a/jstests/concurrency/fsm_libs/cluster.js b/jstests/concurrency/fsm_libs/cluster.js
index 321e6a267c1..8ad92353ea8 100644
--- a/jstests/concurrency/fsm_libs/cluster.js
+++ b/jstests/concurrency/fsm_libs/cluster.js
@@ -187,6 +187,7 @@ var Cluster = function(options) {
}
var conn;
+ var secondaryConns;
var st;
var rawST; // The raw ShardingTest object for test suites not using resmoke fixtures.
@@ -329,6 +330,7 @@ var Cluster = function(options) {
}
conn = rst.getPrimary();
+ secondaryConns = rst.getSecondaries();
replSets = [rst];
this.teardown = function teardown(opts) {
@@ -427,6 +429,15 @@ var Cluster = function(options) {
return conn.host;
};
+ this.getSecondaryHost = function getSecondaryHost(dbName) {
+ assert(initialized, 'cluster must be initialized first');
+
+ if (this.isReplication() && !this.isSharded()) {
+ return secondaryConns[nextConn++ % secondaryConns.length].host;
+ }
+ return undefined;
+ };
+
this.getReplSetName = function getReplSetName() {
if (this.isReplication() && !this.isSharded()) {
return rst.name;
diff --git a/jstests/concurrency/fsm_libs/thread_mgr.js b/jstests/concurrency/fsm_libs/thread_mgr.js
index 35391ed0b05..bfe4bea5f03 100644
--- a/jstests/concurrency/fsm_libs/thread_mgr.js
+++ b/jstests/concurrency/fsm_libs/thread_mgr.js
@@ -111,6 +111,7 @@ var ThreadManager = function(clusterOptions, executionMode = {composed: false})
tid: tid++,
data: workloadData,
host: cluster.getHost(),
+ secondaryHost: cluster.getSecondaryHost(),
replSetName: cluster.getReplSetName(),
latch: latch,
dbName: _context[workload].dbName,
diff --git a/jstests/concurrency/fsm_libs/worker_thread.js b/jstests/concurrency/fsm_libs/worker_thread.js
index 806d04f20cb..3c804ddc63c 100644
--- a/jstests/concurrency/fsm_libs/worker_thread.js
+++ b/jstests/concurrency/fsm_libs/worker_thread.js
@@ -3,6 +3,7 @@
load('jstests/concurrency/fsm_libs/assert.js');
load('jstests/concurrency/fsm_libs/cluster.js'); // for Cluster.isStandalone
load('jstests/concurrency/fsm_libs/parse_config.js'); // for parseConfig
+load('jstests/libs/specific_secondary_reader_mongo.js');
var workerThread = (function() {
@@ -44,6 +45,13 @@ var workerThread = (function() {
gc();
}
+ let mongo;
+ if (TestData.pinningSecondary) {
+ mongo = new SpecificSecondaryReaderMongo(connectionString, args.secondaryHost);
+ } else {
+ mongo = new Mongo(connectionString);
+ }
+
if (typeof args.sessionOptions !== 'undefined') {
let initialClusterTime;
let initialOperationTime;
@@ -72,8 +80,6 @@ var workerThread = (function() {
delete args.sessionOptions.initialOperationTime;
}
- const mongo = new Mongo(connectionString);
-
const session = mongo.startSession(args.sessionOptions);
const readPreference = session.getOptions().getReadPreference();
if (readPreference && readPreference.mode === 'secondary') {
@@ -98,7 +104,7 @@ var workerThread = (function() {
myDB = session.getDatabase(args.dbName);
} else {
- myDB = new Mongo(connectionString).getDB(args.dbName);
+ myDB = mongo.getDB(args.dbName);
}
{
@@ -234,5 +240,4 @@ var workerThread = (function() {
}
return {main: main};
-
})();