You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by jo...@apache.org on 2016/12/03 00:13:13 UTC

[1/5] mesos git commit: Windows: Added support for Agent test harness.

Repository: mesos
Updated Branches:
  refs/heads/master a6bab9015 -> 60b9f2fff


Windows: Added support for Agent test harness.

Several files required to run any of the Agent tests currently can't be
compiled by MSVC. The individual reasons are mostly small, incidental
details -- missing headers, assumption of POSIX paths, and so on. The
one big exception to this is that the `main` function of the test binary
itself isn't setting up the WSA stack and making sure the right SEH
callbacks are present.

This commit addresses all of these issues.

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


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

Branch: refs/heads/master
Commit: dbffa9d8f9e5ee4cb52b2d4489b1f45b1ddbe3b8
Parents: a6bab90
Author: Alex Clemmer <cl...@gmail.com>
Authored: Fri Dec 2 14:00:23 2016 -0800
Committer: Joseph Wu <jo...@apache.org>
Committed: Fri Dec 2 14:00:49 2016 -0800

----------------------------------------------------------------------
 src/sched/sched.cpp         |  6 +++++
 src/scheduler/scheduler.cpp |  6 +++++
 src/tests/containerizer.hpp |  2 ++
 src/tests/environment.cpp   | 16 ++++++++++---
 src/tests/main.cpp          | 49 +++++++++++++++++++++++++++++++++++++++-
 src/tests/mock_docker.hpp   |  8 +++----
 6 files changed, 79 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/dbffa9d8/src/sched/sched.cpp
----------------------------------------------------------------------
diff --git a/src/sched/sched.cpp b/src/sched/sched.cpp
index 6a44d57..1eecb8b 100644
--- a/src/sched/sched.cpp
+++ b/src/sched/sched.cpp
@@ -14,14 +14,20 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#ifndef __WINDOWS__
 #include <dlfcn.h>
+#endif // __WINDOWS__
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#ifndef __WINDOWS__
 #include <unistd.h>
+#endif // __WINDOWS__
 
+#ifndef __WINDOWS__
 #include <arpa/inet.h>
+#endif // __WINDOWS__
 
 #include <cmath>
 #include <iostream>

http://git-wip-us.apache.org/repos/asf/mesos/blob/dbffa9d8/src/scheduler/scheduler.cpp
----------------------------------------------------------------------
diff --git a/src/scheduler/scheduler.cpp b/src/scheduler/scheduler.cpp
index d545c9f..956f487 100644
--- a/src/scheduler/scheduler.cpp
+++ b/src/scheduler/scheduler.cpp
@@ -14,14 +14,20 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#ifndef __WINDOWS__
 #include <dlfcn.h>
+#endif // __WINDOWS__
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#ifndef __WINDOWS__
 #include <unistd.h>
+#endif // __WINDOWS__
 
+#ifndef __WINDOWS__
 #include <arpa/inet.h>
+#endif // __WINDOWS__
 
 #include <iostream>
 #include <memory>

http://git-wip-us.apache.org/repos/asf/mesos/blob/dbffa9d8/src/tests/containerizer.hpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer.hpp b/src/tests/containerizer.hpp
index 9d99ac1..63fe236 100644
--- a/src/tests/containerizer.hpp
+++ b/src/tests/containerizer.hpp
@@ -17,7 +17,9 @@
 #ifndef __TEST_CONTAINERIZER_HPP__
 #define __TEST_CONTAINERIZER_HPP__
 
+#ifndef __WINDOWS__
 #include <unistd.h>
+#endif // __WINDOWS__
 
 #include <map>
 #include <memory>

http://git-wip-us.apache.org/repos/asf/mesos/blob/dbffa9d8/src/tests/environment.cpp
----------------------------------------------------------------------
diff --git a/src/tests/environment.cpp b/src/tests/environment.cpp
index 970136f..e08678c 100644
--- a/src/tests/environment.cpp
+++ b/src/tests/environment.cpp
@@ -14,10 +14,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#ifndef __WINDOWS__
 #include <sys/wait.h>
