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:19 UTC

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

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));