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 02:17:22 UTC

mesos git commit: Added multi-role master validation integration tests.

Repository: mesos
Updated Branches:
  refs/heads/master 18273e1d4 -> f18767e69


Added multi-role master validation integration tests.

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


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

Branch: refs/heads/master
Commit: f18767e69b04a007e738316f0c7a9fab5f0034bf
Parents: 18273e1
Author: Jay Guo <gu...@cn.ibm.com>
Authored: Fri Dec 2 18:12:24 2016 -0800
Committer: Benjamin Mahler <bm...@apache.org>
Committed: Fri Dec 2 18:15:39 2016 -0800

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


http://git-wip-us.apache.org/repos/asf/mesos/blob/f18767e6/src/tests/master_validation_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/master_validation_tests.cpp b/src/tests/master_validation_tests.cpp
index c01893e..42f566b 100644
--- a/src/tests/master_validation_tests.cpp
+++ b/src/tests/master_validation_tests.cpp
@@ -2466,6 +2466,88 @@ TEST_F(FrameworkInfoValidationTest, ValidateRoles)
   }
 }
 
+
+// This test ensures that ia framework cannot use the
+// `FrameworkInfo.roles` field without providing the
+// MULTI_ROLE capability.
+TEST_F(FrameworkInfoValidationTest, MissingMultiRoleCapability)
+{
+  Try<Owned<cluster::Master>> master = StartMaster();
+  ASSERT_SOME(master);
+
+  FrameworkInfo framework = DEFAULT_FRAMEWORK_INFO;
+  framework.add_roles("role");
+
+  MockScheduler sched;
+  MesosSchedulerDriver driver(
+      &sched, framework, master.get()->pid, DEFAULT_CREDENTIAL);
+
+  Future<string> error;
+  EXPECT_CALL(sched, error(&driver, _))
+    .WillOnce(FutureArg<1>(&error));
+
+  driver.start();
+
+  AWAIT_READY(error);
+}
+
+
+// This test ensures subscription succeeds for multi-role
+// framework when MULTI_ROLE capability is enabled.
+TEST_F(FrameworkInfoValidationTest, AcceptMultiRoleFramework)
+{
+  Try<Owned<cluster::Master>> master = StartMaster();
+  ASSERT_SOME(master);
+
+  FrameworkInfo framework = DEFAULT_FRAMEWORK_INFO;
+  framework.add_roles("role1");
+  framework.add_roles("role2");
+  framework.add_capabilities()->set_type(
+      FrameworkInfo::Capability::MULTI_ROLE);
+
+  MockScheduler sched;
+  MesosSchedulerDriver driver(
+      &sched, framework, master.get()->pid, DEFAULT_CREDENTIAL);
+
+  Future<Nothing> registered;
+  EXPECT_CALL(sched, registered(&driver, _, _))
+    .WillOnce(FutureSatisfy(&registered));
+
+  driver.start();
+
+  AWAIT_READY(registered);
+}
+
+
+// This test ensures subscription fails for multi-role
+// framework with non-whitelisted role.
+TEST_F(FrameworkInfoValidationTest, MultiRoleWhitelist)
+{
+  master::Flags masterFlags = CreateMasterFlags();
+  masterFlags.roles = "role1";
+
+  Try<Owned<cluster::Master>> master = StartMaster(masterFlags);
+  ASSERT_SOME(master);
+
+  FrameworkInfo framework = DEFAULT_FRAMEWORK_INFO;
+  framework.add_roles("role1");
+  framework.add_roles("role2");
+  framework.add_capabilities()->set_type(
+      FrameworkInfo::Capability::MULTI_ROLE);
+
+  MockScheduler sched;
+  MesosSchedulerDriver driver(
+      &sched, framework, master.get()->pid, DEFAULT_CREDENTIAL);
+
+  Future<string> error;
+  EXPECT_CALL(sched, error(&driver, _))
+    .WillOnce(FutureArg<1>(&error));
+
+  driver.start();
+
+  AWAIT_READY(error);
+}
+
 } // namespace tests {
 } // namespace internal {
 } // namespace mesos {