void run() { writelock lk(""); OpTime o1 = OpTime::now(); OpTime o2 = OpTime::now(); BSONObjBuilder b; b.appendTimestamp("ts", o2.asLL()); BSONObj obj = b.obj(); MockInitialSync mock; // all three should succeed mock.applyOp(obj, o1); mock.failOnStep = MockInitialSync::FAIL_FIRST_APPLY; mock.applyOp(obj, o1); mock.retry = false; mock.applyOp(obj, o1); // force failure MockInitialSync mock2; mock2.failOnStep = MockInitialSync::FAIL_BOTH_APPLY; ASSERT_THROWS(mock2.applyOp(obj, o2), UserException); }
void run() { Lock::GlobalWrite lk; OpTime o1,o2; { mongo::mutex::scoped_lock lk2(OpTime::m); o1 = OpTime::now(lk2); o2 = OpTime::now(lk2); } BSONObjBuilder b; b.appendTimestamp("ts", o2.asLL()); BSONObj obj = b.obj(); MockInitialSync mock; // all three should succeed mock.applyOp(obj, o1); mock.failOnStep = MockInitialSync::FAIL_FIRST_APPLY; mock.applyOp(obj, o1); mock.retry = false; mock.applyOp(obj, o1); // force failure MockInitialSync mock2; mock2.failOnStep = MockInitialSync::FAIL_BOTH_APPLY; ASSERT_THROWS(mock2.applyOp(obj, o2), UserException); }