This test verifies that the default executor sets the correct container IP when the container is launched on a host network or a CNI network. NOTE: To use the default executor, we will need to use the v1 scheduler API.
| 1709 | // NOTE: To use the default executor, we will need to use the v1 |
| 1710 | // scheduler API. |
| 1711 | TEST_P(DefaultExecutorCniTest, ROOT_VerifyContainerIP) |
| 1712 | { |
| 1713 | Try<Owned<cluster::Master>> master = StartMaster(); |
| 1714 | ASSERT_SOME(master); |
| 1715 | |
| 1716 | slave::Flags flags = CreateSlaveFlags(); |
| 1717 | |
| 1718 | Option<mesos::v1::NetworkInfo> networkInfo = GetParam().networkInfo; |
| 1719 | |
| 1720 | Owned<MasterDetector> detector = master.get()->createDetector(); |
| 1721 | Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), flags); |
| 1722 | ASSERT_SOME(slave); |
| 1723 | |
| 1724 | auto scheduler = std::make_shared<v1::MockHTTPScheduler>(); |
| 1725 | |
| 1726 | EXPECT_CALL(*scheduler, connected(_)) |
| 1727 | .WillOnce(v1::scheduler::SendSubscribe(v1::DEFAULT_FRAMEWORK_INFO)); |
| 1728 | |
| 1729 | Future<v1::scheduler::Event::Subscribed> subscribed; |
| 1730 | EXPECT_CALL(*scheduler, subscribed(_, _)) |
| 1731 | .WillOnce(FutureArg<1>(&subscribed)); |
| 1732 | |
| 1733 | Future<v1::scheduler::Event::Offers> offers; |
| 1734 | EXPECT_CALL(*scheduler, offers(_, _)) |
| 1735 | .WillOnce(FutureArg<1>(&offers)) |
| 1736 | .WillRepeatedly(Return()); |
| 1737 | |
| 1738 | EXPECT_CALL(*scheduler, heartbeat(_)) |
| 1739 | .WillRepeatedly(Return()); // Ignore heartbeats. |
| 1740 | |
| 1741 | v1::scheduler::TestMesos mesos( |
| 1742 | master.get()->pid, ContentType::PROTOBUF, scheduler); |
| 1743 | |
| 1744 | AWAIT_READY(subscribed); |
| 1745 | v1::FrameworkID frameworkId(subscribed->framework_id()); |
| 1746 | |
| 1747 | v1::ExecutorInfo executorInfo = v1::createExecutorInfo( |
| 1748 | "test_default_executor", |
| 1749 | None(), |
| 1750 | "cpus:0.1;mem:32;disk:32", |
| 1751 | v1::ExecutorInfo::DEFAULT); |
| 1752 | |
| 1753 | // Update `executorInfo` with the subscribed `frameworkId`. |
| 1754 | executorInfo.mutable_framework_id()->CopyFrom(frameworkId); |
| 1755 | |
| 1756 | mesos::v1::ContainerInfo *container = executorInfo.mutable_container(); |
| 1757 | container->set_type(mesos::v1::ContainerInfo::MESOS); |
| 1758 | |
| 1759 | if (networkInfo.isSome()) { |
| 1760 | container->add_network_infos()->CopyFrom(networkInfo.get()); |
| 1761 | } |
| 1762 | |
| 1763 | AWAIT_READY(offers); |
| 1764 | ASSERT_FALSE(offers->offers().empty()); |
| 1765 | |
| 1766 | const v1::Offer& offer = offers->offers(0); |
| 1767 | const v1::AgentID& agentId = offer.agent_id(); |
| 1768 |
nothing calls this directly
no test coverage detected