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 2017/04/11 21:47:55 UTC

[3/3] mesos git commit: Refactored Mesos tests `Environment` class on stout test changes.

Refactored Mesos tests `Environment` class on stout test changes.

In order to support test filters on stout and libprocess, some of the
logic in the Mesos test `Environment` class was moved into stout.
This commit changes the Mesos test `Environment` to inherit the
stout test `Environment`.

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


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

Branch: refs/heads/master
Commit: a1400f79ef1c7bebd33c81a4ad6ebb64af968d8b
Parents: 9bf251b
Author: John Kordich <jo...@microsoft.com>
Authored: Tue Apr 11 12:19:09 2017 -0700
Committer: Joseph Wu <jo...@apache.org>
Committed: Tue Apr 11 14:32:02 2017 -0700

----------------------------------------------------------------------
 src/tests/environment.cpp | 142 +++++++----------------------------------
 src/tests/environment.hpp |   4 +-
 2 files changed, 27 insertions(+), 119 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/a1400f79/src/tests/environment.cpp
----------------------------------------------------------------------
diff --git a/src/tests/environment.cpp b/src/tests/environment.cpp
index e3cff18..3d2d8f1 100644
--- a/src/tests/environment.cpp
+++ b/src/tests/environment.cpp
@@ -78,6 +78,8 @@ using std::vector;
 
 using process::Owned;
 
