You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by vi...@apache.org on 2016/10/24 22:54:02 UTC

mesos git commit: Fixed flakiness in `MasterTest.UnreachableTaskAfterFailover`.

Repository: mesos
Updated Branches:
  refs/heads/master 28b71613c -> 99f290bcb


Fixed flakiness in `MasterTest.UnreachableTaskAfterFailover`.

After launching a task, we need to wait for the slave to receive the
scheduler's ack of the initial TASK_RUNNING status update. If not, the
status update might be re-delivered after we restart the master, which
would break some test case expectations.

Also cleanup some test code along the way.

Review: https://reviews.apache.org/r/53112/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/99f290bc
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/99f290bc
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/99f290bc

Branch: refs/heads/master
Commit: 99f290bcba1f2d79665663d0199732b2c3b37391
Parents: 28b7161
Author: Neil Conway <ne...@gmail.com>
Authored: Mon Oct 24 15:53:44 2016 -0700
Committer: Vinod Kone <vi...@gmail.com>
Committed: Mon Oct 24 15:53:44 2016 -0700

----------------------------------------------------------------------
 src/tests/master_tests.cpp | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/99f290bc/src/tests/master_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/master_tests.cpp b/src/tests/master_tests.cpp
index 9963a0c..56126de 100644
--- a/src/tests/master_tests.cpp
+++ b/src/tests/master_tests.cpp
@@ -2186,16 +2186,10 @@ TEST_F(MasterTest, UnreachableTaskAfterFailover)
   ASSERT_SOME(master);
 
   // Step 2: Start a slave.
-  Future<SlaveRegisteredMessage> slaveRegisteredMessage =
-    FUTURE_PROTOBUF(SlaveRegisteredMessage(), _, _);
-
   StandaloneMasterDetector slaveDetector(master.get()->pid);
   Try<Owned<cluster::Slave>> slave = StartSlave(&slaveDetector);
   ASSERT_SOME(slave);
 
-  AWAIT_READY(slaveRegisteredMessage);
-  const SlaveID slaveId = slaveRegisteredMessage.get().slave_id();
-
   // Step 3: Start a scheduler.
   StandaloneMasterDetector schedDetector(master.get()->pid);
   MockScheduler sched;
@@ -2221,12 +2215,19 @@ TEST_F(MasterTest, UnreachableTaskAfterFailover)
   EXPECT_CALL(sched, statusUpdate(&driver, _))
     .WillOnce(FutureArg<1>(&runningStatus));
 
+  Future<Nothing> statusUpdateAck = FUTURE_DISPATCH(
+      slave.get()->pid, &Slave::_statusUpdateAcknowledgement);
+
   driver.launchTasks(offers.get()[0].id(), {task});
 
   AWAIT_READY(runningStatus);
   EXPECT_EQ(TASK_RUNNING, runningStatus.get().state());
   EXPECT_EQ(task.task_id(), runningStatus.get().task_id());
 
+  const SlaveID slaveId = runningStatus.get().slave_id();
+
+  AWAIT_READY(statusUpdateAck);
+
   // Step 4: Simulate master failover. We leave the slave without a
   // master so it does not attempt to re-register.
   slaveDetector.appoint(None());