You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by tn...@apache.org on 2015/12/10 16:31:18 UTC

[1/3] mesos git commit: Fixed tests to call socket accept before sending response.

Repository: mesos
Updated Branches:
  refs/heads/master 388dd5fcb -> 2ecd10240


Fixed tests to call socket accept before sending response.

By calling accept before sending a response, the server would be ready for
client's next request.

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


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

Branch: refs/heads/master
Commit: 2ecd10240d7671dfe6b16118e5ad2e33f8cbc712
Parents: c1af7d0
Author: Jojy Varghese <jo...@mesosphere.io>
Authored: Thu Dec 10 16:57:07 2015 +0800
Committer: Timothy Chen <tn...@apache.org>
Committed: Thu Dec 10 23:31:01 2015 +0800

----------------------------------------------------------------------
 .../containerizer/provisioner_docker_tests.cpp     | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/2ecd1024/src/tests/containerizer/provisioner_docker_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/provisioner_docker_tests.cpp b/src/tests/containerizer/provisioner_docker_tests.cpp
index 3f1717b..31e7a31 100644
--- a/src/tests/containerizer/provisioner_docker_tests.cpp
+++ b/src/tests/containerizer/provisioner_docker_tests.cpp
@@ -690,10 +690,11 @@ TEST_F(RegistryClientTest, SimpleGetManifest)
   // Send 401 Unauthorized response for a manifest request.
   Future<string> manifestHttpRequest = Socket(socket.get()).recv();
   AWAIT_ASSERT_READY(manifestHttpRequest);
+
+  socket = server.get().accept();
   AWAIT_ASSERT_READY(Socket(socket.get()).send(unauthHttpResponse));
 
   // Token response.
-  socket = server.get().accept();
   AWAIT_ASSERT_READY(socket);
 
   Future<string> tokenRequest = Socket(socket.get()).recv();
@@ -709,10 +710,10 @@ TEST_F(RegistryClientTest, SimpleGetManifest)
     "\r\n" +
     tokenResponse;
 
+  socket = server.get().accept();
   AWAIT_ASSERT_READY(Socket(socket.get()).send(tokenHttpResponse));
 
   // Manifest response.
-  socket = server.get().accept();
   AWAIT_ASSERT_READY(socket);
 
   manifestHttpRequest = Socket(socket.get()).recv();
@@ -868,10 +869,11 @@ TEST_F(RegistryClientTest, SimpleGetBlob)
   // Send 401 Unauthorized response.
   Future<string> blobHttpRequest = Socket(socket.get()).recv();
   AWAIT_ASSERT_READY(blobHttpRequest);
+
+  socket = server.get().accept();
   AWAIT_ASSERT_READY(Socket(socket.get()).send(unauthHttpResponse));
 
   // Send token response.
-  socket = server.get().accept();
   AWAIT_ASSERT_READY(socket);
 
   Future<string> tokenRequest = Socket(socket.get()).recv();
@@ -887,10 +889,10 @@ TEST_F(RegistryClientTest, SimpleGetBlob)
     "\r\n" +
     tokenResponse;
 
+  socket = server.get().accept();
   AWAIT_ASSERT_READY(Socket(socket.get()).send(tokenHttpResponse));
 
   // Send redirect.
-  socket = server.get().accept();
   AWAIT_ASSERT_READY(socket);
 
   blobHttpRequest = Socket(socket.get()).recv();
@@ -1037,10 +1039,11 @@ TEST_F(RegistryClientTest, SimpleRegistryPuller)
   // Send 401 Unauthorized response for a manifest request.
   Future<string> registryPullerHttpRequestFuture = Socket(socket.get()).recv();
   AWAIT_ASSERT_READY(registryPullerHttpRequestFuture);
+
+  socket = server.get().accept();
   AWAIT_ASSERT_READY(Socket(socket.get()).send(unauthHttpResponse));
 
   // Token response.
