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 <neil.con...@gmail.com> Authored: Mon Oct 24 15:53:44 2016 -0700 Committer: Vinod Kone <vinodk...@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());