summaryrefslogtreecommitdiff
path: root/jstests/replsets/rollback_all_op_types.js
diff options
context:
space:
mode:
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();