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

mesos git commit: Added a test for FrameworkInfo role(s) validation.

Repository: mesos
Updated Branches:
  refs/heads/master c18f4a93a -> 50da24ed9


Added a test for FrameworkInfo role(s) validation.

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


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

Branch: refs/heads/master
Commit: 50da24ed9c338bba3c13fd87b642fb8736aec199
Parents: c18f4a9
Author: Jay Guo <gu...@cn.ibm.com>
Authored: Fri Dec 2 17:50:44 2016 -0800
Committer: Benjamin Mahler <bm...@apache.org>
Committed: Fri Dec 2 17:58:16 2016 -0800

----------------------------------------------------------------------
 src/tests/master_validation_tests.cpp | 99 ++++++++++++++++++++++++++++++
 1 file changed, 99 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/50da24ed/src/tests/master_validation_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/master_validation_tests.cpp b/src/tests/master_validation_tests.cpp
index 5c44967..49ed6cc 100644
--- a/src/tests/master_validation_tests.cpp
+++ b/src/tests/master_validation_tests.cpp
@@ -2359,6 +2359,105 @@ TEST_F(TaskGroupValidationTest, TaskUsesDifferentExecutor)
   driver.join();
 }
 
+
+class FrameworkInfoValidationTest : public MesosTest {};
+
+
+// This tests the validateRoles function of FrameworkInfo.
+TEST_F(FrameworkInfoValidationTest, ValidateRoles)
+{
+  // Not MULTI_ROLE, no 'role' (default to "*"), no 'roles'.
+  {
+    FrameworkInfo frameworkInfo;
+    EXPECT_NONE(::framework::internal::validateRoles(frameworkInfo));
+  }
+
+  // Not MULTI_ROLE, no 'role' (default to "*"), has 'roles'.
+  {
+    FrameworkInfo frameworkInfo;
+    frameworkInfo.add_roles("bar");
+    frameworkInfo.add_roles("qux");
+    EXPECT_SOME(::framework::internal::validateRoles(frameworkInfo));
+  }
+
+  // Not MULTI_ROLE, has 'role', no 'roles'.
+  {
+    FrameworkInfo frameworkInfo;
+    frameworkInfo.set_role("foo");
+    EXPECT_NONE(::framework::internal::validateRoles(frameworkInfo));
+  }
+
+  // Not MULTI_ROLE, has 'role', has 'roles'.
+  {
+    FrameworkInfo frameworkInfo;
+    frameworkInfo.add_roles("bar");
+    frameworkInfo.add_roles("qux");
+    frameworkInfo.set_role("foo");
+    EXPECT_SOME(::framework::internal::validateRoles(frameworkInfo));
+  }
+
+  // Is MULTI_ROLE, no 'role', no 'roles'.
+  {
+    FrameworkInfo frameworkInfo;
+    frameworkInfo.add_capabilities()->set_type(
+        FrameworkInfo::Capability::MULTI_ROLE);
+    EXPECT_NONE(::framework::internal::validateRoles(frameworkInfo));
+  }
+
+  // Is MULTI_ROLE, no 'role', has 'roles'.
+  {
+    FrameworkInfo frameworkInfo;
+    frameworkInfo.add_capabilities()->set_type(
+        FrameworkInfo::Capability::MULTI_ROLE);
+    frameworkInfo.add_roles("bar");
+    frameworkInfo.add_roles("qux");
+    EXPECT_NONE(::framework::internal::validateRoles(frameworkInfo));
+  }
+
+  // Is MULTI_ROLE, has 'role', no 'roles'.
+  {
+    FrameworkInfo frameworkInfo;
+    frameworkInfo.set_role("foo");
+    frameworkInfo.add_capabilities()->set_type(
+        FrameworkInfo::Capability::MULTI_ROLE);
+    // 'Role' is set, but MULTI_ROLE capability is also enabled.
+    EXPECT_SOME(::framework::internal::validateRoles(frameworkInfo));
+  }
+
+  // Is MULTI_ROLE, has 'role', has 'roles'.
+  {
+    FrameworkInfo frameworkInfo;
+    frameworkInfo.set_role("foo");
+    frameworkInfo.add_capabilities()->set_type(
+        FrameworkInfo::Capability::MULTI_ROLE);
+    frameworkInfo.add_roles("bar");
+    frameworkInfo.add_roles("qux");
+    // All 'role', 'roles' and MULTI_ROLE are set.
+    EXPECT_SOME(::framework::internal::validateRoles(frameworkInfo));
+  }
+
+  // Duplicate items in 'roles'.
+  {
+    FrameworkInfo frameworkInfo;
+    frameworkInfo.add_capabilities()->set_type(
+        FrameworkInfo::Capability::MULTI_ROLE);
+    frameworkInfo.add_roles("bar");
+    frameworkInfo.add_roles("qux");
+    frameworkInfo.add_roles("bar");
+    EXPECT_SOME(::framework::internal::validateRoles(frameworkInfo));
+  }
+
+  // Check invalid character in 'roles'.
+  {
+    FrameworkInfo frameworkInfo;
+    frameworkInfo.add_roles("bar");
+    frameworkInfo.add_roles("/x");
+    frameworkInfo.add_capabilities()->set_type(
+        FrameworkInfo::Capability::MULTI_ROLE);
+    EXPECT_SOME(::framework::internal::validateRoles(frameworkInfo));
+  }
+}
+
 } // namespace tests {
 } // namespace internal {
 } // namespace mesos {