+using stout::internal::tests::TestFilter;
+
 namespace mesos {
 namespace internal {
 namespace tests {
@@ -86,32 +88,6 @@ namespace tests {
 Environment* environment;
 
 
-class TestFilter
-{
-public:
-  TestFilter() {}
-  virtual ~TestFilter() {}
-
-  // Returns true iff the test should be disabled.
-  virtual bool disable(const ::testing::TestInfo* test) const = 0;
-
-  // Returns whether the test name / parameterization matches the
-  // pattern.
-  static bool matches(const ::testing::TestInfo* test, const string& pattern)
-  {
-    if (strings::contains(test->test_case_name(), pattern) ||
-        strings::contains(test->name(), pattern)) {
-      return true;
-    } else if (test->type_param() != nullptr &&
-               strings::contains(test->type_param(), pattern)) {
-      return true;
-    }
-
-    return false;
-  }
-};
-
-
 class BenchmarkFilter : public TestFilter
 {
 public:
@@ -686,99 +662,29 @@ private:
 };
 
 
-// Return list of disabled tests based on test name based filters.
-static vector<string> disabled(
-    const ::testing::UnitTest* unitTest,
-    const vector<Owned<TestFilter>>& filters)
-{
-  vector<string> disabled;
-
-  for (int i = 0; i < unitTest->total_test_case_count(); i++) {
-    const ::testing::TestCase* testCase = unitTest->GetTestCase(i);
-    for (int j = 0; j < testCase->total_test_count(); j++) {
-      const ::testing::TestInfo* test = testCase->GetTestInfo(j);
-
-      foreach (const Owned<TestFilter>& filter, filters) {
-        if (filter->disable(test)) {
-          disabled.push_back(
-              test->test_case_name() + string(".") + test->name());
-          break;
-        }
-      }
-    }
-  }
-
-  return disabled;
-}
-
-
-// We use the constructor to setup specific tests by updating the
-// gtest filter. We do this so that we can selectively run tests that
-// require root or specific OS support (e.g., cgroups). Note that this
-// should not effect any other filters that have been put in place
-// either on the command line or via an environment variable.
-// N.B. This MUST be done _before_ invoking RUN_ALL_TESTS.
-Environment::Environment(const Flags& _flags) : flags(_flags)
+Environment::Environment(const Flags& _flags)
+  : stout::internal::tests::Environment(
+        std::vector<std::shared_ptr<TestFilter>>{
+            std::make_shared<AufsFilter>(),
+            std::make_shared<BenchmarkFilter>(),
+            std::make_shared<CfsFilter>(),
+            std::make_shared<CgroupsFilter>(),
+            std::make_shared<CurlFilter>(),
+            std::make_shared<DockerFilter>(),
+            std::make_shared<InternetFilter>(),
+            std::make_shared<LogrotateFilter>(),
+            std::make_shared<NetcatFilter>(),
+            std::make_shared<NetClsCgroupsFilter>(),
+            std::make_shared<NetworkIsolatorTestFilter>(),
+            std::make_shared<NvidiaGpuFilter>(),
+            std::make_shared<OverlayFSFilter>(),
+            std::make_shared<PerfCPUCyclesFilter>(),
+            std::make_shared<PerfFilter>(),
+            std::make_shared<RootFilter>(),
+            std::make_shared<UnzipFilter>(),
+            std::make_shared<XfsFilter>()}),
+    flags(_flags)
 {
-  // First we split the current filter into enabled and disabled tests
-  // (which are separated by a '-').
-  const string& filter = ::testing::GTEST_FLAG(filter);
-
-  // An empty filter indicates no tests should be run.
-  if (filter.empty()) {
-    return;
-  }
-
-  string enabled;
-  string disabled;
-
-  size_t dash = filter.find('-');
-  if (dash != string::npos) {
-    enabled = filter.substr(0, dash);
-    disabled = filter.substr(dash + 1);
-  } else {
-    enabled = filter;
-  }
-
-  // Use universal filter if not specified.
-  if (enabled.empty()) {
-    enabled = "*";
-  }
-
-  // Ensure disabled tests end with ":" separator before we add more.
-  if (!disabled.empty() && !strings::endsWith(disabled, ":")) {
-    disabled += ":";
-  }
-
-  vector<Owned<TestFilter>> filters;
-
-  filters.push_back(Owned<TestFilter>(new AufsFilter()));
-  filters.push_back(Owned<TestFilter>(new BenchmarkFilter()));
-  filters.push_back(Owned<TestFilter>(new CfsFilter()));
-  filters.push_back(Owned<TestFilter>(new CgroupsFilter()));
-  filters.push_back(Owned<TestFilter>(new CurlFilter()));
-  filters.push_back(Owned<TestFilter>(new DockerFilter()));
-  filters.push_back(Owned<TestFilter>(new InternetFilter()));
-  filters.push_back(Owned<TestFilter>(new LogrotateFilter()));
-  filters.push_back(Owned<TestFilter>(new NetcatFilter()));
-  filters.push_back(Owned<TestFilter>(new NetClsCgroupsFilter()));
-  filters.push_back(Owned<TestFilter>(new NetworkIsolatorTestFilter()));
-  filters.push_back(Owned<TestFilter>(new NvidiaGpuFilter()));
-  filters.push_back(Owned<TestFilter>(new OverlayFSFilter()));
-  filters.push_back(Owned<TestFilter>(new PerfCPUCyclesFilter()));
-  filters.push_back(Owned<TestFilter>(new PerfFilter()));
-  filters.push_back(Owned<TestFilter>(new RootFilter()));
-  filters.push_back(Owned<TestFilter>(new UnzipFilter()));
-  filters.push_back(Owned<TestFilter>(new XfsFilter()));
-
-  // Construct the filter string to handle system or platform specific tests.
-  ::testing::UnitTest* unitTest = ::testing::UnitTest::GetInstance();
-
-  disabled += strings::join(":", tests::disabled(unitTest, filters));
-
-  // Now update the gtest flag.
-  ::testing::GTEST_FLAG(filter) = enabled + "-" + disabled;
-
   // Add our test event listeners.
   ::testing::TestEventListeners& listeners =
     ::testing::UnitTest::GetInstance()->listeners();

http://git-wip-us.apache.org/repos/asf/mesos/blob/a1400f79/src/tests/environment.hpp
----------------------------------------------------------------------
diff --git a/src/tests/environment.hpp b/src/tests/environment.hpp
index 06b6d54..6d9a2bd 100644
--- a/src/tests/environment.hpp
+++ b/src/tests/environment.hpp
@@ -24,6 +24,8 @@
 
 #include <stout/try.hpp>
 
+#include <stout/tests/environment.hpp>
+
 #include "tests/flags.hpp"
 
 namespace mesos {
@@ -31,7 +33,7 @@ namespace internal {
 namespace tests {
 
 // Used to set up and manage the test environment.
-class Environment : public ::testing::Environment {
+class Environment : public stout::internal::tests::Environment {
 public:
   Environment(const Flags& flags);