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();
 

Reply via email to