diff options
author | Xiangyu Yao <xiangyu.yao@mongodb.com> | 2018-05-08 12:01:47 -0400 |
---|---|---|
committer | Xiangyu Yao <xiangyu.yao@mongodb.com> | 2018-05-23 18:01:13 -0400 |
commit | 73cf3829a07f09bf35e1563a8cd0c1bad74bc226 (patch) | |
tree | 583c1e66a44b22cde74fdf9209100c2bb177b6bc /jstests/concurrency/fsm_libs | |
parent | ee5a75a518806dbdd20460ef81db2b6a9717ece4 (diff) | |
download | mongo-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.js | 11 | ||||
-rw-r--r-- | jstests/concurrency/fsm_libs/thread_mgr.js | 1 | ||||
-rw-r--r-- | jstests/concurrency/fsm_libs/worker_thread.js | 13 |
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}; - })(); |