-  socket = server.get().accept();
   AWAIT_ASSERT_READY(socket);
 
   Future<string> tokenRequestFuture = Socket(socket.get()).recv();
@@ -1056,10 +1059,10 @@ TEST_F(RegistryClientTest, SimpleRegistryPuller)
     "\r\n" +
     tokenResponse;
 
+  socket = server.get().accept();
   AWAIT_ASSERT_READY(Socket(socket.get()).send(tokenHttpResponse));
 
   // Manifest response.
-  socket = server.get().accept();
   AWAIT_ASSERT_READY(socket);
 
   registryPullerHttpRequestFuture = Socket(socket.get()).recv();
@@ -1119,10 +1122,10 @@ TEST_F(RegistryClientTest, SimpleRegistryPuller)
     "\r\n" +
     manifestResponse;
 
+  socket = server.get().accept();
   AWAIT_ASSERT_READY(Socket(socket.get()).send(manifestHttpResponse));
 
   // Redirect response.
-  socket = server.get().accept();
   AWAIT_ASSERT_READY(socket);
 
   registryPullerHttpRequestFuture = Socket(socket.get()).recv();


[2/3] mesos git commit: Created separate server to serve blobs in RegistryClientTests.

Posted by tn...@apache.org.
Created separate server to serve blobs in RegistryClientTests.

By having a separate blob server, it simulates the real world more closely.
It also allows the test server to be in accept mode early.

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


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

Branch: refs/heads/master
Commit: c1af7d0aaa81beb29cf9555d7b79eb1a0773a382
Parents: 21b5bbd
Author: Jojy Varghese <jo...@mesosphere.io>
Authored: Thu Dec 10 16:55:41 2015 +0800
Committer: Timothy Chen <tn...@apache.org>
Committed: Thu Dec 10 23:31:01 2015 +0800

----------------------------------------------------------------------
 .../containerizer/provisioner_docker_tests.cpp  | 58 ++++++++++++--------
 1 file changed, 35 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/c1af7d0a/src/tests/containerizer/provisioner_docker_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/provisioner_docker_tests.cpp b/src/tests/containerizer/provisioner_docker_tests.cpp
index d562d47..3f1717b 100644
--- a/src/tests/containerizer/provisioner_docker_tests.cpp
+++ b/src/tests/containerizer/provisioner_docker_tests.cpp
@@ -521,13 +521,6 @@ protected:
         {"SSL_KEY_FILE", key_path().value},
         {"SSL_CERT_FILE", certificate_path().value}});
   }
-
-  // Abstracts the concept of the directory the tests would be sandboxed to.
-  // TODO(jojy): Have uuid based unique working directory.
-  string working_directory()
-  {
-    return os::getcwd();
-  }
 };
 
 
@@ -834,6 +827,14 @@ TEST_F(RegistryClientTest, SimpleGetBlob)
 
   Future<Socket> socket = server.get().accept();
 
