You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by mz...@apache.org on 2019/06/25 21:47:20 UTC
[mesos] 03/06: Refactored the allocator test to use the
`updateQuota` method.
This is an automated email from the ASF dual-hosted git repository.
mzhu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git
commit 86affdd0b5c2208627eb194e5d02794fa264c383
Author: Meng Zhu <mz...@mesosphere.io>
AuthorDate: Thu Jun 20 18:09:36 2019 -0700
Refactored the allocator test to use the `updateQuota` method.
This paves the way to remove `setQuota` and `removeQuota` methods.
Review: https://reviews.apache.org/r/70917
---
src/tests/allocator.cpp | 12 +-
src/tests/allocator.hpp | 2 +-
src/tests/hierarchical_allocator_benchmarks.cpp | 6 +-
src/tests/hierarchical_allocator_tests.cpp | 215 +++++++++++++-----------
4 files changed, 130 insertions(+), 105 deletions(-)
diff --git a/src/tests/allocator.cpp b/src/tests/allocator.cpp
index 5534187..ccdf352 100644
--- a/src/tests/allocator.cpp
+++ b/src/tests/allocator.cpp
@@ -24,13 +24,15 @@ namespace mesos {
namespace internal {
namespace tests {
-Quota createQuota(const string& role, const string& resources)
+// This is a legacy helper where we take in a resource string
+// and use that to set both quota guarantees and limits.
+Quota2 createQuota(const string& role, const string& resources)
{
- mesos::quota::QuotaInfo quotaInfo;
- quotaInfo.set_role(role);
- *quotaInfo.mutable_guarantee() = CHECK_NOTERROR(Resources::parse(resources));
+ Quota2 quota;
+ quota.guarantees = CHECK_NOTERROR(ResourceQuantities::fromString(resources));
+ quota.limits = CHECK_NOTERROR(ResourceLimits::fromString(resources));
- return Quota{quotaInfo};
+ return quota;
}
diff --git a/src/tests/allocator.hpp b/src/tests/allocator.hpp
index 765968d..45e415b 100644
--- a/src/tests/allocator.hpp
+++ b/src/tests/allocator.hpp
@@ -41,7 +41,7 @@ namespace tests {
// Allocator test helpers.
-Quota createQuota(const std::string& role, const std::string& resources);
+Quota2 createQuota(const std::string& role, const std::string& resources);
WeightInfo createWeightInfo(const std::string& role, double weight);
diff --git a/src/tests/hierarchical_allocator_benchmarks.cpp b/src/tests/hierarchical_allocator_benchmarks.cpp
index 04c1249..f3a2c4a 100644
--- a/src/tests/hierarchical_allocator_benchmarks.cpp
+++ b/src/tests/hierarchical_allocator_benchmarks.cpp
@@ -609,11 +609,11 @@ TEST_P(BENCHMARK_HierarchicalAllocator_WithQuotaParam, LargeAndSmallQuota)
allocator->pause();
foreach (const string& role, smallQuotaRoles) {
- allocator->setQuota(role, createQuota(role, smallQuotaResourcesString));
+ allocator->updateQuota(role, createQuota(role, smallQuotaResourcesString));
}
foreach (const string& role, largeQuotaRoles) {
- allocator->setQuota(role, createQuota(role, largeQuotaResourcesString));
+ allocator->updateQuota(role, createQuota(role, largeQuotaResourcesString));
}
allocator->resume();
@@ -762,7 +762,7 @@ TEST_P(
allocator->pause();
foreach (const string& role, roles) {
- allocator->setQuota(role, createQuota(role, quotaResourcesString));
+ allocator->updateQuota(role, createQuota(role, quotaResourcesString));
}
allocator->resume();
diff --git a/src/tests/hierarchical_allocator_tests.cpp b/src/tests/hierarchical_allocator_tests.cpp
index 20b7fd7..e82966a 100644
--- a/src/tests/hierarchical_allocator_tests.cpp
+++ b/src/tests/hierarchical_allocator_tests.cpp
@@ -1303,8 +1303,8 @@ TEST_P(HierarchicalAllocatorTestWithReservations, ReservationUnallocated)
Resources reserved = Resources(agent1.resources()).reserved(QUOTA_ROLE);
// Set a quota for 1x agent resources.
- const Quota quota = createQuota(QUOTA_ROLE, "cpus:1;mem:1024");
- allocator->setQuota(QUOTA_ROLE, quota);
+ const Quota2 quota = createQuota(QUOTA_ROLE, "cpus:1;mem:1024");
+ allocator->updateQuota(QUOTA_ROLE, quota);
// Create `framework1` and set quota for its role.
FrameworkInfo framework1 = createFrameworkInfo({QUOTA_ROLE});
@@ -1382,8 +1382,8 @@ TEST_P(HierarchicalAllocatorTestWithReservations, ReservationAllocated)
Resources reserved = Resources(agent1.resources()).reserved(QUOTA_ROLE);
// Set a quota for 2x agent resources.
- const Quota quota = createQuota(QUOTA_ROLE, "cpus:2;mem:2048");
- allocator->setQuota(QUOTA_ROLE, quota);
+ const Quota2 quota = createQuota(QUOTA_ROLE, "cpus:2;mem:2048");
+ allocator->updateQuota(QUOTA_ROLE, quota);
// Create `framework1` and set quota for its role.
FrameworkInfo framework1 = createFrameworkInfo({QUOTA_ROLE});
@@ -1473,8 +1473,8 @@ TEST_P(HierarchicalAllocatorTestWithReservations,
agent1.resources(),
{});
- const Quota quota = createQuota(QUOTA_ROLE, "cpus:2;mem:2048");
- allocator->setQuota(QUOTA_ROLE, quota);
+ const Quota2 quota = createQuota(QUOTA_ROLE, "cpus:2;mem:2048");
+ allocator->updateQuota(QUOTA_ROLE, quota);
// Create `framework1` and set quota to half the size of agent1' resources
// for its role.
@@ -1547,8 +1547,8 @@ TEST_P(HierarchicalAllocatorTestWithReservations,
initialize();
- const Quota quota = createQuota(QUOTA_ROLE, "cpus:3;mem:2048;disk:100");
- allocator->setQuota(QUOTA_ROLE, quota);
+ const Quota2 quota = createQuota(QUOTA_ROLE, "cpus:3;mem:2048;disk:100");
+ allocator->updateQuota(QUOTA_ROLE, quota);
Resource::ReservationInfo reservation;
reservation.set_type(GetParam());
@@ -1693,8 +1693,8 @@ TEST_F(HierarchicalAllocatorTest, QuotaAccountingReserveAllocatedResources)
// Create `framework` and set quota for its role.
- const Quota quota = createQuota(QUOTA_ROLE, "cpus:10;mem:1024");
- allocator->setQuota(QUOTA_ROLE, quota);
+ const Quota2 quota = createQuota(QUOTA_ROLE, "cpus:10;mem:1024");
+ allocator->updateQuota(QUOTA_ROLE, quota);
FrameworkInfo framework = createFrameworkInfo({QUOTA_ROLE});
allocator->addFramework(framework.id(), framework, {}, true, {});
@@ -1758,8 +1758,8 @@ TEST_F(HierarchicalAllocatorTest, QuotaAccountingUnreserveAllocatedResources)
// Create `framework` and set quota for its role.
- const Quota quota = createQuota("quota-role", "cpus:1;mem:1024");
- allocator->setQuota("quota-role", quota);
+ const Quota2 quota = createQuota("quota-role", "cpus:1;mem:1024");
+ allocator->updateQuota("quota-role", quota);
FrameworkInfo framework = createFrameworkInfo({"quota-role"});
allocator->addFramework(framework.id(), framework, {}, true, {});
@@ -1909,13 +1909,13 @@ TEST_P(HierarchicalAllocatorTestWithReservations,
const string QUOTA_ROLE_NO_RESERVATION{"quota-role-no-reservation"};
const string NON_QUOTA_ROLE{"non-quota-role"};
- const Quota quota1 =
+ const Quota2 quota1 =
createQuota(QUOTA_ROLE_W_RESERVATION, "cpus:1;mem:1024");
- allocator->setQuota(QUOTA_ROLE_W_RESERVATION, quota1);
+ allocator->updateQuota(QUOTA_ROLE_W_RESERVATION, quota1);
- const Quota quota2 =
+ const Quota2 quota2 =
createQuota(QUOTA_ROLE_NO_RESERVATION, "cpus:1;mem:1024");
- allocator->setQuota(QUOTA_ROLE_NO_RESERVATION, quota2);
+ allocator->updateQuota(QUOTA_ROLE_NO_RESERVATION, quota2);
// Add `agent1` with reserved resources for `QUOTA_ROLE_W_RESERVATION`.
Resource::ReservationInfo reservation;
@@ -3434,8 +3434,8 @@ TEST_F(HierarchicalAllocatorTest, QuotaProvidesGuarantee)
FrameworkInfo framework1 = createFrameworkInfo({QUOTA_ROLE});
allocator->addFramework(framework1.id(), framework1, {}, true, {});
- const Quota quota = createQuota(QUOTA_ROLE, "cpus:2;mem:1024");
- allocator->setQuota(QUOTA_ROLE, quota);
+ const Quota2 quota = createQuota(QUOTA_ROLE, "cpus:2;mem:1024");
+ allocator->updateQuota(QUOTA_ROLE, quota);
// Create `framework2` in a non-quota'ed role.
FrameworkInfo framework2 = createFrameworkInfo({NO_QUOTA_ROLE});
@@ -3558,8 +3558,8 @@ TEST_F(HierarchicalAllocatorTest, RemoveQuota)
initialize();
- const Quota quota = createQuota(QUOTA_ROLE, "cpus:2;mem:1024");
- allocator->setQuota(QUOTA_ROLE, quota);
+ const Quota2 quota = createQuota(QUOTA_ROLE, "cpus:2;mem:1024");
+ allocator->updateQuota(QUOTA_ROLE, quota);
FrameworkInfo framework1 = createFrameworkInfo({QUOTA_ROLE});
allocator->addFramework(framework1.id(), framework1, {}, true, {});
@@ -3596,7 +3596,7 @@ TEST_F(HierarchicalAllocatorTest, RemoveQuota)
// quota is removed, quota guarantee does not apply any more and released
// resources should be offered to `framework2` to restore fairness.
- allocator->removeQuota(QUOTA_ROLE);
+ allocator->updateQuota(QUOTA_ROLE, master::DEFAULT_QUOTA);
// Process all triggered allocation events.
//
@@ -3662,8 +3662,8 @@ TEST_F(HierarchicalAllocatorTest, MultipleFrameworksInRoleWithQuota)
FrameworkInfo framework1a = createFrameworkInfo({QUOTA_ROLE});
allocator->addFramework(framework1a.id(), framework1a, {}, true, {});
- const Quota quota = createQuota(QUOTA_ROLE, "cpus:4;mem:2048");
- allocator->setQuota(QUOTA_ROLE, quota);
+ const Quota2 quota = createQuota(QUOTA_ROLE, "cpus:4;mem:2048");
+ allocator->updateQuota(QUOTA_ROLE, quota);
// Create `framework2` in a non-quota'ed role.
FrameworkInfo framework2 = createFrameworkInfo({NO_QUOTA_ROLE});
@@ -3798,8 +3798,9 @@ TEST_F(HierarchicalAllocatorTest, QuotaAllocationGranularity)
allocator->addFramework(framework1.id(), framework1, {}, true, {});
// Set quota to be less than the agent resources.
- const Quota quota = createQuota(QUOTA_ROLE, "cpus:0.5;mem:200");
- allocator->setQuota(QUOTA_ROLE, quota);
+ const string quotaResourcesString = "cpus:0.5;mem:200";
+ const Quota2 quota = createQuota(QUOTA_ROLE, quotaResourcesString);
+ allocator->updateQuota(QUOTA_ROLE, quota);
SlaveInfo agent = createSlaveInfo("cpus:1;mem:512;disk:0");
allocator->addSlave(
@@ -3815,7 +3816,9 @@ TEST_F(HierarchicalAllocatorTest, QuotaAllocationGranularity)
// has more resources to offer.
Allocation expected = Allocation(
framework1.id(),
- {{QUOTA_ROLE, {{agent.id(), quota.info.guarantee()}}}});
+ {{QUOTA_ROLE,
+ {{agent.id(),
+ CHECK_NOTERROR(Resources::parse(quotaResourcesString))}}}});
AWAIT_EXPECT_EQ(expected, allocations.get());
@@ -3830,8 +3833,10 @@ TEST_F(HierarchicalAllocatorTest, QuotaAllocationGranularity)
// `framework2` will get the remaining resources of `agent`.
expected = Allocation(
framework2.id(),
- {{NO_QUOTA_ROLE, {{agent.id(), agent.resources() -
- Resources(quota.info.guarantee())}}}});
+ {{NO_QUOTA_ROLE,
+ {{agent.id(),
+ agent.resources() -
+ CHECK_NOTERROR(Resources::parse(quotaResourcesString))}}}});
AWAIT_EXPECT_EQ(expected, allocations.get());
@@ -3850,8 +3855,9 @@ TEST_F(HierarchicalAllocatorTest, QuotaAllocationGranularityUnchoppableResource)
const string QUOTA_ROLE{"quota-role"};
- const Quota quota = createQuota(QUOTA_ROLE, "cpus:2;mem:2048;disk:150");
- allocator->setQuota(QUOTA_ROLE, quota);
+ const string quotaResourcesString = "cpus:2;mem:2048;disk:150";
+ const Quota2 quota = createQuota(QUOTA_ROLE, quotaResourcesString);
+ allocator->updateQuota(QUOTA_ROLE, quota);
// Create 100 disk resource of type MOUNT.
Resources mountDiskResource =
@@ -3928,10 +3934,12 @@ TEST_F(HierarchicalAllocatorTest, QuotaAllocationGranularityUnchoppableResource)
Clock::settle();
- expected = Allocation(framework.id(),
- {{QUOTA_ROLE, {{agent3.id(),
- quota.info.guarantee() -
- allocatedQuota.createStrippedScalarQuantity()}}}});
+ expected = Allocation(
+ framework.id(),
+ {{QUOTA_ROLE,
+ {{agent3.id(),
+ CHECK_NOTERROR(Resources::parse(quotaResourcesString)) -
+ allocatedQuota.createStrippedScalarQuantity()}}}});
AWAIT_EXPECT_EQ(expected, allocations.get());
@@ -3955,8 +3963,8 @@ TEST_F(HierarchicalAllocatorTest, QuotaAllocationMultipleDisk)
const string QUOTA_ROLE{"quota-role"};
- const Quota quota = createQuota(QUOTA_ROLE, "cpus:1;mem:512;disk:100");
- allocator->setQuota(QUOTA_ROLE, quota);
+ const Quota2 quota = createQuota(QUOTA_ROLE, "cpus:1;mem:512;disk:100");
+ allocator->updateQuota(QUOTA_ROLE, quota);
// Create 50 disk resource of type `MOUNT`.
Resources mountDiskResource = createDiskResource(
@@ -4006,8 +4014,9 @@ TEST_F(HierarchicalAllocatorTest, QuotaRoleAllocateNonQuotaResource)
const string QUOTA_ROLE_1{"quota-role-1"};
- const Quota quota1 = createQuota(QUOTA_ROLE_1, "cpus:2");
- allocator->setQuota(QUOTA_ROLE_1, quota1);
+ const string quotaResourcesString1 = "cpus:2";
+ const Quota2 quota1 = createQuota(QUOTA_ROLE_1, quotaResourcesString1);
+ allocator->updateQuota(QUOTA_ROLE_1, quota1);
SlaveInfo agent1 = createSlaveInfo("cpus:1;mem:1024;ports:[31000-32000]");
allocator->addSlave(
@@ -4043,8 +4052,9 @@ TEST_F(HierarchicalAllocatorTest, QuotaRoleAllocateNonQuotaResource)
const string QUOTA_ROLE_2{"quota-role-2"};
- const Quota quota2 = createQuota(QUOTA_ROLE_2, "mem:1024");
- allocator->setQuota(QUOTA_ROLE_2, quota2);
+ const string quotaResourcesString2 = "mem:1024";
+ const Quota2 quota2 = createQuota(QUOTA_ROLE_2, quotaResourcesString2);
+ allocator->updateQuota(QUOTA_ROLE_2, quota2);
// Add `agent2` with identical resources.
// This will trigger an event-driven allocation on `agent2`.
@@ -4067,8 +4077,10 @@ TEST_F(HierarchicalAllocatorTest, QuotaRoleAllocateNonQuotaResource)
// resources that no roles can set quota for).
expected = Allocation(
framework.id(),
- {{QUOTA_ROLE_1, {{agent2.id(),
- agent2.resources() - Resources(quota2.info.guarantee())}}}});
+ {{QUOTA_ROLE_1,
+ {{agent2.id(),
+ agent2.resources() -
+ CHECK_NOTERROR(Resources::parse(quotaResourcesString2))}}}});
AWAIT_EXPECT_EQ(expected, allocations.get());
@@ -4097,9 +4109,7 @@ TEST_F(HierarchicalAllocatorTest, QuotaRoleAllocateNonQuotaResource)
Resources nonQuotaResources =
Resources(agent3.resources()).filter([&](const Resource& resource) {
- return ResourceQuantities::fromScalarResources(
- Resources(quota1.info.guarantee()))
- .get(resource.name()) == Value::Scalar();
+ return quota1.guarantees.get(resource.name()) == Value::Scalar();
});
expected = Allocation(
@@ -4124,8 +4134,9 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(HierarchicalAllocatorTest, DRFWithQuota)
initialize();
- const Quota quota = createQuota(QUOTA_ROLE, "cpus:0.25;mem:128");
- allocator->setQuota(QUOTA_ROLE, quota);
+ const string quotaResourcesString = "cpus:0.25;mem:128";
+ const Quota2 quota = createQuota(QUOTA_ROLE, quotaResourcesString);
+ allocator->updateQuota(QUOTA_ROLE, quota);
FrameworkInfo framework1 = createFrameworkInfo({QUOTA_ROLE});
allocator->addFramework(framework1.id(), framework1, {}, true, {});
@@ -4163,7 +4174,9 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(HierarchicalAllocatorTest, DRFWithQuota)
None(),
agent1.resources(),
{{framework1.id(),
- allocatedResources(quota.info.guarantee(), QUOTA_ROLE)}});
+ allocatedResources(
+ CHECK_NOTERROR(Resources::parse(quotaResourcesString)),
+ QUOTA_ROLE)}});
// Total cluster resources (1 agent): cpus=1, mem=512.
// QUOTA_ROLE share = 0.25 (cpus=0.25, mem=128) [quota: cpus=0.25, mem=128]
@@ -4179,8 +4192,10 @@ TEST_F_TEMP_DISABLED_ON_WINDOWS(HierarchicalAllocatorTest, DRFWithQuota)
// share is 0.
Allocation expected = Allocation(
framework2.id(),
- {{NO_QUOTA_ROLE, {{agent1.id(),
- Resources(agent1.resources()) - quota.info.guarantee()}}}});
+ {{NO_QUOTA_ROLE,
+ {{agent1.id(),
+ Resources(agent1.resources()) -
+ CHECK_NOTERROR(Resources::parse(quotaResourcesString))}}}});
AWAIT_EXPECT_EQ(expected, allocations.get());
@@ -4335,8 +4350,8 @@ TEST_F(HierarchicalAllocatorTest, QuotaAgainstStarvation)
filter0s);
// We set quota for the "starving" `QUOTA_ROLE` role.
- const Quota quota = createQuota(QUOTA_ROLE, "cpus:2;mem:1024");
- allocator->setQuota(QUOTA_ROLE, quota);
+ const Quota2 quota = createQuota(QUOTA_ROLE, "cpus:2;mem:1024");
+ allocator->updateQuota(QUOTA_ROLE, quota);
// Since `QUOTA_ROLE` is under quota, `agent2`'s resources will
// be allocated to `framework1`.
@@ -4379,8 +4394,8 @@ TEST_F(HierarchicalAllocatorTest, QuotaAbsentFrameworkWholeAgent)
// Set quota for the quota'ed role. This role isn't registered with
// the allocator yet.
- const Quota quota = createQuota(QUOTA_ROLE, "cpus:2;mem:1024");
- allocator->setQuota(QUOTA_ROLE, quota);
+ const Quota2 quota = createQuota(QUOTA_ROLE, "cpus:2;mem:1024");
+ allocator->updateQuota(QUOTA_ROLE, quota);
// Add `framework` in the non-quota'ed role.
FrameworkInfo framework = createFrameworkInfo({NO_QUOTA_ROLE});
@@ -4471,11 +4486,11 @@ TEST_F(HierarchicalAllocatorTest, MultiQuotaAbsentFrameworks)
{});
// Set quota for both roles.
- const Quota quota1 = createQuota(QUOTA_ROLE1, "cpus:1;mem:1024");
- allocator->setQuota(QUOTA_ROLE1, quota1);
+ const Quota2 quota1 = createQuota(QUOTA_ROLE1, "cpus:1;mem:1024");
+ allocator->updateQuota(QUOTA_ROLE1, quota1);
- const Quota quota2 = createQuota(QUOTA_ROLE2, "cpus:2;mem:2048");
- allocator->setQuota(QUOTA_ROLE2, quota2);
+ const Quota2 quota2 = createQuota(QUOTA_ROLE2, "cpus:2;mem:2048");
+ allocator->updateQuota(QUOTA_ROLE2, quota2);
// Add a framework in the `QUOTA_ROLE2` role.
FrameworkInfo framework = createFrameworkInfo({QUOTA_ROLE2});
@@ -4510,11 +4525,13 @@ TEST_F(HierarchicalAllocatorTest, MultiQuotaWithFrameworks)
initialize();
// Mem Quota for `QUOTA_ROLE1` is 10 times smaller than for `QUOTA_ROLE2`.
- const Quota quota1 = createQuota(QUOTA_ROLE1, "cpus:1;mem:200");
- allocator->setQuota(QUOTA_ROLE1, quota1);
+ const string quotaResourcesString1 = "cpus:1;mem:200";
+ const Quota2 quota1 = createQuota(QUOTA_ROLE1, quotaResourcesString1);
+ allocator->updateQuota(QUOTA_ROLE1, quota1);
- const Quota quota2 = createQuota(QUOTA_ROLE2, "cpus:2;mem:2000");
- allocator->setQuota(QUOTA_ROLE2, quota2);
+ const string quotaResourcesString2 = "cpus:2;mem:2000";
+ const Quota2 quota2 = createQuota(QUOTA_ROLE2, quotaResourcesString2);
+ allocator->updateQuota(QUOTA_ROLE2, quota2);
// Add `framework1` in the `QUOTA_ROLE1` role.
FrameworkInfo framework1 = createFrameworkInfo({QUOTA_ROLE1});
@@ -4571,8 +4588,10 @@ TEST_F(HierarchicalAllocatorTest, MultiQuotaWithFrameworks)
// `framework2` will get some of agent3's resources to meet its quota.
Allocation expected = Allocation(
framework2.id(),
- {{QUOTA_ROLE2, {{agent3.id(),
- Resources(quota2.info.guarantee()) - agent2.resources()}}}});
+ {{QUOTA_ROLE2,
+ {{agent3.id(),
+ CHECK_NOTERROR(Resources::parse(quotaResourcesString2)) -
+ agent2.resources()}}}});
AWAIT_EXPECT_EQ(expected, allocations.get());
@@ -4597,8 +4616,8 @@ TEST_F(HierarchicalAllocatorTest, ReservationWithinQuota)
initialize();
- const Quota quota = createQuota(QUOTA_ROLE, "cpus:2;mem:256");
- allocator->setQuota(QUOTA_ROLE, quota);
+ const Quota2 quota = createQuota(QUOTA_ROLE, "cpus:2;mem:256");
+ allocator->updateQuota(QUOTA_ROLE, quota);
FrameworkInfo framework1 = createFrameworkInfo({QUOTA_ROLE});
allocator->addFramework(framework1.id(), framework1, {}, true, {});
@@ -4707,14 +4726,17 @@ TEST_F(HierarchicalAllocatorTest, QuotaSetAsideReservedResources)
FrameworkInfo framework1 = createFrameworkInfo({QUOTA_ROLE});
allocator->addFramework(framework1.id(), framework1, {}, true, {});
- const Quota quota = createQuota(QUOTA_ROLE, "cpus:4;mem:512");
- allocator->setQuota(QUOTA_ROLE, quota);
+ const string quotaResourcesString = "cpus:4;mem:512";
+ const Quota2 quota = createQuota(QUOTA_ROLE, quotaResourcesString);
+ allocator->updateQuota(QUOTA_ROLE, quota);
// `framework1` will be offered resources at `agent1` up to its quota limit
// because the resources at `agent2` are reserved for a different role.
Allocation expected = Allocation(
framework1.id(),
- {{QUOTA_ROLE, {{agent1.id(), quota.info.guarantee()}}}});
+ {{QUOTA_ROLE,
+ {{agent1.id(),
+ CHECK_NOTERROR(Resources::parse(quotaResourcesString))}}}});
AWAIT_EXPECT_EQ(expected, allocations.get());
@@ -4726,7 +4748,8 @@ TEST_F(HierarchicalAllocatorTest, QuotaSetAsideReservedResources)
allocator->recoverResources(
framework1.id(),
agent1.id(),
- allocatedResources(quota.info.guarantee(), QUOTA_ROLE),
+ allocatedResources(
+ CHECK_NOTERROR(Resources::parse(quotaResourcesString)), QUOTA_ROLE),
longFilter);
// Trigger a batch allocation for good measure, but don't expect any
@@ -5932,8 +5955,8 @@ TEST_F(HierarchicalAllocatorTest, DisproportionateQuotaVsAllocation)
const string agentResources = "cpus:2;mem:1024";
const string quotaResources = "cpus:4;mem:1024";
- Quota quota = createQuota(QUOTA_ROLE, quotaResources);
- allocator->setQuota(QUOTA_ROLE, quota);
+ Quota2 quota = createQuota(QUOTA_ROLE, quotaResources);
+ allocator->updateQuota(QUOTA_ROLE, quota);
// Register `framework` under `QUOTA_ROLE`.
FrameworkInfo framework = createFrameworkInfo({QUOTA_ROLE});
@@ -6056,8 +6079,8 @@ TEST_F(HierarchicalAllocatorTest, QuotaWithAncestorReservations)
const string PARENT_ROLE{"a"};
const string CHILD_ROLE{"a/b"};
- Quota quota = createQuota(QUOTA_ROLE, "cpus:1;mem:1024");
- allocator->setQuota(QUOTA_ROLE, quota);
+ Quota2 quota = createQuota(QUOTA_ROLE, "cpus:1;mem:1024");
+ allocator->updateQuota(QUOTA_ROLE, quota);
// This agent is reserved for the parent role `a`.
SlaveInfo agent1 = createSlaveInfo("cpus(a):1;mem(a):1024");
@@ -6165,8 +6188,8 @@ TEST_F(HierarchicalAllocatorTest, QuotaWithNestedRoleReservation)
const string PARENT_ROLE{"a"};
const string CHILD_ROLE{"a/b"};
- Quota quota = createQuota(PARENT_ROLE, "cpus:2;mem:200");
- allocator->setQuota(PARENT_ROLE, quota);
+ Quota2 quota = createQuota(PARENT_ROLE, "cpus:2;mem:200");
+ allocator->updateQuota(PARENT_ROLE, quota);
// This agent is reserved for the child role "a/b".
SlaveInfo agent1 = createSlaveInfo("cpus(a/b):1;mem(a/b):100");
@@ -6258,8 +6281,8 @@ TEST_F(HierarchicalAllocatorTest, QuotaWithNestedRoleAllocation)
AWAIT_EXPECT_EQ(expected, allocations.get());
- Quota quota = createQuota(PARENT_ROLE, "cpus:1;mem:1024");
- allocator->setQuota(PARENT_ROLE, quota);
+ Quota2 quota = createQuota(PARENT_ROLE, "cpus:1;mem:1024");
+ allocator->updateQuota(PARENT_ROLE, quota);
// --- TEST ---
@@ -6350,8 +6373,8 @@ TEST_F(HierarchicalAllocatorTest, QuotaHeadroomWithNestedRoleAllocation)
const string QUOTA_ROLE{"quota-role"};
- Quota quota = createQuota(QUOTA_ROLE, "cpus:1;mem:100");
- allocator->setQuota(QUOTA_ROLE, quota);
+ Quota2 quota = createQuota(QUOTA_ROLE, "cpus:1;mem:100");
+ allocator->updateQuota(QUOTA_ROLE, quota);
SlaveInfo agent3 = createSlaveInfo("cpus:1;mem:100");
allocator->addSlave(
@@ -6405,8 +6428,8 @@ TEST_F(HierarchicalAllocatorTest, DISABLED_NestedRoleQuota)
FrameworkInfo framework1 = createFrameworkInfo({PARENT_ROLE});
allocator->addFramework(framework1.id(), framework1, {}, true, {});
- const Quota parentQuota = createQuota(PARENT_ROLE, "cpus:2;mem:1024");
- allocator->setQuota(PARENT_ROLE, parentQuota);
+ const Quota2 parentQuota = createQuota(PARENT_ROLE, "cpus:2;mem:1024");
+ allocator->updateQuota(PARENT_ROLE, parentQuota);
SlaveInfo agent = createSlaveInfo("cpus:1;mem:512");
allocator->addSlave(
@@ -6455,8 +6478,8 @@ TEST_F(HierarchicalAllocatorTest, DISABLED_NestedRoleQuota)
EXPECT_TRUE(allocation.isPending());
// Set quota for `CHILD_ROLE2`.
- const Quota childQuota = createQuota(CHILD_ROLE2, "cpus:1;mem:512");
- allocator->setQuota(CHILD_ROLE2, childQuota);
+ const Quota2 childQuota = createQuota(CHILD_ROLE2, "cpus:1;mem:512");
+ allocator->updateQuota(CHILD_ROLE2, childQuota);
// Create `framework3` in CHILD_ROLE2, which is a child role of
// PARENT_ROLE. CHILD_ROLE2 has quota, so in the current
@@ -6493,8 +6516,8 @@ TEST_F(HierarchicalAllocatorTest, DISABLED_NestedRoleQuotaAllocateToParent)
const string CHILD_ROLE = "a/b/c";
// Set quota for parent role.
- const Quota parentQuota = createQuota(PARENT_ROLE, "cpus:4;mem:2048");
- allocator->setQuota(PARENT_ROLE, parentQuota);
+ const Quota2 parentQuota = createQuota(PARENT_ROLE, "cpus:4;mem:2048");
+ allocator->updateQuota(PARENT_ROLE, parentQuota);
// Create `framework1` in the parent role.
FrameworkInfo framework1 = createFrameworkInfo({PARENT_ROLE});
@@ -6522,8 +6545,8 @@ TEST_F(HierarchicalAllocatorTest, DISABLED_NestedRoleQuotaAllocateToParent)
FrameworkInfo framework2 = createFrameworkInfo({CHILD_ROLE});
allocator->addFramework(framework2.id(), framework2, {}, true, {});
- const Quota childQuota = createQuota(CHILD_ROLE, "cpus:1;mem:512");
- allocator->setQuota(CHILD_ROLE, childQuota);
+ const Quota2 childQuota = createQuota(CHILD_ROLE, "cpus:1;mem:512");
+ allocator->updateQuota(CHILD_ROLE, childQuota);
SlaveInfo agent2 = createSlaveInfo("cpus:1;mem:512");
allocator->addSlave(
@@ -6591,8 +6614,8 @@ TEST_F(HierarchicalAllocatorTest, DISABLED_NestedQuotaAccounting)
allocator->addFramework(framework1.id(), framework1, {}, true, {});
// Set quota for parent role.
- const Quota parentQuota = createQuota(PARENT_ROLE, "cpus:3;mem:300");
- allocator->setQuota(PARENT_ROLE, parentQuota);
+ const Quota2 parentQuota = createQuota(PARENT_ROLE, "cpus:3;mem:300");
+ allocator->updateQuota(PARENT_ROLE, parentQuota);
// Create `framework2` in the parent role.
FrameworkInfo framework2 = createFrameworkInfo({PARENT_ROLE});
@@ -6617,8 +6640,8 @@ TEST_F(HierarchicalAllocatorTest, DISABLED_NestedQuotaAccounting)
}
// Set quota for child role.
- const Quota childQuota = createQuota(CHILD_ROLE, "cpus:1;mem:100");
- allocator->setQuota(CHILD_ROLE, childQuota);
+ const Quota2 childQuota = createQuota(CHILD_ROLE, "cpus:1;mem:100");
+ allocator->updateQuota(CHILD_ROLE, childQuota);
// Create `framework3` in the child role.
FrameworkInfo framework3 = createFrameworkInfo({CHILD_ROLE});
@@ -6701,8 +6724,8 @@ TEST_P(HierarchicalAllocatorTestWithParam, AllocateSharedResources)
if (GetParam()) {
// Assign a quota.
- const Quota quota = createQuota("role1", "cpus:8;mem:2048;disk:4096");
- allocator->setQuota("role1", quota);
+ const Quota2 quota = createQuota("role1", "cpus:8;mem:2048;disk:4096");
+ allocator->updateQuota("role1", quota);
}
SlaveInfo slave = createSlaveInfo("cpus:4;mem:1024;disk(role1):2048");
@@ -7801,10 +7824,10 @@ TEST_P(HierarchicalAllocator_BENCHMARK_Test, Metrics)
for (size_t i = 0; i < frameworkCount; i++) {
string role = stringify(i);
- allocator->setQuota(role, createQuota(role, "cpus:1;mem:512;disk:256"));
+ allocator->updateQuota(role, createQuota(role, "cpus:1;mem:512;disk:256"));
}
- // Wait for all the `setQuota` operations to be processed.
+ // Wait for all the `updateQuota` operations to be processed.
Clock::settle();
watch.stop();