summaryrefslogtreecommitdiff
path: root/jstests/replsets/rollback_all_op_types.js
diff options
context:
space:
mode:
authorKyle Suarez <kyle.suarez@mongodb.com>2018-05-16 01:14:07 -0400
committerKyle Suarez <kyle.suarez@mongodb.com>2018-05-16 01:14:20 -0400
commit5c722f8e8eea601f37519678b7458dc95befe28d (patch)
tree6a658839ad6f88bf4f7dffb9b1cefda7bf692106 /jstests/replsets/rollback_all_op_types.js
parent63d721812d0d72c31d1144bbe7e46f53041d3733 (diff)
downloadmongo-5c722f8e8eea601f37519678b7458dc95befe28d.tar.gz
SERVER-33091 create a rollback test with 5 nodes
This test suite allows for a controlled rollback where nodes roll back writes performed as a primary or secondary.
Diffstat (limited to 'jstests/replsets/rollback_all_op_types.js')
-rw-r--r--jstests/replsets/rollback_all_op_types.js28
1 files changed, 25 insertions, 3 deletions
diff --git a/jstests/replsets/rollback_all_op_types.js b/jstests/replsets/rollback_all_op_types.js
index 828b3276786..690cff5c4db 100644
--- a/jstests/replsets/rollback_all_op_types.js
+++ b/jstests/replsets/rollback_all_op_types.js
@@ -12,7 +12,7 @@
(function() {
"use strict";
- load("jstests/replsets/libs/rollback_test.js");
+ load("jstests/replsets/libs/rollback_test_deluxe.js");
let noOp = () => {};
@@ -346,14 +346,36 @@
};
// Set up Rollback Test.
- let rollbackTest = new RollbackTest();
+ let rollbackTest = new RollbackTestDeluxe();
CommonOps(rollbackTest.getPrimary());
// Perform the operations that will be rolled back.
let rollbackNode = rollbackTest.transitionToRollbackOperations();
RollbackOps(rollbackNode);
- // Wait for rollback to finish.
+ // Complete cycle one of rollback. Data consistency is checked automatically after entering
+ // steady state.
+ rollbackTest.transitionToSyncSourceOperationsBeforeRollback();
+ rollbackTest.transitionToSyncSourceOperationsDuringRollback();
+ rollbackTest.transitionToSteadyStateOperations();
+
+ // Again, perform operations that will be rolled back. This time, each node in the replica set
+ // has assumed a different role and will roll back operations that were applied in a different
+ // state (e.g. as a SECONDARY as opposed to a PRIMARY).
+ rollbackNode = rollbackTest.transitionToRollbackOperations();
+ RollbackOps(rollbackNode);
+
+ // Complete cycle two of rollback.
+ rollbackTest.transitionToSyncSourceOperationsBeforeRollback();
+ rollbackTest.transitionToSyncSourceOperationsDuringRollback();
+ rollbackTest.transitionToSteadyStateOperations();
+
+ // Perform operations that will be rolled back one more time.
+ rollbackNode = rollbackTest.transitionToRollbackOperations();
+ RollbackOps(rollbackNode);
+
+ // Complete cycle three of rollback. After this cycle is completed, the replica set returns to
+ // its original topology.
rollbackTest.transitionToSyncSourceOperationsBeforeRollback();
rollbackTest.transitionToSyncSourceOperationsDuringRollback();
rollbackTest.transitionToSteadyStateOperations();