Repository: mesos
Updated Branches:
  refs/heads/master 7e54d3df7 -> 6bf85dcfd


Fixed the flaky HttpConnection.ClosingResponse test.


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

Branch: refs/heads/master
Commit: 6bf85dcfd3353941164a38374677cf95dfddd918
Parents: 7e54d3d
Author: Benjamin Mahler <[email protected]>
Authored: Fri Dec 11 11:44:19 2015 -0800
Committer: Benjamin Mahler <[email protected]>
Committed: Fri Dec 11 11:45:10 2015 -0800

----------------------------------------------------------------------
 3rdparty/libprocess/src/tests/http_tests.cpp | 24 +++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/6bf85dcf/3rdparty/libprocess/src/tests/http_tests.cpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/src/tests/http_tests.cpp 
b/3rdparty/libprocess/src/tests/http_tests.cpp
index 2de75ca..d284361 100644
--- a/3rdparty/libprocess/src/tests/http_tests.cpp
+++ b/3rdparty/libprocess/src/tests/http_tests.cpp
@@ -910,15 +910,17 @@ TEST(HTTPConnectionTest, ClosingResponse)
 
   http::Connection connection = connect.get();
 
-  // Issue two pipelined requests, the server will respond
+  // Issue two pipelined requests; the server will respond
   // with a 'Connection: close' for the first response, which
-  // will lead to a disconnection.
-  Promise<http::Response> promise1, promise2;
-  Future<http::Request> get1, get2;
+  // will trigger a disconnection and break the pipeline. This
+  // means that the second request arrives at the server but
+  // the response cannot be received due to the disconnection.
+  Promise<http::Response> promise1;
+  Future<Nothing> get2;
 
   EXPECT_CALL(*http.process, get(_))
-    .WillOnce(DoAll(FutureArg<0>(&get1), Return(promise1.future())))
-    .WillOnce(DoAll(FutureArg<0>(&get2), Return(promise2.future())));
+    .WillOnce(Return(promise1.future()))
+    .WillOnce(DoAll(FutureSatisfy(&get2), Return(http::OK())));
 
   http::Request request1, request2;
 
@@ -934,12 +936,14 @@ TEST(HTTPConnectionTest, ClosingResponse)
   Future<http::Response> response1 = connection.send(request1);
   Future<http::Response> response2 = connection.send(request2);
 
-  // The first response will close the connection.
-  http::Response ok = http::OK("body");
-  ok.headers["Connection"] = "close";
+  http::Response close = http::OK("body");
+  close.headers["Connection"] = "close";
 
-  promise1.set(ok);
+  // Wait for both requests to arrive, then issue the closing response.
+  AWAIT_READY(get2);
+  promise1.set(close);
 
+  // The second response will fail because of 'Connection: close'.
   AWAIT_READY(response1);
   AWAIT_FAILED(response2);
 

Reply via email to