MCPcopy Create free account
hub / github.com/apache/mesos / TEST_F

Function TEST_F

src/tests/reservation_endpoints_tests.cpp:107–189  ·  view source on GitHub ↗

This tests that an operator can reserve/unreserve available resources.

Source from the content-addressed store, hash-verified

105
106// This tests that an operator can reserve/unreserve available resources.
107TEST_F(ReservationEndpointsTest, AvailableResources)
108{
109 Try<Owned<cluster::Master>> master = StartMaster();
110 ASSERT_SOME(master);
111
112 Future<SlaveRegisteredMessage> slaveRegisteredMessage =
113 FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
114
115 Owned<MasterDetector> detector = master.get()->createDetector();
116 Try<Owned<cluster::Slave>> slave = StartSlave(detector.get());
117 ASSERT_SOME(slave);
118
119 AWAIT_READY(slaveRegisteredMessage);
120 const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
121
122 FrameworkInfo frameworkInfo = createFrameworkInfo();
123
124 Resources unreserved = Resources::parse("cpus:1;mem:512").get();
125 Resources dynamicallyReserved =
126 unreserved.pushReservation(createDynamicReservationInfo(
127 frameworkInfo.roles(0), DEFAULT_CREDENTIAL.principal()));
128
129 Future<Response> response = process::http::post(
130 master.get()->pid,
131 "reserve",
132 createBasicAuthHeaders(DEFAULT_CREDENTIAL),
133 createRequestBody(slaveId, dynamicallyReserved));
134
135 AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
136
137 MockScheduler sched;
138 MesosSchedulerDriver driver(
139 &sched, frameworkInfo, master.get()->pid, DEFAULT_CREDENTIAL);
140
141 Future<vector<Offer>> offers;
142
143 EXPECT_CALL(sched, registered(&driver, _, _));
144
145 EXPECT_CALL(sched, resourceOffers(&driver, _))
146 .WillOnce(FutureArg<1>(&offers));
147
148 driver.start();
149
150 AWAIT_READY(offers);
151
152 ASSERT_EQ(1u, offers->size());
153 Offer offer = offers.get()[0];
154
155 EXPECT_TRUE(Resources(offer.resources()).contains(
156 allocatedResources(dynamicallyReserved, frameworkInfo.roles(0))));
157
158 // The filter to decline the offer "forever".
159 Filters filtersForever;
160 filtersForever.set_refuse_seconds(1000);
161
162 // Decline the offer "forever" in order to deallocate resources.
163 driver.declineOffer(offer.id(), filtersForever);
164

Callers

nothing calls this directly

Calls 15

createFrameworkInfoFunction · 0.85
createBasicAuthHeadersFunction · 0.85
AcceptedClass · 0.85
allocatedResourcesFunction · 0.85
createLabelFunction · 0.85
ConflictClass · 0.85
formatFunction · 0.85
protobufFunction · 0.85
BadRequestClass · 0.85
NoneClass · 0.85
UnauthorizedClass · 0.85

Tested by

no test coverage detected