Tests that the default container logger writes files into the sandbox.
| 110 | |
| 111 | // Tests that the default container logger writes files into the sandbox. |
| 112 | TEST_F(ContainerLoggerTest, DefaultToSandbox) |
| 113 | { |
| 114 | // Create a master, agent, and framework. |
| 115 | Try<Owned<cluster::Master>> master = StartMaster(); |
| 116 | ASSERT_SOME(master); |
| 117 | |
| 118 | Future<SlaveRegisteredMessage> slaveRegisteredMessage = |
| 119 | FUTURE_PROTOBUF(SlaveRegisteredMessage(), _, _); |
| 120 | |
| 121 | // We'll need access to these flags later. |
| 122 | slave::Flags flags = CreateSlaveFlags(); |
| 123 | |
| 124 | Fetcher fetcher(flags); |
| 125 | |
| 126 | // We use an actual containerizer + executor since we want something to run. |
| 127 | Try<MesosContainerizer*> _containerizer = |
| 128 | MesosContainerizer::create(flags, false, &fetcher); |
| 129 | |
| 130 | ASSERT_SOME(_containerizer); |
| 131 | Owned<MesosContainerizer> containerizer(_containerizer.get()); |
| 132 | |
| 133 | Owned<MasterDetector> detector = master.get()->createDetector(); |
| 134 | |
| 135 | Try<Owned<cluster::Slave>> slave = |
| 136 | StartSlave(detector.get(), containerizer.get(), flags); |
| 137 | ASSERT_SOME(slave); |
| 138 | |
| 139 | AWAIT_READY(slaveRegisteredMessage); |
| 140 | SlaveID slaveId = slaveRegisteredMessage->slave_id(); |
| 141 | |
| 142 | MockScheduler sched; |
| 143 | MesosSchedulerDriver driver( |
| 144 | &sched, DEFAULT_FRAMEWORK_INFO, master.get()->pid, DEFAULT_CREDENTIAL); |
| 145 | |
| 146 | Future<FrameworkID> frameworkId; |
| 147 | EXPECT_CALL(sched, registered(&driver, _, _)) |
| 148 | .WillOnce(FutureArg<1>(&frameworkId)); |
| 149 | |
| 150 | // Wait for an offer, and start a task. |
| 151 | Future<vector<Offer>> offers; |
| 152 | EXPECT_CALL(sched, resourceOffers(&driver, _)) |
| 153 | .WillOnce(FutureArg<1>(&offers)) |
| 154 | .WillRepeatedly(Return()); // Ignore subsequent offers. |
| 155 | |
| 156 | driver.start(); |
| 157 | AWAIT_READY(frameworkId); |
| 158 | |
| 159 | AWAIT_READY(offers); |
| 160 | ASSERT_FALSE(offers->empty()); |
| 161 | |
| 162 | // We'll start a task that outputs to stdout. |
| 163 | TaskInfo task = createTask(offers.get()[0], "echo 'Hello World!'"); |
| 164 | |
| 165 | Future<TaskStatus> statusStarting; |
| 166 | Future<TaskStatus> statusRunning; |
| 167 | Future<TaskStatus> statusFinished; |
| 168 | EXPECT_CALL(sched, statusUpdate(&driver, _)) |
| 169 | .WillOnce(FutureArg<1>(&statusStarting)) |
nothing calls this directly
no test coverage detected