Repository: mesos Updated Branches: refs/heads/master 0e8631667 -> c3964fb17
Expose offer allocation info within the master /state endpoint. Review: https://reviews.apache.org/r/57013 Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/1235e29b Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/1235e29b Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/1235e29b Branch: refs/heads/master Commit: 1235e29bdbd75b1c12ab6c0878e617bc625d9793 Parents: 0e86316 Author: Benjamin Mahler <[email protected]> Authored: Thu Feb 23 17:16:05 2017 -0800 Committer: Benjamin Mahler <[email protected]> Committed: Wed Mar 1 14:08:22 2017 -0800 ---------------------------------------------------------------------- src/master/http.cpp | 1 + src/tests/master_tests.cpp | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/1235e29b/src/master/http.cpp ---------------------------------------------------------------------- diff --git a/src/master/http.cpp b/src/master/http.cpp index 6e5178e..37b96c0 100644 --- a/src/master/http.cpp +++ b/src/master/http.cpp @@ -146,6 +146,7 @@ static void json(JSON::ObjectWriter* writer, const Offer& offer) { writer->field("id", offer.id().value()); writer->field("framework_id", offer.framework_id().value()); + writer->field("allocation_info", JSON::Protobuf(offer.allocation_info())); writer->field("slave_id", offer.slave_id().value()); writer->field("resources", Resources(offer.resources())); } http://git-wip-us.apache.org/repos/asf/mesos/blob/1235e29b/src/tests/master_tests.cpp ---------------------------------------------------------------------- diff --git a/src/tests/master_tests.cpp b/src/tests/master_tests.cpp index db5197e..b9dfe9e 100644 --- a/src/tests/master_tests.cpp +++ b/src/tests/master_tests.cpp @@ -4032,9 +4032,23 @@ TEST_F(MasterTest, StateEndpoint) // currently; add more to this test. TEST_F(MasterTest, StateEndpointFrameworkInfo) { + Clock::pause(); + Try<Owned<cluster::Master>> master = StartMaster(); ASSERT_SOME(master); + Future<SlaveRegisteredMessage> slaveRegisteredMessage = + FUTURE_PROTOBUF(SlaveRegisteredMessage(), _, _); + + slave::Flags agentFlags = CreateSlaveFlags(); + Owned<MasterDetector> detector = master.get()->createDetector(); + Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), agentFlags); + ASSERT_SOME(slave); + + Clock::advance(agentFlags.registration_backoff_factor); + Clock::advance(agentFlags.authentication_backoff_factor); + AWAIT_READY(slaveRegisteredMessage); + FrameworkInfo frameworkInfo = DEFAULT_FRAMEWORK_INFO; frameworkInfo.set_webui_url("http://localhost:8080/"); @@ -4057,9 +4071,14 @@ TEST_F(MasterTest, StateEndpointFrameworkInfo) EXPECT_CALL(sched, registered(&driver, _, _)) .WillOnce(FutureSatisfy(®istered)); + Future<Nothing> resourceOffers; + EXPECT_CALL(sched, resourceOffers(&driver, _)) + .WillOnce(FutureSatisfy(&resourceOffers)); + driver.start(); AWAIT_READY(registered); + AWAIT_READY(resourceOffers); Future<Response> response = process::http::get( master.get()->pid, @@ -4105,6 +4124,19 @@ TEST_F(MasterTest, StateEndpointFrameworkInfo) EXPECT_EQ(capabilities, actual); + EXPECT_EQ(1u, framework.values.count("offers")); + EXPECT_TRUE(framework.values.at("offers").is<JSON::Array>()); + EXPECT_EQ(1u, framework.values.at("offers").as<JSON::Array>().values.size()); + + JSON::Object offer = framework.values.at("offers") + .as<JSON::Array>().values[0].as<JSON::Object>(); + + JSON::Object allocationInfo; + allocationInfo.values["role"] = frameworkInfo.role(); + + EXPECT_EQ(1u, offer.values.count("allocation_info")); + EXPECT_EQ(allocationInfo, offer.values.at("allocation_info")); + driver.stop(); driver.join(); }
