Tests a healthy Docker task via HTTP. To emulate a task responsive to HTTP health checks, starts Netcat in the Docker "alpine" image.
| 2189 | // Tests a healthy Docker task via HTTP. To emulate a task responsive |
| 2190 | // to HTTP health checks, starts Netcat in the Docker "alpine" image. |
| 2191 | TEST_P( |
| 2192 | DockerContainerizerHealthCheckTest, |
| 2193 | ROOT_DOCKER_USERNETWORK_NETNAMESPACE_HealthyTaskViaHTTP) |
| 2194 | { |
| 2195 | Shared<Docker> docker(new MockDocker( |
| 2196 | tests::flags.docker, tests::flags.docker_socket)); |
| 2197 | |
| 2198 | Try<Owned<cluster::Master>> master = StartMaster(); |
| 2199 | ASSERT_SOME(master); |
| 2200 | |
| 2201 | slave::Flags agentFlags = CreateSlaveFlags(); |
| 2202 | |
| 2203 | Fetcher fetcher(agentFlags); |
| 2204 | |
| 2205 | Try<ContainerLogger*> logger = |
| 2206 | ContainerLogger::create(agentFlags.container_logger); |
| 2207 | ASSERT_SOME(logger); |
| 2208 | |
| 2209 | MockDockerContainerizer containerizer( |
| 2210 | agentFlags, |
| 2211 | &fetcher, |
| 2212 | Owned<ContainerLogger>(logger.get()), |
| 2213 | docker); |
| 2214 | |
| 2215 | Owned<MasterDetector> detector = master.get()->createDetector(); |
| 2216 | Try<Owned<cluster::Slave>> agent = |
| 2217 | StartSlave(detector.get(), &containerizer, agentFlags); |
| 2218 | ASSERT_SOME(agent); |
| 2219 | |
| 2220 | MockScheduler sched; |
| 2221 | MesosSchedulerDriver driver( |
| 2222 | &sched, DEFAULT_FRAMEWORK_INFO, master.get()->pid, DEFAULT_CREDENTIAL); |
| 2223 | |
| 2224 | EXPECT_CALL(sched, registered(&driver, _, _)); |
| 2225 | |
| 2226 | Future<vector<Offer>> offers; |
| 2227 | EXPECT_CALL(sched, resourceOffers(&driver, _)) |
| 2228 | .WillOnce(FutureArg<1>(&offers)) |
| 2229 | .WillRepeatedly(Return()); // Ignore subsequent offers. |
| 2230 | |
| 2231 | driver.start(); |
| 2232 | |
| 2233 | AWAIT_READY(offers); |
| 2234 | ASSERT_FALSE(offers->empty()); |
| 2235 | |
| 2236 | TaskInfo task = createTask(offers.get()[0], DOCKER_HTTP_COMMAND); |
| 2237 | |
| 2238 | // TODO(tnachen): Use local image to test if possible. |
| 2239 | ContainerInfo containerInfo; |
| 2240 | containerInfo.set_type(ContainerInfo::DOCKER); |
| 2241 | containerInfo.mutable_docker()->set_image(DOCKER_HTTP_IMAGE); |
| 2242 | #ifndef __WINDOWS__ |
| 2243 | containerInfo.mutable_docker()->set_network(ContainerInfo::DockerInfo::USER); |
| 2244 | |
| 2245 | // Setup the Docker IPv6 network. |
| 2246 | NetworkInfo networkInfo; |
| 2247 | networkInfo.set_name(DOCKER_IPv6_NETWORK); |
| 2248 | containerInfo.add_network_infos()->CopyFrom(networkInfo); |
nothing calls this directly
no test coverage detected