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 2019/10/09 18:26:41 UTC
[mesos] 04/04: Added a registrar test that invalid quota configs
are rejected.
This is an automated email from the ASF dual-hosted git repository.
bmahler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git
commit 831499b058b69d4030c3a121cef81e02b22ca2f6
Author: Benjamin Mahler <bm...@apache.org>
AuthorDate: Wed Oct 9 00:09:20 2019 -0400
Added a registrar test that invalid quota configs are rejected.
Now that invalid quota configs are rejected during the update
quota operation, this test ensures it works as expected.
Review: https://reviews.apache.org/r/71598
---
src/tests/registrar_tests.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/src/tests/registrar_tests.cpp b/src/tests/registrar_tests.cpp
index ff7f933..ab18138 100644
--- a/src/tests/registrar_tests.cpp
+++ b/src/tests/registrar_tests.cpp
@@ -73,6 +73,7 @@ using mesos::internal::log::Replica;
using std::cout;
using std::endl;
using std::map;
+using std::pair;
using std::set;
using std::string;
using std::vector;
@@ -84,6 +85,7 @@ using process::http::OK;
using process::http::Response;
using process::http::Unauthorized;
+using google::protobuf::Map;
using google::protobuf::RepeatedPtrField;
using google::protobuf::util::MessageDifferencer;
@@ -1707,6 +1709,49 @@ TEST_F(RegistrarTest, UpdateQuota)
}
+// Tests that updating quota with an invalid config fails.
+TEST_F(RegistrarTest, UpdateQuotaInvalid)
+{
+ QuotaConfig config;
+ config.set_role("role1");
+
+ auto resourceMap = [](const vector<pair<string, double>>& vector)
+ -> Map<string, Value::Scalar> {
+ Map<string, Value::Scalar> result;
+
+ foreachpair (const string& name, double value, vector) {
+ Value::Scalar scalar;
+ scalar.set_value(value);
+ result[name] = scalar;
+ }
+
+ return result;
+ };
+
+ // The quota endpoint only allows memory / disk up to
+ // 1 exabyte (in megabytes) or 1 trillion cores/ports/other.
+ // For this test, we just check 1 invalid case via mem.
+ double largestMegabytes = 1024.0 * 1024.0 * 1024.0 * 1024.0;
+
+ *config.mutable_limits() = resourceMap({{"mem", largestMegabytes + 1.0}});
+
+ Registrar registrar(flags, state);
+ Future<Registry> registry = registrar.recover(master);
+ AWAIT_READY(registry);
+
+ EXPECT_EQ(0, registry->quota_configs().size());
+ EXPECT_EQ(0, registry->minimum_capabilities().size());
+
+ // Store quota for a role with default quota.
+ RepeatedPtrField<QuotaConfig> configs;
+ *configs.Add() = config;
+
+ AWAIT_FALSE(
+ registrar.apply(Owned<RegistryOperation>(new UpdateQuota(configs))));
+
+}
+
+
// Tests that updating weights in the registry works properly.
TEST_F(RegistrarTest, UpdateWeights)
{