| 59 | |
| 60 | |
| 61 | TEST_F_TEMP_DISABLED_ON_WINDOWS( |
| 62 | ResourceOffersTest, |
| 63 | ResourceOfferWithMultipleSlaves) |
| 64 | { |
| 65 | Try<Owned<cluster::Master>> master = StartMaster(); |
| 66 | ASSERT_SOME(master); |
| 67 | |
| 68 | Owned<MasterDetector> detector = master.get()->createDetector(); |
| 69 | vector<Owned<cluster::Slave>> slaves; |
| 70 | |
| 71 | // Start 10 slaves. |
| 72 | for (int i = 0; i < 10; i++) { |
| 73 | slave::Flags flags = CreateSlaveFlags(); |
| 74 | flags.launcher = "posix"; |
| 75 | |
| 76 | flags.resources = Option<std::string>("cpus:2;mem:1024"); |
| 77 | |
| 78 | Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), flags); |
| 79 | ASSERT_SOME(slave); |
| 80 | slaves.push_back(slave.get()); |
| 81 | } |
| 82 | |
| 83 | MockScheduler sched; |
| 84 | MesosSchedulerDriver driver( |
| 85 | &sched, DEFAULT_FRAMEWORK_INFO, master.get()->pid, DEFAULT_CREDENTIAL); |
| 86 | |
| 87 | EXPECT_CALL(sched, registered(&driver, _, _)); |
| 88 | |
| 89 | Future<vector<Offer>> offers; |
| 90 | EXPECT_CALL(sched, resourceOffers(&driver, _)) |
| 91 | .WillOnce(FutureArg<1>(&offers)) |
| 92 | .WillRepeatedly(Return()); // All 10 slaves might not be in first offer. |
| 93 | |
| 94 | driver.start(); |
| 95 | |
| 96 | AWAIT_READY(offers); |
| 97 | ASSERT_FALSE(offers->empty()); |
| 98 | EXPECT_GE(10u, offers->size()); |
| 99 | |
| 100 | Resources resources(offers.get()[0].resources()); |
| 101 | EXPECT_EQ(2, resources.get<Value::Scalar>("cpus")->value()); |
| 102 | EXPECT_EQ(1024, resources.get<Value::Scalar>("mem")->value()); |
| 103 | |
| 104 | driver.stop(); |
| 105 | driver.join(); |
| 106 | } |
| 107 | |
| 108 | |
| 109 | TEST_F(ResourceOffersTest, ResourcesGetReofferedAfterFrameworkStops) |