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 2017/03/28 01:35:12 UTC

[2/3] mesos git commit: Added a test to check /roles endpoint of master includes quota info.

Added a test to check /roles endpoint of master includes quota info.

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


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

Branch: refs/heads/master
Commit: b66047f8c834ac404e8bd82c8f18c1b57f5958c2
Parents: 43108b5
Author: Jay Guo <gu...@gmail.com>
Authored: Mon Mar 27 18:30:30 2017 -0700
Committer: Benjamin Mahler <bm...@apache.org>
Committed: Mon Mar 27 18:31:03 2017 -0700

----------------------------------------------------------------------
 src/tests/role_tests.cpp | 73 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 72 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/b66047f8/src/tests/role_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/role_tests.cpp b/src/tests/role_tests.cpp
index 1d58d7b..0433c05 100644
--- a/src/tests/role_tests.cpp
+++ b/src/tests/role_tests.cpp
@@ -375,6 +375,77 @@ TEST_F(RoleTest, EndpointNoFrameworks)
 }
 
 
+// This test ensures that quota information is included
+// in /roles endpoint of master.
+TEST_F_TEMP_DISABLED_ON_WINDOWS(RoleTest, RolesEndpointContainsQuota)
+{
+  Try<Owned<cluster::Master>> master = StartMaster();
+  ASSERT_SOME(master);
+
+  Resources quotaResources = Resources::parse("cpus:1;mem:512").get();
+
+  mesos::quota::QuotaRequest request;
+  request.set_role("foo");
+  request.mutable_guarantee()->CopyFrom(quotaResources);
+
+  // Use the force flag for setting quota that cannot be satisfied in
+  // this empty cluster without any agents.
+  request.set_force(true);
+
+  {
+    Future<Response> response = process::http::post(
+        master.get()->pid,
+        "quota",
+        createBasicAuthHeaders(DEFAULT_CREDENTIAL),
+        stringify(JSON::protobuf(request)));
+
+    AWAIT_EXPECT_RESPONSE_STATUS_EQ(OK().status, response)
+      << response->body;
+  }
+
+  // Query the master roles endpoint and check it contains quota.
+  {
+    Future<Response> response = process::http::get(
+        master.get()->pid,
+        "roles",
+        None(),
+        createBasicAuthHeaders(DEFAULT_CREDENTIAL));
+
+    AWAIT_EXPECT_RESPONSE_STATUS_EQ(OK().status, response)
+      << response->body;
+
+    Try<JSON::Object> parse = JSON::parse<JSON::Object>(response->body);
+    ASSERT_SOME(parse);
+
+    Result<JSON::Array> roles = parse->find<JSON::Array>("roles");
+    ASSERT_SOME(roles);
+    EXPECT_EQ(1u, roles->values.size());
+
+    JSON::Value role = roles->values[0].as<JSON::Value>();
+
+    Try<JSON::Value> expected = JSON::parse(
+        "{"
+          "\"quota\":"
+            "{"
+              "\"guarantee\":"
+                "{"
+                  "\"cpus\":1.0,"
+                  "\"disk\":0,"
+                  "\"gpus\":0,"
+                  "\"mem\":512.0"
+                "},"
+              "\"principal\":\"test-principal\","
+              "\"role\":\"foo\""
+            "}"
+        "}"
+    );
+    ASSERT_SOME(expected);
+
+    EXPECT_TRUE(role.contains(expected.get()));
+  }
+}
+
+
 // This test checks that when using implicit roles, the "/roles"
 // endpoint shows roles that have a configured weight even if they
 // have no registered frameworks.
@@ -541,7 +612,7 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(RoleTest, EndpointImplicitRolesQuotas)
       "}");
 
   ASSERT_SOME(expected);
-  EXPECT_EQ(expected.get(), parse.get());
+  EXPECT_TRUE(parse->contains(expected.get()));
 
   // Remove the quota, and check that the role no longer appears in
   // the "/roles" endpoint.