You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ya...@apache.org on 2014/06/23 20:25:48 UTC
[5/6] git commit: Added flags::parse() overload for RateLimits
protobuf.
Added flags::parse() overload for RateLimits protobuf.
Review: https://reviews.apache.org/r/22758
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/1cd0a072
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/1cd0a072
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/1cd0a072
Branch: refs/heads/master
Commit: 1cd0a072d9dafe8d6835ec02afca13b0124cae8c
Parents: ac44eb5
Author: Jiang Yan Xu <ya...@jxu.me>
Authored: Wed Jun 18 13:39:59 2014 -0700
Committer: Jiang Yan Xu <ya...@jxu.me>
Committed: Mon Jun 23 11:19:40 2014 -0700
----------------------------------------------------------------------
src/common/parse.hpp | 14 ++++++++++++++
src/common/type_utils.hpp | 8 ++++++++
src/master/flags.hpp | 2 +-
src/master/master.cpp | 10 +---------
src/tests/rate_limiting_tests.cpp | 6 +++---
5 files changed, 27 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/1cd0a072/src/common/parse.hpp
----------------------------------------------------------------------
diff --git a/src/common/parse.hpp b/src/common/parse.hpp
index 5b12e38..4eb5096 100644
--- a/src/common/parse.hpp
+++ b/src/common/parse.hpp
@@ -38,6 +38,20 @@ inline Try<mesos::ACLs> parse(const std::string& value)
return protobuf::parse<mesos::ACLs>(json.get());
}
+
+template<>
+inline Try<mesos::RateLimits> parse(const std::string& value)
+{
+ // Convert from string or file to JSON.
+ Try<JSON::Object> json = parse<JSON::Object>(value);
+ if (json.isError()) {
+ return Error(json.error());
+ }
+
+ // Convert from JSON to Protobuf.
+ return protobuf::parse<mesos::RateLimits>(json.get());
+}
+
} // namespace flags {
#endif // __COMMON_PARSE_HPP__
http://git-wip-us.apache.org/repos/asf/mesos/blob/1cd0a072/src/common/type_utils.hpp
----------------------------------------------------------------------
diff --git a/src/common/type_utils.hpp b/src/common/type_utils.hpp
index 27ea4d2..bb357ac 100644
--- a/src/common/type_utils.hpp
+++ b/src/common/type_utils.hpp
@@ -122,6 +122,14 @@ inline std::ostream& operator << (
}
+inline std::ostream& operator << (
+ std::ostream& stream,
+ const RateLimits& limits)
+{
+ return stream << limits.DebugString();
+}
+
+
inline bool operator == (const FrameworkID& left, const FrameworkID& right)
{
return left.value() == right.value();
http://git-wip-us.apache.org/repos/asf/mesos/blob/1cd0a072/src/master/flags.hpp
----------------------------------------------------------------------
diff --git a/src/master/flags.hpp b/src/master/flags.hpp
index 47bb0dc..70751d2 100644
--- a/src/master/flags.hpp
+++ b/src/master/flags.hpp
@@ -287,7 +287,7 @@ public:
bool authenticate_slaves;
Option<std::string> credentials;
Option<ACLs> acls;
- Option<JSON::Object> rate_limits;
+ Option<RateLimits> rate_limits;
};
} // namespace mesos {
http://git-wip-us.apache.org/repos/asf/mesos/blob/1cd0a072/src/master/master.cpp
----------------------------------------------------------------------
diff --git a/src/master/master.cpp b/src/master/master.cpp
index 72470da..f376e60 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -46,7 +46,6 @@
#include <stout/option.hpp>
#include <stout/os.hpp>
#include <stout/path.hpp>
-#include <stout/protobuf.hpp>
#include <stout/stringify.hpp>
#include <stout/utils.hpp>
#include <stout/uuid.hpp>
@@ -355,15 +354,8 @@ void Master::initialize()
}
if (flags.rate_limits.isSome()) {
- Try<RateLimits> limits =
- ::protobuf::parse<RateLimits>(flags.rate_limits.get());
- if (limits.isError()) {
- EXIT(1) << "Invalid RateLimits format: " << limits.error()
- << " (see --rate_limits flag)";
- }
-
// Add framework rate limiters.
- foreach (const RateLimit& limit_, limits.get().limits()) {
+ foreach (const RateLimit& limit_, flags.rate_limits.get().limits()) {
if (limiters.contains(limit_.principal())) {
EXIT(1) << "Duplicate principal " << limit_.principal()
<< " found in RateLimits configuration";
http://git-wip-us.apache.org/repos/asf/mesos/blob/1cd0a072/src/tests/rate_limiting_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/rate_limiting_tests.cpp b/src/tests/rate_limiting_tests.cpp
index 9775b77..9cb3717 100644
--- a/src/tests/rate_limiting_tests.cpp
+++ b/src/tests/rate_limiting_tests.cpp
@@ -88,7 +88,7 @@ public:
// metrics endpoint (because it also throttles requests but at
// 2qps) don't mess with framework rate limiting.
limit->set_qps(1);
- flags.rate_limits = JSON::Protobuf(limits);
+ flags.rate_limits = limits;
return flags;
}
@@ -106,7 +106,7 @@ TEST_F(RateLimitingTest, NoRateLimiting)
RateLimits limits;
RateLimit* limit = limits.mutable_limits()->Add();
limit->set_principal(DEFAULT_CREDENTIAL.principal());
- flags.rate_limits = JSON::Protobuf(limits);
+ flags.rate_limits = limits;
Try<PID<Master> > master = StartMaster(flags);
ASSERT_SOME(master);
@@ -363,7 +363,7 @@ TEST_F(RateLimitingTest, DifferentPrincipalFrameworks)
RateLimit* limit2 = limits.mutable_limits()->Add();
limit2->set_principal("framework2");
limit2->set_qps(0.5);
- flags.rate_limits = JSON::Protobuf(limits);
+ flags.rate_limits = limits;
flags.authenticate_frameworks = false;