Repository: mesos Updated Branches: refs/heads/master 4de848281 -> 1b70debfd
Added test for passing total slave's resources in ResourceUsage. Review: https://reviews.apache.org/r/36314 Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/1b70debf Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/1b70debf Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/1b70debf Branch: refs/heads/master Commit: 1b70debfda1b699359074f0d626c030d5089f5d6 Parents: 4de8482 Author: Bartek Plotka <[email protected]> Authored: Tue Jul 14 11:22:05 2015 -0700 Committer: Jie Yu <[email protected]> Committed: Tue Jul 14 11:22:06 2015 -0700 ---------------------------------------------------------------------- src/tests/slave_tests.cpp | 96 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/1b70debf/src/tests/slave_tests.cpp ---------------------------------------------------------------------- diff --git a/src/tests/slave_tests.cpp b/src/tests/slave_tests.cpp index ea0ddf3..89cc7f6 100644 --- a/src/tests/slave_tests.cpp +++ b/src/tests/slave_tests.cpp @@ -2247,6 +2247,102 @@ TEST_F(SlaveTest, ExecutorEnvironmentVariables) Shutdown(); } + +// This test verifies that the slave should properly show total slave +// resources. +TEST_F(SlaveTest, TotalSlaveResourcesIncludedInUsage) +{ + Try<PID<Master>> master = StartMaster(); + ASSERT_SOME(master); + + TestContainerizer containerizer; + StandaloneMasterDetector detector(master.get()); + + slave::Flags flags = CreateSlaveFlags(); + flags.resources = "cpus:2;mem:1024;disk:1024;ports:[31000-32000]"; + + MockSlave slave(flags, &detector, &containerizer); + spawn(slave); + + Clock::pause(); + + // Wait for slave to be initialized. + Clock::settle(); + + // We expect that the slave will return ResourceUsage with + // total resources reported. + Future<ResourceUsage> usage = slave.usage(); + + AWAIT_READY(usage); + + // Total resources should match the resources from flag.resources. + EXPECT_EQ(Resources(usage.get().total()), + Resources::parse(flags.resources.get()).get()); + + terminate(slave); + wait(slave); + + Shutdown(); +} + + +// This test verifies that the slave should properly show total slave +// resources with checkpointed resources applied. +TEST_F(SlaveTest, CheckpointedResourcesIncludedInUsage) +{ + Try<PID<Master>> master = StartMaster(); + ASSERT_SOME(master); + + TestContainerizer containerizer; + StandaloneMasterDetector detector(master.get()); + + slave::Flags flags = CreateSlaveFlags(); + flags.resources = "cpus:2;cpus(role1):3;mem:1024;disk:1024;disk(role1):64;" + "ports:[31000-32000]"; + + MockSlave slave(flags, &detector, &containerizer); + spawn(slave); + + Clock::pause(); + + // Wait for slave to be initialized. + Clock::settle(); + + Resource dynamicReservation = Resources::parse("cpus", "1", "role1").get(); + dynamicReservation.mutable_reservation()->CopyFrom( + createReservationInfo("principal")); + + Resource persistentVolume = createPersistentVolume( + Megabytes(64), + "role1", + "id1", + "path1"); + + vector<Resource> checkpointedResources = + {dynamicReservation, persistentVolume}; + + // Add checkpointed resources. + slave.checkpointResources(checkpointedResources); + + // We expect that the slave will return ResourceUsage with + // total and checkpointed slave resources reported. + Future<ResourceUsage> usage = slave.usage(); + + AWAIT_READY(usage); + + Resources usageTotalResources(usage.get().total()); + + // Reported total field should contain persistent volumes and dynamic + // reservations. + EXPECT_EQ(usageTotalResources.persistentVolumes(), persistentVolume); + EXPECT_TRUE(usageTotalResources.contains(dynamicReservation)); + + terminate(slave); + wait(slave); + + Shutdown(); +} + } // namespace tests { } // namespace internal { } // namespace mesos {
