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