This tests that an operator can reserve/unreserve available resources.
| 105 | |
| 106 | // This tests that an operator can reserve/unreserve available resources. |
| 107 | TEST_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 |
nothing calls this directly
no test coverage detected