+  Try<Socket> blobServer = getServer();
+
+  ASSERT_SOME(blobServer);
+  ASSERT_SOME(blobServer.get().address());
+  ASSERT_SOME(blobServer.get().address().get().hostname());
+
+  Future<Socket> blobServerAcceptSocket = blobServer.get().accept();
+
   const process::http::URL url(
       "https",
       server.get().address().get().hostname().get(),
@@ -844,7 +845,7 @@ TEST_F(RegistryClientTest, SimpleGetBlob)
 
   ASSERT_SOME(registryClient);
 
-  const Path blobPath(path::join(working_directory(), "blob"));
+  const Path blobPath(path::join(os::getcwd(), "blob"));
 
   Future<size_t> result =
     registryClient.get()->getBlob(
@@ -898,16 +899,16 @@ TEST_F(RegistryClientTest, SimpleGetBlob)
   const string redirectHttpResponse =
     string("HTTP/1.1 307 Temporary Redirect\r\n") +
     "Location: https://" +
-    stringify(server.get().address().get()) + "\r\n" +
+    blobServer.get().address().get().hostname().get() + ":" +
+    stringify(blobServer.get().address().get().port) + "/blob \r\n" +
     "\r\n";
 
   AWAIT_ASSERT_READY(Socket(socket.get()).send(redirectHttpResponse));
 
   // Finally send blob response.
-  socket = server.get().accept();
-  AWAIT_ASSERT_READY(socket);
+  AWAIT_ASSERT_READY(blobServerAcceptSocket);
 
-  blobHttpRequest = Socket(socket.get()).recv();
+  blobHttpRequest = Socket(blobServerAcceptSocket.get()).recv();
   AWAIT_ASSERT_READY(blobHttpRequest);
 
   const string blobResponse = stringify(Clock::now());
@@ -919,7 +920,8 @@ TEST_F(RegistryClientTest, SimpleGetBlob)
     "\r\n" +
     blobResponse;
 
-  AWAIT_ASSERT_READY(Socket(socket.get()).send(blobHttpResponse));
+  AWAIT_ASSERT_READY(Socket(blobServerAcceptSocket.get()).send(
+      blobHttpResponse));
 
   AWAIT_ASSERT_READY(result);
 
@@ -949,7 +951,7 @@ TEST_F(RegistryClientTest, BadRequest)
 
   ASSERT_SOME(registryClient);
 
-  const Path blobPath(path::join(working_directory(), "blob"));
+  const Path blobPath(path::join(os::getcwd(), "blob"));
 
   Future<size_t> result =
     registryClient.get()->getBlob(
@@ -992,6 +994,14 @@ TEST_F(RegistryClientTest, SimpleRegistryPuller)
 
   Future<Socket> socket = server.get().accept();
 
+  Try<Socket> blobServer = getServer();
+
+  ASSERT_SOME(blobServer);
+  ASSERT_SOME(blobServer.get().address());
+  ASSERT_SOME(blobServer.get().address().get().hostname());
+
+  Future<Socket> blobServerAcceptSock = blobServer.get().accept();
+
   Flags flags;
   flags.docker_registry = server.get().address().get().hostname().get();
   flags.docker_registry_port = stringify(server.get().address().get().port);
@@ -1002,7 +1012,7 @@ TEST_F(RegistryClientTest, SimpleRegistryPuller)
 
   ASSERT_SOME(registryPuller);
 
-  const Path registryPullerPath(working_directory());
+  const Path registryPullerPath(os::getcwd());
 
   Try<slave::docker::Image::Name> imageName =
     parseImageName("busybox");
@@ -1120,12 +1130,19 @@ TEST_F(RegistryClientTest, SimpleRegistryPuller)
 
   const string redirectHttpResponse =
     string("HTTP/1.1 307 Temporary Redirect\r\n") +
+    "Content-Length : 0\r\n" +
     "Location: https://" +
-    stringify(server.get().address().get()) + "\r\n" +
+    blobServer.get().address().get().hostname().get() + ":" +
+    stringify(blobServer.get().address().get().port) + "/blob \r\n" +
     "\r\n";
 
   AWAIT_ASSERT_READY(Socket(socket.get()).send(redirectHttpResponse));
 
+  AWAIT_ASSERT_READY(blobServerAcceptSock);
+
+  registryPullerHttpRequestFuture = Socket(blobServerAcceptSock.get()).recv();
+  AWAIT_ASSERT_READY(registryPullerHttpRequestFuture);
+
   // Prepare the blob response from the server. The blob response buffer is a
   // tarball. So we create a tarball of our test response and send that.
   const string blobFile = "blob";
@@ -1152,6 +1169,7 @@ TEST_F(RegistryClientTest, SimpleRegistryPuller)
       Subprocess::PATH("/dev/null"),
       Subprocess::PATH("/dev/null"),
       Subprocess::PATH("/dev/null"));
+
   ASSERT_SOME(s);
   AWAIT_ASSERT_READY(s.get().status());
 
@@ -1197,13 +1215,7 @@ TEST_F(RegistryClientTest, SimpleRegistryPuller)
       tarBuffer.get(),
       tarSize.get().bytes());
 
-  socket = server.get().accept();
-  AWAIT_ASSERT_READY(socket);
-
-  registryPullerHttpRequestFuture = Socket(socket.get()).recv();
-  AWAIT_ASSERT_READY(registryPullerHttpRequestFuture);
-
-  AWAIT_ASSERT_READY(Socket(socket.get()).send(
+  AWAIT_ASSERT_READY(Socket(blobServerAcceptSock.get()).send(
       responseBuffer.get(),
       blobResponseSize));
 


[3/3] mesos git commit: Changed RegistryClientTest to use instance work directory.

Posted by tn...@apache.org.
Changed RegistryClientTest to use instance work directory.

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


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

Branch: refs/heads/master
Commit: 21b5bbdba5c30fd6d73856f544b23a524994f131
Parents: 388dd5f
Author: Jojy Varghese <jo...@mesosphere.io>
Authored: Thu Dec 10 16:41:57 2015 +0800
Committer: Timothy Chen <tn...@apache.org>
Committed: Thu Dec 10 23:31:01 2015 +0800

----------------------------------------------------------------------
 .../containerizer/provisioner_docker_tests.cpp  | 25 ++++++--------------
 1 file changed, 7 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/21b5bbdb/src/tests/containerizer/provisioner_docker_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/provisioner_docker_tests.cpp b/src/tests/containerizer/provisioner_docker_tests.cpp
index c63bf53..d562d47 100644
--- a/src/tests/containerizer/provisioner_docker_tests.cpp
+++ b/src/tests/containerizer/provisioner_docker_tests.cpp
@@ -522,25 +522,14 @@ protected:
         {"SSL_CERT_FILE", certificate_path().value}});
   }
 
