You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by be...@apache.org on 2019/08/20 13:46:04 UTC

[mesos] 01/03: Fixed a flaky operation reconciliation test.

This is an automated email from the ASF dual-hosted git repository.

bennoe pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git

commit 188c83af78d0357523d53f75b6e1b05b59f461c2
Author: Benno Evers <be...@mesosphere.com>
AuthorDate: Tue Aug 13 17:26:02 2019 +0200

    Fixed a flaky operation reconciliation test.
    
    The FrameworkReconciliationRaceWithUpdateSlave test from the
    operation reconciliation tests was flaky since we did not wait
    for the scheduler to reconnect before attempting to send a
    subscribe call.
    
    Review: https://reviews.apache.org/r/71297
---
 src/tests/operation_reconciliation_tests.cpp | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/tests/operation_reconciliation_tests.cpp b/src/tests/operation_reconciliation_tests.cpp
index 9d084c0..12552d3 100644
--- a/src/tests/operation_reconciliation_tests.cpp
+++ b/src/tests/operation_reconciliation_tests.cpp
@@ -1833,11 +1833,15 @@ TEST_P(
   EXPECT_EQ(OPERATION_FINISHED, finishedUpdate->status().state());
   EXPECT_TRUE(finishedUpdate->status().has_uuid());
 
+  Future<mesos::v1::scheduler::Mesos*> disconnected;
   EXPECT_CALL(*scheduler, disconnected(_))
-    .Times(2);
+    .Times(1)
+    .WillOnce(FutureArg<0>(&disconnected));
 
+  Future<mesos::v1::scheduler::Mesos*> connected;
   EXPECT_CALL(*scheduler, connected(_))
-    .Times(2);
+    .Times(1)
+    .WillOnce(FutureArg<0>(&connected));
 
   // Drop the `UpdateSlaveMessage` which contains the resubscribed resource
   // provider in order to simulate a race between this message and the
@@ -1845,8 +1849,12 @@ TEST_P(
   updateSlaveMessage = DROP_PROTOBUF(UpdateSlaveMessage(), _, _);
 
   // Restart the master to clear out the master's operation state and force
-  // an agent reregistration.
+  // an agent reregistration. Also appoint `None()` to avoid a spurious
+  // detection of the master since it reuses the same `UPID`.
+  detector->appoint(None());
   master->reset();
+  AWAIT_READY(disconnected);
+
   master = StartMaster();
   ASSERT_SOME(master);
 
@@ -1866,6 +1874,7 @@ TEST_P(
 
   frameworkInfo.mutable_id()->CopyFrom(frameworkId);
 
+  AWAIT_READY(connected);
   mesos.send(createCallSubscribe(frameworkInfo, frameworkId));
 
   AWAIT_READY(resubscribed);