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(®istered));
+
+ 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 {