Repository: mesos Updated Branches: refs/heads/master 5f7aa4d4d -> 602e40c8c
Fixed the flaky SlaveRecoverTest.MultipleSlaves. Review: https://reviews.apache.org/r/26243 Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/602e40c8 Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/602e40c8 Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/602e40c8 Branch: refs/heads/master Commit: 602e40c8cc589eb4751fb1577108b7c2935ff804 Parents: 5f7aa4d Author: Benjamin Mahler <[email protected]> Authored: Wed Oct 1 12:17:45 2014 -0700 Committer: Benjamin Mahler <[email protected]> Committed: Wed Oct 1 13:01:11 2014 -0700 ---------------------------------------------------------------------- src/tests/slave_recovery_tests.cpp | 62 ++++++++++----------------------- 1 file changed, 19 insertions(+), 43 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/602e40c8/src/tests/slave_recovery_tests.cpp ---------------------------------------------------------------------- diff --git a/src/tests/slave_recovery_tests.cpp b/src/tests/slave_recovery_tests.cpp index c7c30d6..4fb357b 100644 --- a/src/tests/slave_recovery_tests.cpp +++ b/src/tests/slave_recovery_tests.cpp @@ -569,6 +569,7 @@ TYPED_TEST(SlaveRecoveryTest, RecoverUnregisteredExecutor) Clock::settle(); // Wait for slave to schedule reregister timeout. + // Ensure the slave considers itself recovered. Clock::advance(EXECUTOR_REREGISTER_TIMEOUT); // Now advance time until the reaper reaps the executor. @@ -688,6 +689,7 @@ TYPED_TEST(SlaveRecoveryTest, RecoverTerminatedExecutor) Clock::settle(); // Wait for slave to schedule reregister timeout. + // Ensure the slave considers itself recovered. Clock::advance(EXECUTOR_REREGISTER_TIMEOUT); // Now advance time until the reaper reaps the executor. @@ -801,6 +803,7 @@ TYPED_TEST(SlaveRecoveryTest, DISABLED_RecoveryTimeout) AWAIT_READY(_recover); + // Ensure the slave considers itself recovered. Clock::advance(EXECUTOR_REREGISTER_TIMEOUT); Clock::resume(); @@ -1307,10 +1310,8 @@ TYPED_TEST(SlaveRecoveryTest, KillTask) this->Stop(slave.get()); delete containerizer1.get(); - Future<Nothing> _recover = FUTURE_DISPATCH(_, &Slave::_recover); - Future<ReregisterExecutorMessage> reregisterExecutorMessage = - FUTURE_PROTOBUF(ReregisterExecutorMessage(), _, _); + FUTURE_PROTOBUF(ReregisterExecutorMessage(), _, _); Future<SlaveReregisteredMessage> slaveReregisteredMessage = FUTURE_PROTOBUF(SlaveReregisteredMessage(), _, _); @@ -1324,13 +1325,10 @@ TYPED_TEST(SlaveRecoveryTest, KillTask) Clock::pause(); - AWAIT_READY(_recover); - // Wait for the executor to re-register. AWAIT_READY(reregisterExecutorMessage); - Clock::settle(); // Wait for slave to schedule reregister timeout. - + // Ensure the slave considers itself recovered. Clock::advance(EXECUTOR_REREGISTER_TIMEOUT); Clock::resume(); @@ -1620,16 +1618,15 @@ TYPED_TEST(SlaveRecoveryTest, GCExecutor) slave = this->StartSlave(containerizer2.get(), flags); ASSERT_SOME(slave); - AWAIT_READY(_recover); - Clock::pause(); + AWAIT_READY(_recover); + Clock::settle(); // Wait for slave to schedule reregister timeout. + // Ensure the slave considers itself recovered. Clock::advance(EXECUTOR_REREGISTER_TIMEOUT); - Clock::settle(); - AWAIT_READY(slaveReregisteredMessage); Clock::advance(flags.gc_delay); @@ -2448,8 +2445,6 @@ TYPED_TEST(SlaveRecoveryTest, SchedulerFailover) AWAIT_READY(sched2Registered); AWAIT_READY(sched1Error); - Future<Nothing> _recover = FUTURE_DISPATCH(_, &Slave::_recover); - Future<ReregisterExecutorMessage> reregisterExecutorMessage = FUTURE_PROTOBUF(ReregisterExecutorMessage(), _, _); @@ -2465,13 +2460,10 @@ TYPED_TEST(SlaveRecoveryTest, SchedulerFailover) Clock::pause(); - AWAIT_READY(_recover); - // Wait for the executor to re-register. AWAIT_READY(reregisterExecutorMessage); - Clock::settle(); // Wait for slave to schedule reregister timeout. - + // Ensure the slave considers itself recovered. Clock::advance(EXECUTOR_REREGISTER_TIMEOUT); Clock::resume(); @@ -2740,8 +2732,6 @@ TYPED_TEST(SlaveRecoveryTest, MasterFailover) AWAIT_READY(registered); // Step 3. Restart the slave and kill the task. - Future<Nothing> _recover = FUTURE_DISPATCH(_, &Slave::_recover); - Future<ReregisterExecutorMessage> reregisterExecutorMessage = FUTURE_PROTOBUF(ReregisterExecutorMessage(), _, _); @@ -2757,15 +2747,11 @@ TYPED_TEST(SlaveRecoveryTest, MasterFailover) Clock::pause(); - AWAIT_READY(_recover); - // Wait for the executor to re-register. AWAIT_READY(reregisterExecutorMessage); - Clock::settle(); // Wait for slave to schedule reregister timeout. - + // Ensure the slave considers itself recovered. Clock::advance(EXECUTOR_REREGISTER_TIMEOUT); - Clock::resume(); // Wait for the slave to re-register. @@ -2910,11 +2896,8 @@ TYPED_TEST(SlaveRecoveryTest, MultipleFrameworks) this->Stop(slave.get()); delete containerizer1.get(); - Future<Nothing> _recover = FUTURE_DISPATCH(_, &Slave::_recover); - Future<ReregisterExecutorMessage> reregisterExecutorMessage2 = FUTURE_PROTOBUF(ReregisterExecutorMessage(), _, _); - Future<ReregisterExecutorMessage> reregisterExecutorMessage1 = FUTURE_PROTOBUF(ReregisterExecutorMessage(), _, _); @@ -2930,16 +2913,12 @@ TYPED_TEST(SlaveRecoveryTest, MultipleFrameworks) Clock::pause(); - AWAIT_READY(_recover); - // Wait for the executors to re-register. AWAIT_READY(reregisterExecutorMessage1); AWAIT_READY(reregisterExecutorMessage2); - Clock::settle(); // Wait for slave to schedule reregister timeout. - + // Ensure the slave considers itself recovered. Clock::advance(EXECUTOR_REREGISTER_TIMEOUT); - Clock::resume(); // Wait for the slave to re-register. @@ -3090,8 +3069,10 @@ TYPED_TEST(SlaveRecoveryTest, MultipleSlaves) this->Stop(slave2.get()); delete containerizer2.get(); - Future<Nothing> _recover2 = FUTURE_DISPATCH(_, &Slave::_recover); - Future<Nothing> _recover1 = FUTURE_DISPATCH(_, &Slave::_recover); + Future<ReregisterExecutorMessage> reregisterExecutorMessage2 = + FUTURE_PROTOBUF(ReregisterExecutorMessage(), _, _); + Future<ReregisterExecutorMessage> reregisterExecutorMessage1 = + FUTURE_PROTOBUF(ReregisterExecutorMessage(), _, _); Future<SlaveReregisteredMessage> slaveReregisteredMessage2 = FUTURE_PROTOBUF(SlaveReregisteredMessage(), _, _); @@ -3113,17 +3094,11 @@ TYPED_TEST(SlaveRecoveryTest, MultipleSlaves) slave2 = this->StartSlave(containerizer4.get(), flags2); ASSERT_SOME(slave2); - AWAIT_READY(_recover1); - AWAIT_READY(_recover2); - - // Wait for slaves to schedule reregister timeout. - Clock::settle(); + AWAIT_READY(reregisterExecutorMessage1); + AWAIT_READY(reregisterExecutorMessage2); + // Ensure the slave considers itself recovered. Clock::advance(EXECUTOR_REREGISTER_TIMEOUT); - - // Make sure all pending timeouts are fired. - Clock::settle(); - Clock::resume(); // Wait for the slaves to re-register. @@ -3250,6 +3225,7 @@ TYPED_TEST(SlaveRecoveryTest, RestartBeforeContainerizerLaunch) Clock::settle(); // Wait for slave to schedule reregister timeout. + // Ensure the slave considers itself recovered. Clock::advance(EXECUTOR_REREGISTER_TIMEOUT); Clock::resume();