+#endif // __WINDOWS__
 
 #include <string.h>
+#ifndef __WINDOWS__
 #include <unistd.h>
+#endif // __WINDOWS__
 
 #include <list>
 #include <set>
@@ -43,6 +47,7 @@
 #include <stout/strings.hpp>
 
 #include <stout/os/exists.hpp>
+#include <stout/os/pstree.hpp>
 #include <stout/os/shell.hpp>
 
 #ifdef __linux__
@@ -634,6 +639,10 @@ class RootFilter : public TestFilter
 public:
   bool disable(const ::testing::TestInfo* test) const
   {
+#ifdef __WINDOWS__
+    // On Windows, `root` does not exist, so we cannot run `ROOT_` tests.
+    return matches(test, "ROOT_");
+#else
     Result<string> user = os::user();
     CHECK_SOME(user);
 
@@ -646,6 +655,7 @@ public:
 #endif // __linux__
 
     return matches(test, "ROOT_") && user.get() != "root";
+#endif // __WINDOWS__
   }
 };
 
@@ -785,9 +795,9 @@ Environment::Environment(const Flags& _flags) : flags(_flags)
 void Environment::SetUp()
 {
   // Clear any MESOS_ environment variables so they don't affect our tests.
-  char** environ = os::raw::environment();
-  for (int i = 0; environ[i] != nullptr; i++) {
-    string variable = environ[i];
+  char** env = os::raw::environment();
+  for (int i = 0; env[i] != nullptr; i++) {
+    string variable = env[i];
     if (variable.find("MESOS_") == 0) {
       string key;
       size_t eq = variable.find_first_of("=");

http://git-wip-us.apache.org/repos/asf/mesos/blob/dbffa9d8/src/tests/main.cpp
----------------------------------------------------------------------
diff --git a/src/tests/main.cpp b/src/tests/main.cpp
index e5990e2..c10eeac 100644
--- a/src/tests/main.cpp
+++ b/src/tests/main.cpp
@@ -25,6 +25,8 @@
 #include <stout/os.hpp>
 #include <stout/try.hpp>
 
+#include <stout/os/socket.hpp> // For `wsa_*` on Windows.
+
 #include "logging/logging.hpp"
 
 #include "messages/messages.hpp" // For GOOGLE_PROTOBUF_VERIFY_VERSION.
@@ -45,8 +47,38 @@ using std::endl;
 using std::string;
 
 
+#ifdef __WINDOWS__
+// A no-op parameter validator. We use this to prevent the Windows
+// implementation of the C runtime from calling `abort` during our test suite.
+// See comment in `main.cpp`.
+static void noop_invalid_parameter_handler(
+    const wchar_t* expression,
+    const wchar_t* function,
+    const wchar_t* file,
+    unsigned int line,
+    uintptr_t reserved)
+{
+  return;
+}
+#endif // __WINDOWS__
+
+
 int main(int argc, char** argv)
 {
+#ifdef __WINDOWS__
+  if (!net::wsa_initialize()) {
+    EXIT(EXIT_FAILURE) << "WSA failed to initialize";
+  }
+
+  // When we're running a debug build, the Windows implementation of the C
+  // runtime will validate parameters passed to C-standard functions like
+  // `::close`. When we are in debug mode, if a parameter is invalid, the
+  // handler will usually call `abort`, rather than populating `errno` and
+  // returning an error value. Since we expect some tests to pass invalid
+  // paramaters to these functions, we disable this for testing.
+  _set_invalid_parameter_handler(noop_invalid_parameter_handler);
+#endif // __WINDOWS__
+
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
   using mesos::internal::tests::flags; // Needed to disabmiguate.
@@ -130,5 +162,20 @@ int main(int argc, char** argv)
 
   testing::AddGlobalTestEnvironment(environment);
 
-  return RUN_ALL_TESTS();
+  const int test_results = RUN_ALL_TESTS();
+
+  // Prefer to return the error code from the test run over the error code
+  // from the WSA teardown. That is: if the test run failed, return that error
+  // code; but, if the tests passed, we still want to return an error if the
+  // WSA teardown failed. If both succeeded, return 0.
+  const bool teardown_failed =
+#ifdef __WINDOWS__
+    !net::wsa_cleanup();
+#else
+    false;
+#endif // __WINDOWS__
+
+  return test_results > 0
+    ? test_results
+    : teardown_failed;
 }

http://git-wip-us.apache.org/repos/asf/mesos/blob/dbffa9d8/src/tests/mock_docker.hpp
----------------------------------------------------------------------
diff --git a/src/tests/mock_docker.hpp b/src/tests/mock_docker.hpp
index a24f87c..829a760 100644
--- a/src/tests/mock_docker.hpp
+++ b/src/tests/mock_docker.hpp
@@ -106,8 +106,8 @@ public:
       const Option<mesos::Resources>& resources,
       const Option<std::map<std::string, std::string>>& env,
       const Option<std::vector<Device>>& devices,
-      const process::Subprocess::IO& stdout,
-      const process::Subprocess::IO& stderr) const
+      const process::Subprocess::IO& _stdout,
+      const process::Subprocess::IO& _stderr) const
   {
     return Docker::run(
         containerInfo,
@@ -118,8 +118,8 @@ public:
         resources,
         env,
         devices,
-        stdout,
-        stderr);
+        _stdout,
+        _stderr);
   }
 
   process::Future<std::list<Docker::Container>> _ps(


[2/5] mesos git commit: Fixed switchboard build break on Windows.

Posted by jo...@apache.org.
Fixed switchboard build break on Windows.

This commit will fix a build break on Windows 10, MSVC 1900, introduced
dually by commits `bd1bd1eeee50dcb23d65dcadb4903822ffd88cfb` and
`071ed5226be790aecd5ace1a7abda30b682078be`.

The recent additon of the I/O switchboard includes two things that break
the Windows build. This commit will correct both of them.

First, `switchboard_main.cpp` references several constructs that are
conditionally compiled out of the Windows build. One example is
`IOSwitchboardServerFlags`. This was never supposed to be built on
Windows, but it was accidentally added to the build, so this commit will
simply remove it from the Windows build.

Second, the I/O switchboard changes introduced a new flag,
`--io_switchboard_enable_server`, which is not implemented on Windows.
When this change was submitted, this flag was accidentally conditionally
not compiled on Windows builds, even though it is referenced in
`switchboard.cpp` (since initialization of the switchboard is different
when the server is not turned on). This commit will fix this issue by
simply moving the `#ifdef` down so that the symbol is defined and used
properly.

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


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

Branch: refs/heads/master
Commit: 49ccd13fa9cd50adaf11b4aff913a002e8b27cab
Parents: dbffa9d
Author: Alex Clemmer <cl...@gmail.com>
Authored: Fri Dec 2 14:12:02 2016 -0800
Committer: Joseph Wu <jo...@apache.org>
Committed: Fri Dec 2 14:12:07 2016 -0800

----------------------------------------------------------------------
 cmake/MesosConfigure.cmake                   |  8 +++---
 src/slave/containerizer/mesos/CMakeLists.txt | 33 +++++++++++++++--------
 src/slave/flags.hpp                          |  2 +-
 3 files changed, 28 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/49ccd13f/cmake/MesosConfigure.cmake
----------------------------------------------------------------------
diff --git a/cmake/MesosConfigure.cmake b/cmake/MesosConfigure.cmake
index 9f747e9..6a9ed9d 100755
--- a/cmake/MesosConfigure.cmake
+++ b/cmake/MesosConfigure.cmake
@@ -136,9 +136,11 @@ set(
   MESOS_FETCHER mesos-fetcher
   CACHE STRING "Target for fetcher")
 
-set(
-  MESOS_IO_SWITCHBOARD mesos-io-switchboard
-  CACHE STRING "Target for the IO switchboard")
+if (NOT WIN32)
+  set(
+    MESOS_IO_SWITCHBOARD mesos-io-switchboard
+    CACHE STRING "Target for the IO switchboard")
+endif (NOT WIN32)
 
 set(
   MESOS_MASTER mesos-master

http://git-wip-us.apache.org/repos/asf/mesos/blob/49ccd13f/src/slave/containerizer/mesos/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/CMakeLists.txt b/src/slave/containerizer/mesos/CMakeLists.txt
index a7596f2..650b1a2 100644
--- a/src/slave/containerizer/mesos/CMakeLists.txt
+++ b/src/slave/containerizer/mesos/CMakeLists.txt
@@ -21,27 +21,38 @@ set(CONTAINERIZER_EXECUTABLE_SRC
   main.cpp
   )
 
-set(MESOS_IO_SWITCHBOARD_SRC
-  ${MESOS_IO_SWITCHBOARD_SRC}
-  io/switchboard_main.cpp
-  )
+if (NOT WIN32)
+  set(MESOS_IO_SWITCHBOARD_SRC
+    ${MESOS_IO_SWITCHBOARD_SRC}
+    io/switchboard_main.cpp
+    )
+endif (NOT WIN32)
 
 # THE CONTAINERIZER EXECUTABLE.
 ###############################
 add_executable(${MESOS_CONTAINERIZER} ${CONTAINERIZER_EXECUTABLE_SRC})
-add_executable(${MESOS_IO_SWITCHBOARD} ${MESOS_IO_SWITCHBOARD_SRC})
+if (NOT WIN32)
+  add_executable(${MESOS_IO_SWITCHBOARD} ${MESOS_IO_SWITCHBOARD_SRC})
+endif (NOT WIN32)
 
 # ADD LINKER FLAGS (generates, e.g., -lglog on Linux).
 ######################################################
 target_link_libraries(${MESOS_CONTAINERIZER}  ${AGENT_LIBS} ${MESOS_LIBS_TARGET})
-target_link_libraries(${MESOS_IO_SWITCHBOARD} ${AGENT_LIBS} ${MESOS_LIBS_TARGET})
+if (NOT WIN32)
+  target_link_libraries(
+    ${MESOS_IO_SWITCHBOARD}
+    ${AGENT_LIBS}
+    ${MESOS_LIBS_TARGET})
+endif (NOT WIN32)
 
 # ADD BINARY DEPENDENCIES (tells CMake what to compile/build first).
 ####################################################################
-add_dependencies(
-  ${MESOS_TARGET}
-  ${MESOS_CONTAINERIZER}
-  ${MESOS_IO_SWITCHBOARD})
+add_dependencies(${MESOS_TARGET} ${MESOS_CONTAINERIZER})
+if (NOT WIN32)
+  add_dependencies(${MESOS_TARGET} ${MESOS_IO_SWITCHBOARD})
+endif (NOT WIN32)
 
 add_dependencies(${MESOS_CONTAINERIZER}  ${MESOS_LIBS_TARGET})
-add_dependencies(${MESOS_IO_SWITCHBOARD} ${MESOS_LIBS_TARGET})
+if (NOT WIN32)
+  add_dependencies(${MESOS_IO_SWITCHBOARD} ${MESOS_LIBS_TARGET})
+endif (NOT WIN32)

http://git-wip-us.apache.org/repos/asf/mesos/blob/49ccd13f/src/slave/flags.hpp
----------------------------------------------------------------------
diff --git a/src/slave/flags.hpp b/src/slave/flags.hpp
index c6c3197..02af284 100644
--- a/src/slave/flags.hpp
+++ b/src/slave/flags.hpp
@@ -69,8 +69,8 @@ public:
 
 #ifndef __WINDOWS__
   bool switch_user;
-  bool io_switchboard_enable_server;
 #endif // __WINDOWS__
+  bool io_switchboard_enable_server;
   std::string frameworks_home;  // TODO(benh): Make an Option.
   Duration registration_backoff_factor;
   Duration authentication_backoff_factor;


[3/5] mesos git commit: Fixed ownership semantics of `DynamicLibrary`.

Posted by jo...@apache.org.
Fixed ownership semantics of `DynamicLibrary`.

The class `DynamicLibrary` is a RAII wrapper around a handle to a
`dlopen`'ed library. To ensure consistent state any `dlopen`'ed library
will be `dlcose`'ed when the "owning" `DynamicLibrary` gets destructed
(e.g., when the wrapper goes out of scope, or when the library holding
a `static` `DynamicLibrary` gets unloaded).

This patch ensure that `DynamicLibraries` can be neither copy- nor
move-constructed. A copy constructor would lead to two wrappers
managing the same library handle which will lead to inconsistent state
(e.g., a library might be unloaded when a copy gets destructed even
though another copy still exists). While it might be possible to
implement a wrapper allowing move-construction, the current wrapper
does not support this.

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


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

Branch: refs/heads/master
Commit: b763ee6c60f747464bf66030c979644be654014f
Parents: 49ccd13
Author: Benjamin Bannier <be...@mesosphere.io>
Authored: Fri Dec 2 15:47:06 2016 -0800
Committer: Joseph Wu <jo...@apache.org>
Committed: Fri Dec 2 15:47:06 2016 -0800

----------------------------------------------------------------------
 3rdparty/stout/include/stout/posix/dynamiclibrary.hpp   | 6 ++++++
 3rdparty/stout/include/stout/windows/dynamiclibrary.hpp | 6 ++++++
 2 files changed, 12 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/b763ee6c/3rdparty/stout/include/stout/posix/dynamiclibrary.hpp
----------------------------------------------------------------------
diff --git a/3rdparty/stout/include/stout/posix/dynamiclibrary.hpp b/3rdparty/stout/include/stout/posix/dynamiclibrary.hpp
index 2b34322..6a50592 100644
--- a/3rdparty/stout/include/stout/posix/dynamiclibrary.hpp
+++ b/3rdparty/stout/include/stout/posix/dynamiclibrary.hpp
@@ -30,6 +30,12 @@ class DynamicLibrary
 public:
   DynamicLibrary() : handle_(nullptr) { }
 
+  // Since this class manages a naked handle it cannot be copy- or
+  // move-constructed.
+  // TODO(bbannier): Allow for move-construction.
+  DynamicLibrary(const DynamicLibrary&) = delete;
+  DynamicLibrary(DynamicLibrary&&) = delete;
+
   virtual ~DynamicLibrary()
   {
     if (handle_ != nullptr) {

http://git-wip-us.apache.org/repos/asf/mesos/blob/b763ee6c/3rdparty/stout/include/stout/windows/dynamiclibrary.hpp
----------------------------------------------------------------------
diff --git a/3rdparty/stout/include/stout/windows/dynamiclibrary.hpp b/3rdparty/stout/include/stout/windows/dynamiclibrary.hpp
index cfa6c88..28b8e32 100644
--- a/3rdparty/stout/include/stout/windows/dynamiclibrary.hpp
+++ b/3rdparty/stout/include/stout/windows/dynamiclibrary.hpp
@@ -30,6 +30,12 @@ class DynamicLibrary
 public:
   DynamicLibrary() : handle_(nullptr) { }
 
+  // Since this class manages a naked handle it cannot be copy- or
+  // move-constructed.
+  // TODO(bbannier): Allow for move-construction.
+  DynamicLibrary(const DynamicLibrary&) = delete;
+  DynamicLibrary(DynamicLibrary&&) = delete;
+
   virtual ~DynamicLibrary()
   {
     if (handle_ != nullptr) {


[4/5] mesos git commit: Windows: Fixed warnings in `getcwd.hpp`.

Posted by jo...@apache.org.
Windows: Fixed warnings in `getcwd.hpp`.

This removes an implicit cast from unsigned to signed int.

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


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

Branch: refs/heads/master
Commit: e282adf33ac7f695d9c8454cb4dd705bc7fb2fd3
Parents: b763ee6
Author: Daniel Pravat <dp...@outlook.com>
Authored: Fri Dec 2 15:47:39 2016 -0800
Committer: Joseph Wu <jo...@apache.org>
Committed: Fri Dec 2 15:52:12 2016 -0800

----------------------------------------------------------------------
 3rdparty/stout/include/stout/windows.hpp | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/e282adf3/3rdparty/stout/include/stout/windows.hpp
----------------------------------------------------------------------
diff --git a/3rdparty/stout/include/stout/windows.hpp b/3rdparty/stout/include/stout/windows.hpp
index c384026..d89c709 100644
--- a/3rdparty/stout/include/stout/windows.hpp
+++ b/3rdparty/stout/include/stout/windows.hpp
@@ -33,6 +33,8 @@
 
 #include <memory>
 
+#include <glog/logging.h>
+
 
 #ifdef _UNICODE
 // Much of the core Windows API is available both in `string` and `wstring`
@@ -346,10 +348,10 @@ decltype(_chdir(path))
 }
 
 
-inline auto getcwd(char* path, int maxlen) ->
-decltype(_getcwd(path, maxlen))
+inline char * getcwd(char* path, size_t maxlen)
 {
-  return _getcwd(path, maxlen);
+  CHECK_LE(maxlen, INT_MAX);
+  return _getcwd(path, static_cast<int>(maxlen));
 }
 
 


[5/5] mesos git commit: Windows: Fixed namespace resolution issue for test builds.

Posted by jo...@apache.org.
Windows: Fixed namespace resolution issue for test builds.

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


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

Branch: refs/heads/master
Commit: 60b9f2fff082a52cab02be4d96fa2d4df0261ad0
Parents: e282adf
Author: Alex Clemmer <cl...@gmail.com>
Authored: Fri Dec 2 16:09:03 2016 -0800
Committer: Joseph Wu <jo...@apache.org>
Committed: Fri Dec 2 16:09:07 2016 -0800

----------------------------------------------------------------------
 src/tests/common/recordio_tests.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/60b9f2ff/src/tests/common/recordio_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/common/recordio_tests.cpp b/src/tests/common/recordio_tests.cpp
index 872a1dc..63e284a 100644
--- a/src/tests/common/recordio_tests.cpp
+++ b/src/tests/common/recordio_tests.cpp
@@ -79,7 +79,7 @@ TEST(RecordIOReaderTest, EndOfFile)
   process::http::Pipe pipe;
   pipe.writer().write(data);
 
-  internal::recordio::Reader<string> reader(
+  mesos::internal::recordio::Reader<string> reader(
       ::recordio::Decoder<string>(strings::lower),
       pipe.reader());
 
@@ -109,7 +109,7 @@ TEST(RecordIOReaderTest, DecodingFailure)
   ::recordio::Encoder<string> encoder(strings::upper);
   process::http::Pipe pipe;
 
-  internal::recordio::Reader<string> reader(
+  mesos::internal::recordio::Reader<string> reader(
       ::recordio::Decoder<string>(strings::lower),
       pipe.reader());
 
@@ -139,7 +139,7 @@ TEST(RecordIOReaderTest, PipeFailure)
   ::recordio::Encoder<string> encoder(strings::upper);
   process::http::Pipe pipe;
 
-  internal::recordio::Reader<string> reader(
+  mesos::internal::recordio::Reader<string> reader(
       ::recordio::Decoder<string>(strings::lower),
       pipe.reader());