-  static void SetUpTestCase()
+  // Abstracts the concept of the directory the tests would be sandboxed to.
+  // TODO(jojy): Have uuid based unique working directory.
+  string working_directory()
   {
-    if (os::mkdir(RegistryClientTest::OUTPUT_DIR).isError()) {
-      ABORT("Could not create temporary directory: " +
-          RegistryClientTest::OUTPUT_DIR);
-    }
+    return os::getcwd();
   }
-
-  static void TearDownTestCase()
-  {
-    SSLTest::TearDownTestCase();
-
-    os::rmdir(RegistryClientTest::OUTPUT_DIR);
-  }
-
-  static const string OUTPUT_DIR;
 };
 
-const string RegistryClientTest::OUTPUT_DIR = "output_dir";
 
 // Tests TokenManager for a simple token request.
 TEST_F(RegistryClientTest, SimpleGetToken)
@@ -855,7 +844,7 @@ TEST_F(RegistryClientTest, SimpleGetBlob)
 
   ASSERT_SOME(registryClient);
 
-  const Path blobPath(RegistryClientTest::OUTPUT_DIR + "/blob");
+  const Path blobPath(path::join(working_directory(), "blob"));
 
   Future<size_t> result =
     registryClient.get()->getBlob(
@@ -960,7 +949,7 @@ TEST_F(RegistryClientTest, BadRequest)
 
   ASSERT_SOME(registryClient);
 
-  const Path blobPath(RegistryClientTest::OUTPUT_DIR + "/blob");
+  const Path blobPath(path::join(working_directory(), "blob"));
 
   Future<size_t> result =
     registryClient.get()->getBlob(
@@ -1013,7 +1002,7 @@ TEST_F(RegistryClientTest, SimpleRegistryPuller)
 
   ASSERT_SOME(registryPuller);
 
-  const Path registryPullerPath(RegistryClientTest::OUTPUT_DIR);
+  const Path registryPullerPath(working_directory());
 
   Try<slave::docker::Image::Name> imageName =
     parseImageName("busybox");