You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by vi...@apache.org on 2016/12/08 01:06:17 UTC
[2/9] mesos git commit: Changed the allocator API to allow adding
inactive frameworks.
Changed the allocator API to allow adding inactive frameworks.
Previously, a newly added framework was assumed to always be
active. Adding inactive frameworks will be used to support recovered
frameworks that haven't yet re-registered.
Review: https://reviews.apache.org/r/53895/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/51dfe768
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/51dfe768
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/51dfe768
Branch: refs/heads/master
Commit: 51dfe768741b5f9cff4895feff7a336d4a3039fd
Parents: fbcaed7
Author: Neil Conway <ne...@gmail.com>
Authored: Wed Dec 7 17:04:04 2016 -0800
Committer: Vinod Kone <vi...@gmail.com>
Committed: Wed Dec 7 17:05:40 2016 -0800
----------------------------------------------------------------------
CHANGELOG | 4 +
include/mesos/allocator/allocator.hpp | 5 +-
src/master/allocator/mesos/allocator.hpp | 12 +-
src/master/allocator/mesos/hierarchical.cpp | 9 +-
src/master/allocator/mesos/hierarchical.hpp | 3 +-
src/master/master.cpp | 3 +-
src/tests/allocator.hpp | 13 +-
src/tests/hierarchical_allocator_tests.cpp | 161 ++++++++++---------
src/tests/master_allocator_tests.cpp | 36 ++---
src/tests/persistent_volume_endpoints_tests.cpp | 4 +-
src/tests/reservation_tests.cpp | 6 +-
src/tests/resource_offers_tests.cpp | 2 +-
src/tests/slave_recovery_tests.cpp | 2 +-
13 files changed, 141 insertions(+), 119 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/51dfe768/CHANGELOG
----------------------------------------------------------------------
diff --git a/CHANGELOG b/CHANGELOG
index fe24e8e..7847fe6 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,10 @@
Release Notes - Mesos - Version 1.2.0 (WIP)
-------------------------------------------
+Additional API Changes:
+ * [MESOS-6675] - Changed the allocator API to support adding inactive
+ frameworks. Custom allocator implementations will need to be updated.
+
Release Notes - Mesos - Version 1.1.1 (WIP)
-------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/51dfe768/include/mesos/allocator/allocator.hpp
----------------------------------------------------------------------
diff --git a/include/mesos/allocator/allocator.hpp b/include/mesos/allocator/allocator.hpp
index 3fe04f8..5585949 100644
--- a/include/mesos/allocator/allocator.hpp
+++ b/include/mesos/allocator/allocator.hpp
@@ -123,11 +123,14 @@ public:
* account for these resources when updating the allocation of this
* framework. The allocator should avoid double accounting when yet
* unknown agents are added later in `addSlave()`.
+ *
+ * @param active Whether the framework is initially activated.
*/
virtual void addFramework(
const FrameworkID& frameworkId,
const FrameworkInfo& frameworkInfo,
- const hashmap<SlaveID, Resources>& used) = 0;
+ const hashmap<SlaveID, Resources>& used,
+ bool active) = 0;
/**
* Removes a framework from the Mesos cluster. It is up to an allocator to
http://git-wip-us.apache.org/repos/asf/mesos/blob/51dfe768/src/master/allocator/mesos/allocator.hpp
----------------------------------------------------------------------
diff --git a/src/master/allocator/mesos/allocator.hpp b/src/master/allocator/mesos/allocator.hpp
index 61159a9..8e0f37a 100644
--- a/src/master/allocator/mesos/allocator.hpp
+++ b/src/master/allocator/mesos/allocator.hpp
@@ -66,7 +66,8 @@ public:
void addFramework(
const FrameworkID& frameworkId,
const FrameworkInfo& frameworkInfo,
- const hashmap<SlaveID, Resources>& used);
+ const hashmap<SlaveID, Resources>& used,
+ bool active);
void removeFramework(
const FrameworkID& frameworkId);
@@ -197,7 +198,8 @@ public:
virtual void addFramework(
const FrameworkID& frameworkId,
const FrameworkInfo& frameworkInfo,
- const hashmap<SlaveID, Resources>& used) = 0;
+ const hashmap<SlaveID, Resources>& used,
+ bool active) = 0;
virtual void removeFramework(
const FrameworkID& frameworkId) = 0;
@@ -356,14 +358,16 @@ template <typename AllocatorProcess>
inline void MesosAllocator<AllocatorProcess>::addFramework(
const FrameworkID& frameworkId,
const FrameworkInfo& frameworkInfo,
- const hashmap<SlaveID, Resources>& used)
+ const hashmap<SlaveID, Resources>& used,
+ bool active)
{
process::dispatch(
process,
&MesosAllocatorProcess::addFramework,
frameworkId,
frameworkInfo,
- used);
+ used,
+ active);
}
http://git-wip-us.apache.org/repos/asf/mesos/blob/51dfe768/src/master/allocator/mesos/hierarchical.cpp
----------------------------------------------------------------------
diff --git a/src/master/allocator/mesos/hierarchical.cpp b/src/master/allocator/mesos/hierarchical.cpp
index 3b75949..33db3b8 100644
--- a/src/master/allocator/mesos/hierarchical.cpp
+++ b/src/master/allocator/mesos/hierarchical.cpp
@@ -219,7 +219,8 @@ void HierarchicalAllocatorProcess::recover(
void HierarchicalAllocatorProcess::addFramework(
const FrameworkID& frameworkId,
const FrameworkInfo& frameworkInfo,
- const hashmap<SlaveID, Resources>& used)
+ const hashmap<SlaveID, Resources>& used,
+ bool active)
{
CHECK(initialized);
@@ -274,7 +275,11 @@ void HierarchicalAllocatorProcess::addFramework(
LOG(INFO) << "Added framework " << frameworkId;
- allocate();
+ if (active) {
+ allocate();
+ } else {
+ deactivateFramework(frameworkId);
+ }
}
http://git-wip-us.apache.org/repos/asf/mesos/blob/51dfe768/src/master/allocator/mesos/hierarchical.hpp
----------------------------------------------------------------------
diff --git a/src/master/allocator/mesos/hierarchical.hpp b/src/master/allocator/mesos/hierarchical.hpp
index 2c31471..a6424d6 100644
--- a/src/master/allocator/mesos/hierarchical.hpp
+++ b/src/master/allocator/mesos/hierarchical.hpp
@@ -109,7 +109,8 @@ public:
void addFramework(
const FrameworkID& frameworkId,
const FrameworkInfo& frameworkInfo,
- const hashmap<SlaveID, Resources>& used);
+ const hashmap<SlaveID, Resources>& used,
+ bool active);
void removeFramework(
const FrameworkID& frameworkId);
http://git-wip-us.apache.org/repos/asf/mesos/blob/51dfe768/src/master/master.cpp
----------------------------------------------------------------------
diff --git a/src/master/master.cpp b/src/master/master.cpp
index f2364e2..ef1aba5 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -7059,7 +7059,8 @@ void Master::addFramework(Framework* framework)
allocator->addFramework(
framework->id(),
framework->info,
- framework->usedResources);
+ framework->usedResources,
+ framework->active);
// Export framework metrics if a principal is specified in `FrameworkInfo`.
http://git-wip-us.apache.org/repos/asf/mesos/blob/51dfe768/src/tests/allocator.hpp
----------------------------------------------------------------------
diff --git a/src/tests/allocator.hpp b/src/tests/allocator.hpp
index bce1190..1f9261d 100644
--- a/src/tests/allocator.hpp
+++ b/src/tests/allocator.hpp
@@ -39,7 +39,7 @@ namespace tests {
// The following actions make up for the fact that DoDefault
// cannot be used inside a DoAll, for example:
-// EXPECT_CALL(allocator, addFramework(_, _, _))
+// EXPECT_CALL(allocator, addFramework(_, _, _, _))
// .WillOnce(DoAll(InvokeAddFramework(&allocator),
// FutureSatisfy(&addFramework)));
@@ -57,7 +57,7 @@ ACTION_P(InvokeRecover, allocator)
ACTION_P(InvokeAddFramework, allocator)
{
- allocator->real->addFramework(arg0, arg1, arg2);
+ allocator->real->addFramework(arg0, arg1, arg2, arg3);
}
@@ -239,9 +239,9 @@ public:
EXPECT_CALL(*this, recover(_, _))
.WillRepeatedly(DoDefault());
- ON_CALL(*this, addFramework(_, _, _))
+ ON_CALL(*this, addFramework(_, _, _, _))
.WillByDefault(InvokeAddFramework(this));
- EXPECT_CALL(*this, addFramework(_, _, _))
+ EXPECT_CALL(*this, addFramework(_, _, _, _))
.WillRepeatedly(DoDefault());
ON_CALL(*this, removeFramework(_))
@@ -372,10 +372,11 @@ public:
const int expectedAgentCount,
const hashmap<std::string, Quota>&));
- MOCK_METHOD3(addFramework, void(
+ MOCK_METHOD4(addFramework, void(
const FrameworkID&,
const FrameworkInfo&,
- const hashmap<SlaveID, Resources>&));
+ const hashmap<SlaveID, Resources>&,
+ bool active));
MOCK_METHOD1(removeFramework, void(
const FrameworkID&));
http://git-wip-us.apache.org/repos/asf/mesos/blob/51dfe768/src/tests/hierarchical_allocator_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/hierarchical_allocator_tests.cpp b/src/tests/hierarchical_allocator_tests.cpp
index f9dcdbf..cde32c9 100644
--- a/src/tests/hierarchical_allocator_tests.cpp
+++ b/src/tests/hierarchical_allocator_tests.cpp
@@ -259,7 +259,7 @@ TEST_F(HierarchicalAllocatorTest, UnreservedDRF)
// framework1 will be offered all of slave1's resources since it is
// the only framework running so far.
FrameworkInfo framework1 = createFrameworkInfo("role1");
- allocator->addFramework(framework1.id(), framework1, {});
+ allocator->addFramework(framework1.id(), framework1, {}, true);
Future<Allocation> allocation = allocations.get();
AWAIT_READY(allocation);
@@ -270,7 +270,7 @@ TEST_F(HierarchicalAllocatorTest, UnreservedDRF)
// framework1 share = 1
FrameworkInfo framework2 = createFrameworkInfo("role2");
- allocator->addFramework(framework2.id(), framework2, {});
+ allocator->addFramework(framework2.id(), framework2, {}, true);
// Total cluster resources will become cpus=3, mem=1536:
// role1 share = 0.66 (cpus=2, mem=1024)
@@ -313,7 +313,7 @@ TEST_F(HierarchicalAllocatorTest, UnreservedDRF)
// framework2 share = 1
FrameworkInfo framework3 = createFrameworkInfo("role1");
- allocator->addFramework(framework3.id(), framework3, {});
+ allocator->addFramework(framework3.id(), framework3, {}, true);
// Total cluster resources will become cpus=10, mem=7680:
// role1 share = 0.2 (cpus=2, mem=1024)
@@ -339,7 +339,7 @@ TEST_F(HierarchicalAllocatorTest, UnreservedDRF)
// framework2 share = 1
FrameworkInfo framework4 = createFrameworkInfo("role1");
- allocator->addFramework(framework4.id(), framework4, {});
+ allocator->addFramework(framework4.id(), framework4, {}, true);
// Total cluster resources will become cpus=11, mem=8192
// role1 share = 0.63 (cpus=6, mem=5120)
@@ -377,7 +377,7 @@ TEST_F(HierarchicalAllocatorTest, ReservedDRF)
// framework1 will be offered all of the resources.
FrameworkInfo framework1 = createFrameworkInfo("role1");
- allocator->addFramework(framework1.id(), framework1, {});
+ allocator->addFramework(framework1.id(), framework1, {}, true);
Future<Allocation> allocation = allocations.get();
AWAIT_READY(allocation);
@@ -385,7 +385,7 @@ TEST_F(HierarchicalAllocatorTest, ReservedDRF)
EXPECT_EQ(slave1.resources(), Resources::sum(allocation.get().resources));
FrameworkInfo framework2 = createFrameworkInfo("role2");
- allocator->addFramework(framework2.id(), framework2, {});
+ allocator->addFramework(framework2.id(), framework2, {}, true);
// framework2 will be allocated the new resources.
SlaveInfo slave2 = createSlaveInfo("cpus:2;mem:512;disk:0");
@@ -411,7 +411,7 @@ TEST_F(HierarchicalAllocatorTest, ReservedDRF)
// expect framework3 to receive the next allocation of role1
// resources.
FrameworkInfo framework3 = createFrameworkInfo("role1");
- allocator->addFramework(framework3.id(), framework3, {});
+ allocator->addFramework(framework3.id(), framework3, {}, true);
SlaveInfo slave4 = createSlaveInfo(
"cpus(role1):2;mem(role1):1024;disk(role1):0");
@@ -453,7 +453,7 @@ TEST_F(HierarchicalAllocatorTest, DRFWithFairnessExclusion)
FrameworkInfo framework1 = createFrameworkInfo(
"role1", {FrameworkInfo::Capability::GPU_RESOURCES});
- allocator->addFramework(framework1.id(), framework1, {});
+ allocator->addFramework(framework1.id(), framework1, {}, true);
Future<Allocation> allocation = allocations.get();
AWAIT_READY(allocation);
@@ -464,7 +464,7 @@ TEST_F(HierarchicalAllocatorTest, DRFWithFairnessExclusion)
// framework1 share = 1
FrameworkInfo framework2 = createFrameworkInfo("role2");
- allocator->addFramework(framework2.id(), framework2, {});
+ allocator->addFramework(framework2.id(), framework2, {}, true);
// Total cluster resources will become cpus=3, mem=1536, (ignored) gpus=1
// role1 share = 0.66 (cpus=2, mem=1024, (ignored) gpus=1)
@@ -507,7 +507,7 @@ TEST_F(HierarchicalAllocatorTest, DRFWithFairnessExclusion)
// framework2 share = 1
FrameworkInfo framework3 = createFrameworkInfo("role1");
- allocator->addFramework(framework3.id(), framework3, {});
+ allocator->addFramework(framework3.id(), framework3, {}, true);
// Total cluster resources will become cpus=10, mem=7680, (ignored) gpus=1
// role1 share = 0.2 (cpus=2, mem=1024, (ignored) gpus=1)
@@ -533,7 +533,7 @@ TEST_F(HierarchicalAllocatorTest, DRFWithFairnessExclusion)
// framework2 share = 1
FrameworkInfo framework4 = createFrameworkInfo("role1");
- allocator->addFramework(framework4.id(), framework4, {});
+ allocator->addFramework(framework4.id(), framework4, {}, true);
// Total cluster resources will become cpus=11, mem=8192, (ignored) gpus=1
// role1 share = 0.63 (cpus=6, mem=5120, (ignored) gpus=1)
@@ -570,7 +570,7 @@ TEST_F(HierarchicalAllocatorTest, OfferFilter)
initialize();
FrameworkInfo framework = createFrameworkInfo(ROLE);
- allocator->addFramework(framework.id(), framework, {});
+ allocator->addFramework(framework.id(), framework, {}, true);
SlaveInfo agent = createSlaveInfo("cpus:1;mem:512;disk:0");
allocator->addSlave(agent.id(), agent, None(), agent.resources(), {});
@@ -653,10 +653,10 @@ TEST_F(HierarchicalAllocatorTest, SmallOfferFilterTimeout)
initialize(flags_);
FrameworkInfo framework1 = createFrameworkInfo(ROLE);
- allocator->addFramework(framework1.id(), framework1, {});
+ allocator->addFramework(framework1.id(), framework1, {}, true);
FrameworkInfo framework2 = createFrameworkInfo(ROLE);
- allocator->addFramework(framework2.id(), framework2, {});
+ allocator->addFramework(framework2.id(), framework2, {}, true);
SlaveInfo agent1 = createSlaveInfo("cpus:1;mem:512;disk:0");
allocator->addSlave(
@@ -786,7 +786,7 @@ TEST_F(HierarchicalAllocatorTest, MaintenanceInverseOffers)
// This framework will be offered all of the resources.
FrameworkInfo framework = createFrameworkInfo("*");
- allocator->addFramework(framework.id(), framework, {});
+ allocator->addFramework(framework.id(), framework, {}, true);
// Check that the resources go to the framework.
Future<Allocation> allocation = allocations.get();
@@ -843,7 +843,7 @@ TEST_F(HierarchicalAllocatorTest, CoarseGrained)
// resources so that we can test what happens when there are 2
// frameworks and 2 slaves to consider during allocation.
FrameworkInfo framework1 = createFrameworkInfo("role1");
- allocator->addFramework(framework1.id(), framework1, {});
+ allocator->addFramework(framework1.id(), framework1, {}, true);
Future<Allocation> allocation = allocations.get();
AWAIT_READY(allocation);
@@ -865,7 +865,7 @@ TEST_F(HierarchicalAllocatorTest, CoarseGrained)
// Now add the second framework, we expect there to be 2 subsequent
// allocations, each framework being allocated a full slave.
FrameworkInfo framework2 = createFrameworkInfo("role2");
- allocator->addFramework(framework2.id(), framework2, {});
+ allocator->addFramework(framework2.id(), framework2, {}, true);
hashmap<FrameworkID, Allocation> frameworkAllocations;
@@ -902,10 +902,10 @@ TEST_F(HierarchicalAllocatorTest, SameShareFairness)
initialize();
FrameworkInfo framework1 = createFrameworkInfo("*");
- allocator->addFramework(framework1.id(), framework1, {});
+ allocator->addFramework(framework1.id(), framework1, {}, true);
FrameworkInfo framework2 = createFrameworkInfo("*");
- allocator->addFramework(framework2.id(), framework2, {});
+ allocator->addFramework(framework2.id(), framework2, {}, true);
SlaveInfo slave = createSlaveInfo("cpus:2;mem:1024;disk:0");
allocator->addSlave(slave.id(), slave, None(), slave.resources(), {});
@@ -961,7 +961,7 @@ TEST_F(HierarchicalAllocatorTest, Reservations)
// framework1 should get all the resources from slave1, and the
// unreserved resources from slave2.
FrameworkInfo framework1 = createFrameworkInfo("role1");
- allocator->addFramework(framework1.id(), framework1, {});
+ allocator->addFramework(framework1.id(), framework1, {}, true);
Future<Allocation> allocation = allocations.get();
AWAIT_READY(allocation);
@@ -974,7 +974,7 @@ TEST_F(HierarchicalAllocatorTest, Reservations)
// framework2 should get all of its reserved resources on slave2.
FrameworkInfo framework2 = createFrameworkInfo("role2");
- allocator->addFramework(framework2.id(), framework2, {});
+ allocator->addFramework(framework2.id(), framework2, {}, true);
allocation = allocations.get();
AWAIT_READY(allocation);
@@ -1000,7 +1000,7 @@ TEST_F(HierarchicalAllocatorTest, RecoverResources)
// Initially, all the resources are allocated.
FrameworkInfo framework = createFrameworkInfo("role1");
- allocator->addFramework(framework.id(), framework, {});
+ allocator->addFramework(framework.id(), framework, {}, true);
Future<Allocation> allocation = allocations.get();
AWAIT_READY(allocation);
@@ -1057,7 +1057,7 @@ TEST_F(HierarchicalAllocatorTest, Allocatable)
initialize();
FrameworkInfo framework = createFrameworkInfo("role1");
- allocator->addFramework(framework.id(), framework, {});
+ allocator->addFramework(framework.id(), framework, {}, true);
// Not enough memory or cpu to be considered allocatable.
SlaveInfo slave1 = createSlaveInfo(
@@ -1126,7 +1126,7 @@ TEST_F(HierarchicalAllocatorTest, UpdateAllocation)
// Initially, all the resources are allocated.
FrameworkInfo framework = createFrameworkInfo("role1");
- allocator->addFramework(framework.id(), framework, {});
+ allocator->addFramework(framework.id(), framework, {}, true);
Future<Allocation> allocation = allocations.get();
AWAIT_READY(allocation);
@@ -1201,7 +1201,7 @@ TEST_F(HierarchicalAllocatorTest, UpdateAllocationSharedPersistentVolume)
"role1",
{FrameworkInfo::Capability::SHARED_RESOURCES});
allocator->addFramework(
- framework.id(), framework, hashmap<SlaveID, Resources>());
+ framework.id(), framework, hashmap<SlaveID, Resources>(), true);
Future<Allocation> allocation = allocations.get();
AWAIT_READY(allocation);
@@ -1304,7 +1304,7 @@ TEST_F(HierarchicalAllocatorTest, SharedResourcesCapability)
// Create `framework1` without opting in for SHARED_RESOURCES.
FrameworkInfo framework1 = createFrameworkInfo("role1");
- allocator->addFramework(framework1.id(), framework1, {});
+ allocator->addFramework(framework1.id(), framework1, {}, true);
// Initially, all the resources are allocated to `framework1`.
Future<Allocation> allocation = allocations.get();
@@ -1363,7 +1363,7 @@ TEST_F(HierarchicalAllocatorTest, SharedResourcesCapability)
FrameworkInfo framework2 = createFrameworkInfo(
"role1",
{FrameworkInfo::Capability::SHARED_RESOURCES});
- allocator->addFramework(framework2.id(), framework2, {});
+ allocator->addFramework(framework2.id(), framework2, {}, true);
// The offer to 'framework2` should contain the shared volume since it
// has opted in for SHARED_RESOURCES.
@@ -1401,7 +1401,7 @@ TEST_F(HierarchicalAllocatorTest, UpdateAvailableSuccess)
// Expect to receive the updated available resources.
FrameworkInfo framework = createFrameworkInfo("role1");
- allocator->addFramework(framework.id(), framework, {});
+ allocator->addFramework(framework.id(), framework, {}, true);
Future<Allocation> allocation = allocations.get();
AWAIT_READY(allocation);
@@ -1432,7 +1432,7 @@ TEST_F(HierarchicalAllocatorTest, UpdateAvailableFail)
// Expect to receive the all of the available resources.
FrameworkInfo framework = createFrameworkInfo("role1");
- allocator->addFramework(framework.id(), framework, {});
+ allocator->addFramework(framework.id(), framework, {}, true);
Future<Allocation> allocation = allocations.get();
AWAIT_READY(allocation);
@@ -1470,7 +1470,7 @@ TEST_F(HierarchicalAllocatorTest, UpdateSlave)
FrameworkInfo framework = createFrameworkInfo(
"role1",
{FrameworkInfo::Capability::REVOCABLE_RESOURCES});
- allocator->addFramework(framework.id(), framework, {});
+ allocator->addFramework(framework.id(), framework, {}, true);
// Initially, all the resources are allocated.
Future<Allocation> allocation = allocations.get();
@@ -1522,7 +1522,7 @@ TEST_F(HierarchicalAllocatorTest, OversubscribedNotAllocated)
// Add a framework that does *not* accept revocable resources.
FrameworkInfo framework = createFrameworkInfo("role1");
- allocator->addFramework(framework.id(), framework, {});
+ allocator->addFramework(framework.id(), framework, {}, true);
// Initially, all the resources are allocated.
Future<Allocation> allocation = allocations.get();
@@ -1557,7 +1557,7 @@ TEST_F(HierarchicalAllocatorTest, RecoverOversubscribedResources)
FrameworkInfo framework = createFrameworkInfo(
"role1",
{FrameworkInfo::Capability::REVOCABLE_RESOURCES});
- allocator->addFramework(framework.id(), framework, {});
+ allocator->addFramework(framework.id(), framework, {}, true);
// Initially, all the resources are allocated.
Future<Allocation> allocation = allocations.get();
@@ -1607,7 +1607,7 @@ TEST_F(HierarchicalAllocatorTest, Whitelist)
allocator->addSlave(slave.id(), slave, None(), slave.resources(), {});
FrameworkInfo framework = createFrameworkInfo("*");
- allocator->addFramework(framework.id(), framework, {});
+ allocator->addFramework(framework.id(), framework, {}, true);
Future<Allocation> allocation = allocations.get();
@@ -1672,7 +1672,8 @@ TEST_F(HierarchicalAllocatorTest, NoDoubleAccounting)
// Call `addFramework()` and `addSlave()` in different order for
// `framework1` and `framework2`
- allocator->addFramework(framework1.id(), framework1, framework1Allocation);
+ allocator->addFramework(
+ framework1.id(), framework1, framework1Allocation, true);
allocator->addSlave(
agent1.id(), agent1, None(), agent1.resources(), agent1Allocation);
@@ -1680,7 +1681,8 @@ TEST_F(HierarchicalAllocatorTest, NoDoubleAccounting)
allocator->addSlave(
agent2.id(), agent2, None(), agent2.resources(), agent2Allocation);
- allocator->addFramework(framework2.id(), framework2, framework2Allocation);
+ allocator->addFramework(
+ framework2.id(), framework2, framework2Allocation, true);
// Process all triggered allocation events.
Clock::settle();
@@ -1740,14 +1742,14 @@ TEST_F(HierarchicalAllocatorTest, QuotaProvidesGuarantee)
// Create `framework1` and set quota for its role.
FrameworkInfo framework1 = createFrameworkInfo(QUOTA_ROLE);
- allocator->addFramework(framework1.id(), framework1, {});
+ allocator->addFramework(framework1.id(), framework1, {}, true);
const Quota quota = createQuota(QUOTA_ROLE, "cpus:2;mem:1024");
allocator->setQuota(QUOTA_ROLE, quota);
// Create `framework2` in a non-quota'ed role.
FrameworkInfo framework2 = createFrameworkInfo(NO_QUOTA_ROLE);
- allocator->addFramework(framework2.id(), framework2, {});
+ allocator->addFramework(framework2.id(), framework2, {}, true);
// Process all triggered allocation events.
//
@@ -1853,10 +1855,10 @@ TEST_F(HierarchicalAllocatorTest, RemoveQuota)
allocator->setQuota(QUOTA_ROLE, quota);
FrameworkInfo framework1 = createFrameworkInfo(QUOTA_ROLE);
- allocator->addFramework(framework1.id(), framework1, {});
+ allocator->addFramework(framework1.id(), framework1, {}, true);
FrameworkInfo framework2 = createFrameworkInfo(NO_QUOTA_ROLE);
- allocator->addFramework(framework2.id(), framework2, {});
+ allocator->addFramework(framework2.id(), framework2, {}, true);
SlaveInfo agent1 = createSlaveInfo("cpus:1;mem:512;disk:0");
allocator->addSlave(
@@ -1948,14 +1950,14 @@ TEST_F(HierarchicalAllocatorTest, MultipleFrameworksInRoleWithQuota)
// Create `framework1a` and set quota for its role.
FrameworkInfo framework1a = createFrameworkInfo(QUOTA_ROLE);
- allocator->addFramework(framework1a.id(), framework1a, {});
+ allocator->addFramework(framework1a.id(), framework1a, {}, true);
const Quota quota = createQuota(QUOTA_ROLE, "cpus:4;mem:2048");
allocator->setQuota(QUOTA_ROLE, quota);
// Create `framework2` in a non-quota'ed role.
FrameworkInfo framework2 = createFrameworkInfo(NO_QUOTA_ROLE);
- allocator->addFramework(framework2.id(), framework2, {});
+ allocator->addFramework(framework2.id(), framework2, {}, true);
// Process all triggered allocation events.
//
@@ -1980,7 +1982,7 @@ TEST_F(HierarchicalAllocatorTest, MultipleFrameworksInRoleWithQuota)
// Create `framework1b` in the quota'ed role.
FrameworkInfo framework1b = createFrameworkInfo(QUOTA_ROLE);
- allocator->addFramework(framework1b.id(), framework1b, {});
+ allocator->addFramework(framework1b.id(), framework1b, {}, true);
SlaveInfo agent2 = createSlaveInfo("cpus:2;mem:1024;disk:0");
allocator->addSlave(agent2.id(), agent2, None(), agent2.resources(), {});
@@ -2063,7 +2065,7 @@ TEST_F(HierarchicalAllocatorTest, QuotaAllocationGranularity)
// Create `framework1` and set quota for its role.
FrameworkInfo framework1 = createFrameworkInfo(QUOTA_ROLE);
- allocator->addFramework(framework1.id(), framework1, {});
+ 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");
@@ -2071,7 +2073,7 @@ TEST_F(HierarchicalAllocatorTest, QuotaAllocationGranularity)
// Create `framework2` in a non-quota'ed role.
FrameworkInfo framework2 = createFrameworkInfo(NO_QUOTA_ROLE);
- allocator->addFramework(framework2.id(), framework2, {});
+ allocator->addFramework(framework2.id(), framework2, {}, true);
// Process all triggered allocation events.
//
@@ -2117,10 +2119,10 @@ TEST_F(HierarchicalAllocatorTest, DRFWithQuota)
allocator->setQuota(QUOTA_ROLE, quota);
FrameworkInfo framework1 = createFrameworkInfo(QUOTA_ROLE);
- allocator->addFramework(framework1.id(), framework1, {});
+ allocator->addFramework(framework1.id(), framework1, {}, true);
FrameworkInfo framework2 = createFrameworkInfo(NO_QUOTA_ROLE);
- allocator->addFramework(framework2.id(), framework2, {});
+ allocator->addFramework(framework2.id(), framework2, {}, true);
// Process all triggered allocation events.
//
@@ -2235,10 +2237,10 @@ TEST_F(HierarchicalAllocatorTest, QuotaAgainstStarvation)
initialize();
FrameworkInfo framework1 = createFrameworkInfo(QUOTA_ROLE);
- allocator->addFramework(framework1.id(), framework1, {});
+ allocator->addFramework(framework1.id(), framework1, {}, true);
FrameworkInfo framework2 = createFrameworkInfo(NO_QUOTA_ROLE);
- allocator->addFramework(framework2.id(), framework2, {});
+ allocator->addFramework(framework2.id(), framework2, {}, true);
SlaveInfo agent1 = createSlaveInfo("cpus:1;mem:512;disk:0");
allocator->addSlave(
@@ -2351,7 +2353,7 @@ TEST_F(HierarchicalAllocatorTest, QuotaAbsentFramework)
// Add `framework` in the non-quota'ed role.
FrameworkInfo framework = createFrameworkInfo(NO_QUOTA_ROLE);
- allocator->addFramework(framework.id(), framework, {});
+ allocator->addFramework(framework.id(), framework, {}, true);
// Process all triggered allocation events.
//
@@ -2431,7 +2433,7 @@ TEST_F(HierarchicalAllocatorTest, MultiQuotaAbsentFrameworks)
// Add a framework in the `QUOTA_ROLE2` role.
FrameworkInfo framework = createFrameworkInfo(QUOTA_ROLE2);
- allocator->addFramework(framework.id(), framework, {});
+ allocator->addFramework(framework.id(), framework, {}, true);
// Due to the coarse-grained nature of the allocations, `framework` will
// get all `agent`'s resources.
@@ -2469,11 +2471,11 @@ TEST_F(HierarchicalAllocatorTest, MultiQuotaWithFrameworks)
// Add `framework1` in the `QUOTA_ROLE1` role.
FrameworkInfo framework1 = createFrameworkInfo(QUOTA_ROLE1);
- allocator->addFramework(framework1.id(), framework1, {});
+ allocator->addFramework(framework1.id(), framework1, {}, true);
// Add `framework2` in the `QUOTA_ROLE2` role.
FrameworkInfo framework2 = createFrameworkInfo(QUOTA_ROLE2);
- allocator->addFramework(framework2.id(), framework2, {});
+ allocator->addFramework(framework2.id(), framework2, {}, true);
// Process all triggered allocation events.
//
@@ -2541,10 +2543,10 @@ TEST_F(HierarchicalAllocatorTest, ReservationWithinQuota)
allocator->setQuota(QUOTA_ROLE, quota);
FrameworkInfo framework1 = createFrameworkInfo(QUOTA_ROLE);
- allocator->addFramework(framework1.id(), framework1, {});
+ allocator->addFramework(framework1.id(), framework1, {}, true);
FrameworkInfo framework2 = createFrameworkInfo(NON_QUOTA_ROLE);
- allocator->addFramework(framework2.id(), framework2, {});
+ allocator->addFramework(framework2.id(), framework2, {}, true);
// Process all triggered allocation events.
//
@@ -2627,7 +2629,7 @@ TEST_F(HierarchicalAllocatorTest, QuotaSetAsideReservedResources)
// Create `framework1` and set quota for its role.
FrameworkInfo framework1 = createFrameworkInfo(QUOTA_ROLE);
- allocator->addFramework(framework1.id(), framework1, {});
+ allocator->addFramework(framework1.id(), framework1, {}, true);
const Quota quota = createQuota(QUOTA_ROLE, "cpus:4");
allocator->setQuota(QUOTA_ROLE, quota);
@@ -2660,7 +2662,7 @@ TEST_F(HierarchicalAllocatorTest, QuotaSetAsideReservedResources)
// Create `framework2` in a non-quota'ed role.
FrameworkInfo framework2 = createFrameworkInfo(NO_QUOTA_ROLE);
- allocator->addFramework(framework2.id(), framework2, {});
+ allocator->addFramework(framework2.id(), framework2, {}, true);
// `framework2` will be offered the reserved resources at `agent2`
// because those resources are reserved for its role.
@@ -2710,7 +2712,7 @@ TEST_F(HierarchicalAllocatorTest, DeactivateAndReactivateFramework)
// Framework will be offered all of the agent's resources since it is
// the only framework running so far.
FrameworkInfo framework = createFrameworkInfo("role1");
- allocator->addFramework(framework.id(), framework, {});
+ allocator->addFramework(framework.id(), framework, {}, true);
Future<Allocation> allocation = allocations.get();
AWAIT_READY(allocation);
@@ -2765,7 +2767,7 @@ TEST_F(HierarchicalAllocatorTest, SuppressAndReviveOffers)
// Framework will be offered all of the agent's resources since it is
// the only framework running so far.
FrameworkInfo framework = createFrameworkInfo("role1");
- allocator->addFramework(framework.id(), framework, {});
+ allocator->addFramework(framework.id(), framework, {}, true);
Future<Allocation> allocation = allocations.get();
AWAIT_READY(allocation);
@@ -2838,7 +2840,7 @@ TEST_F(HierarchicalAllocatorTest, ResourceMetrics)
EXPECT_TRUE(metrics.contains(expected));
FrameworkInfo framework = createFrameworkInfo("role1");
- allocator->addFramework(framework.id(), framework, {});
+ allocator->addFramework(framework.id(), framework, {}, true);
Clock::settle();
// All of the resources should be offered.
@@ -2926,7 +2928,7 @@ TEST_F(HierarchicalAllocatorTest, AllocationRunsMetric)
++allocations; // Adding an agent triggers allocations.
FrameworkInfo framework = createFrameworkInfo("role");
- allocator->addFramework(framework.id(), framework, {});
+ allocator->addFramework(framework.id(), framework, {}, true);
++allocations; // Adding a framework triggers allocations.
Clock::settle();
@@ -2980,7 +2982,7 @@ TEST_F(HierarchicalAllocatorTest, AllocationRunTimerMetrics)
allocator->addSlave(agent.id(), agent, None(), agent.resources(), {});
FrameworkInfo framework = createFrameworkInfo("role1");
- allocator->addFramework(framework.id(), framework, {});
+ allocator->addFramework(framework.id(), framework, {}, true);
// Wait for the allocation to complete.
AWAIT_READY(allocations.get());
@@ -3034,7 +3036,7 @@ TEST_F(HierarchicalAllocatorTest, ActiveOfferFiltersMetrics)
offerFilter.set_refuse_seconds(filterTimeout.secs());
FrameworkInfo framework1 = createFrameworkInfo("roleA");
- allocator->addFramework(framework1.id(), framework1, {});
+ allocator->addFramework(framework1.id(), framework1, {}, true);
Future<Allocation> allocation = allocations.get();
@@ -3057,7 +3059,7 @@ TEST_F(HierarchicalAllocatorTest, ActiveOfferFiltersMetrics)
EXPECT_TRUE(metrics.contains(expected));
FrameworkInfo framework2 = createFrameworkInfo("roleB");
- allocator->addFramework(framework2.id(), framework2, {});
+ allocator->addFramework(framework2.id(), framework2, {}, true);
allocation = allocations.get();
@@ -3080,7 +3082,7 @@ TEST_F(HierarchicalAllocatorTest, ActiveOfferFiltersMetrics)
EXPECT_TRUE(metrics.contains(expected));
FrameworkInfo framework3 = createFrameworkInfo("roleA");
- allocator->addFramework(framework3.id(), framework3, {});
+ allocator->addFramework(framework3.id(), framework3, {}, true);
allocation = allocations.get();
@@ -3121,7 +3123,7 @@ TEST_F(HierarchicalAllocatorTest, DominantShareMetrics)
allocator->addSlave(agent1.id(), agent1, None(), agent1.resources(), {});
FrameworkInfo framework1 = createFrameworkInfo("roleA");
- allocator->addFramework(framework1.id(), framework1, {});
+ allocator->addFramework(framework1.id(), framework1, {}, true);
Clock::settle();
JSON::Object expected;
@@ -3155,7 +3157,7 @@ TEST_F(HierarchicalAllocatorTest, DominantShareMetrics)
// implicit filter has not yet timed out. The new framework
// will have the full share.
FrameworkInfo framework2 = createFrameworkInfo("roleB");
- allocator->addFramework(framework2.id(), framework2, {});
+ allocator->addFramework(framework2.id(), framework2, {}, true);
Clock::settle();
expected.values = {
@@ -3225,7 +3227,7 @@ TEST_F(HierarchicalAllocatorTest, DominantShareMetricsWithFairnessExclusion)
FrameworkInfo framework1 = createFrameworkInfo(
"roleA", {FrameworkInfo::Capability::GPU_RESOURCES});
- allocator->addFramework(framework1.id(), framework1, {});
+ allocator->addFramework(framework1.id(), framework1, {}, true);
Clock::settle();
JSON::Object expected;
@@ -3238,7 +3240,7 @@ TEST_F(HierarchicalAllocatorTest, DominantShareMetricsWithFairnessExclusion)
EXPECT_TRUE(metrics.contains(expected));
FrameworkInfo framework2 = createFrameworkInfo("roleB");
- allocator->addFramework(framework2.id(), framework2, {});
+ allocator->addFramework(framework2.id(), framework2, {}, true);
Clock::settle();
// Add a second, identical agent. Now `framework2` will
@@ -3319,13 +3321,13 @@ TEST_F(HierarchicalAllocatorTest, UpdateWeight)
// and all resources will be offered to this framework since it is the only
// framework running so far.
FrameworkInfo framework1 = createFrameworkInfo("role1");
- allocator->addFramework(framework1.id(), framework1, {});
+ allocator->addFramework(framework1.id(), framework1, {}, true);
// Framework2 registers with 'role2' which also uses the default weight.
// It will not get any offers due to all resources having outstanding offers
// to framework1 when it registered.
FrameworkInfo framework2 = createFrameworkInfo("role2");
- allocator->addFramework(framework2.id(), framework2, {});
+ allocator->addFramework(framework2.id(), framework2, {}, true);
Future<Allocation> allocation = allocations.get();
AWAIT_READY(allocation);
@@ -3436,7 +3438,7 @@ TEST_F(HierarchicalAllocatorTest, UpdateWeight)
// Framework3 registers with 'role3'.
FrameworkInfo framework3 = createFrameworkInfo("role3");
- allocator->addFramework(framework3.id(), framework3, {});
+ allocator->addFramework(framework3.id(), framework3, {}, true);
// 'addFramework' will trigger the allocation immediately, so it does not
// need to manually advance the clock here.
@@ -3497,7 +3499,7 @@ TEST_F(HierarchicalAllocatorTest, ReviveOffers)
// Framework will be offered all of agent's resources since it is
// the only framework running so far.
FrameworkInfo framework = createFrameworkInfo("role1");
- allocator->addFramework(framework.id(), framework, {});
+ allocator->addFramework(framework.id(), framework, {}, true);
Future<Allocation> allocation = allocations.get();
AWAIT_READY(allocation);
@@ -3556,12 +3558,13 @@ TEST_P(HierarchicalAllocatorTestWithParam, AllocateSharedResources)
FrameworkInfo framework1 = createFrameworkInfo(
"role1",
{FrameworkInfo::Capability::SHARED_RESOURCES});
- allocator->addFramework(framework1.id(), framework1, {});
FrameworkInfo framework2 = createFrameworkInfo(
"role1",
{FrameworkInfo::Capability::SHARED_RESOURCES});
- allocator->addFramework(framework2.id(), framework2, {});
+
+ allocator->addFramework(framework1.id(), framework1, {}, true);
+ allocator->addFramework(framework2.id(), framework2, {}, true);
if (GetParam()) {
// Assign a quota.
@@ -3690,7 +3693,7 @@ TEST_P(HierarchicalAllocator_BENCHMARK_Test, AddAndUpdateSlave)
watch.start();
foreach (const FrameworkInfo& framework, frameworks) {
- allocator->addFramework(framework.id(), framework, {});
+ allocator->addFramework(framework.id(), framework, {}, true);
}
// Wait for all the `addFramework` operations to be processed.
@@ -3800,7 +3803,7 @@ TEST_P(HierarchicalAllocator_BENCHMARK_Test, DeclineOffers)
for (size_t i = 0; i < frameworkCount; i++) {
frameworks.push_back(createFrameworkInfo("*"));
- allocator->addFramework(frameworks[i].id(), frameworks[i], {});
+ allocator->addFramework(frameworks[i].id(), frameworks[i], {}, true);
}
// Wait for all the `addFramework` operations to be processed.
@@ -3943,7 +3946,7 @@ TEST_P(HierarchicalAllocator_BENCHMARK_Test, ResourceLabels)
for (size_t i = 0; i < frameworkCount; i++) {
frameworks.push_back(createFrameworkInfo("role1"));
- allocator->addFramework(frameworks[i].id(), frameworks[i], {});
+ allocator->addFramework(frameworks[i].id(), frameworks[i], {}, true);
}
// Wait for all the `addFramework` operations to be processed.
@@ -4106,7 +4109,7 @@ TEST_P(HierarchicalAllocator_BENCHMARK_Test, SuppressOffers)
for (size_t i = 0; i < frameworkCount; i++) {
frameworks.push_back(createFrameworkInfo("*"));
- allocator->addFramework(frameworks[i].id(), frameworks[i], {});
+ allocator->addFramework(frameworks[i].id(), frameworks[i], {}, true);
}
// Wait for all the `addFramework` operations to be processed.
@@ -4243,7 +4246,7 @@ TEST_P(HierarchicalAllocator_BENCHMARK_Test, Metrics)
for (size_t i = 0; i < frameworkCount; i++) {
FrameworkInfo framework = createFrameworkInfo(stringify(i));
- allocator->addFramework(framework.id(), framework, {});
+ allocator->addFramework(framework.id(), framework, {}, true);
}
// Wait for all the `addFramework` operations to be processed.
http://git-wip-us.apache.org/repos/asf/mesos/blob/51dfe768/src/tests/master_allocator_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/master_allocator_tests.cpp b/src/tests/master_allocator_tests.cpp
index bb94e38..266047b 100644
--- a/src/tests/master_allocator_tests.cpp
+++ b/src/tests/master_allocator_tests.cpp
@@ -178,7 +178,7 @@ TYPED_TEST(MasterAllocatorTest, SingleFramework)
MesosSchedulerDriver driver(
&sched, DEFAULT_FRAMEWORK_INFO, master.get()->pid, DEFAULT_CREDENTIAL);
- EXPECT_CALL(allocator, addFramework(_, _, _));
+ EXPECT_CALL(allocator, addFramework(_, _, _, _));
EXPECT_CALL(sched, registered(_, _, _));
@@ -228,7 +228,7 @@ TYPED_TEST(MasterAllocatorTest, ResourcesUnused)
MesosSchedulerDriver driver1(
&sched1, DEFAULT_FRAMEWORK_INFO, master.get()->pid, DEFAULT_CREDENTIAL);
- EXPECT_CALL(allocator, addFramework(_, _, _));
+ EXPECT_CALL(allocator, addFramework(_, _, _, _));
EXPECT_CALL(sched1, registered(_, _, _));
@@ -273,7 +273,7 @@ TYPED_TEST(MasterAllocatorTest, ResourcesUnused)
MesosSchedulerDriver driver2(
&sched2, frameworkInfo2, master.get()->pid, DEFAULT_CREDENTIAL);
- EXPECT_CALL(allocator, addFramework(_, _, _));
+ EXPECT_CALL(allocator, addFramework(_, _, _, _));
EXPECT_CALL(sched2, registered(_, _, _));
@@ -335,7 +335,7 @@ TYPED_TEST(MasterAllocatorTest, OutOfOrderDispatch)
MesosSchedulerDriver driver1(
&sched1, frameworkInfo1, master.get()->pid, DEFAULT_CREDENTIAL);
- EXPECT_CALL(allocator, addFramework(_, Eq(frameworkInfo1), _))
+ EXPECT_CALL(allocator, addFramework(_, Eq(frameworkInfo1), _, _))
.WillOnce(InvokeAddFramework(&allocator));
Future<FrameworkID> frameworkId1;
@@ -403,7 +403,7 @@ TYPED_TEST(MasterAllocatorTest, OutOfOrderDispatch)
MesosSchedulerDriver driver2(
&sched2, frameworkInfo2, master.get()->pid, DEFAULT_CREDENTIAL);
- EXPECT_CALL(allocator, addFramework(_, Eq(frameworkInfo2), _))
+ EXPECT_CALL(allocator, addFramework(_, Eq(frameworkInfo2), _, _))
.WillOnce(InvokeAddFramework(&allocator));
FrameworkID frameworkId2;
@@ -469,7 +469,7 @@ TYPED_TEST(MasterAllocatorTest, SchedulerFailover)
MesosSchedulerDriver driver1(
&sched1, frameworkInfo1, master.get()->pid, DEFAULT_CREDENTIAL);
- EXPECT_CALL(allocator, addFramework(_, _, _));
+ EXPECT_CALL(allocator, addFramework(_, _, _, _));
FrameworkID frameworkId;
EXPECT_CALL(sched1, registered(&driver1, _, _))
@@ -599,7 +599,7 @@ TYPED_TEST(MasterAllocatorTest, FrameworkExited)
MesosSchedulerDriver driver1(
&sched1, DEFAULT_FRAMEWORK_INFO, master.get()->pid, DEFAULT_CREDENTIAL);
- EXPECT_CALL(allocator, addFramework(_, _, _));
+ EXPECT_CALL(allocator, addFramework(_, _, _, _));
EXPECT_CALL(sched1, registered(_, _, _));
@@ -643,7 +643,7 @@ TYPED_TEST(MasterAllocatorTest, FrameworkExited)
MesosSchedulerDriver driver2(
&sched2, DEFAULT_FRAMEWORK_INFO, master.get()->pid, DEFAULT_CREDENTIAL);
- EXPECT_CALL(allocator, addFramework(_, _, _));
+ EXPECT_CALL(allocator, addFramework(_, _, _, _));
EXPECT_CALL(sched2, registered(_, _, _));
@@ -739,7 +739,7 @@ TYPED_TEST(MasterAllocatorTest, SlaveLost)
MesosSchedulerDriver driver(
&sched, DEFAULT_FRAMEWORK_INFO, master.get()->pid, DEFAULT_CREDENTIAL);
- EXPECT_CALL(allocator, addFramework(_, _, _));
+ EXPECT_CALL(allocator, addFramework(_, _, _, _));
EXPECT_CALL(sched, registered(_, _, _));
@@ -859,7 +859,7 @@ TYPED_TEST(MasterAllocatorTest, SlaveAdded)
MesosSchedulerDriver driver(
&sched, DEFAULT_FRAMEWORK_INFO, master.get()->pid, DEFAULT_CREDENTIAL);
- EXPECT_CALL(allocator, addFramework(_, _, _));
+ EXPECT_CALL(allocator, addFramework(_, _, _, _));
EXPECT_CALL(sched, registered(_, _, _));
@@ -956,7 +956,7 @@ TYPED_TEST(MasterAllocatorTest, TaskFinished)
MesosSchedulerDriver driver(
&sched, DEFAULT_FRAMEWORK_INFO, master.get()->pid, DEFAULT_CREDENTIAL);
- EXPECT_CALL(allocator, addFramework(_, _, _));
+ EXPECT_CALL(allocator, addFramework(_, _, _, _));
EXPECT_CALL(sched, registered(_, _, _));
@@ -1061,7 +1061,7 @@ TYPED_TEST(MasterAllocatorTest, CpusOnlyOfferedAndTaskLaunched)
MesosSchedulerDriver driver(
&sched, DEFAULT_FRAMEWORK_INFO, master.get()->pid, DEFAULT_CREDENTIAL);
- EXPECT_CALL(allocator, addFramework(_, _, _));
+ EXPECT_CALL(allocator, addFramework(_, _, _, _));
EXPECT_CALL(sched, registered(_, _, _));
@@ -1142,7 +1142,7 @@ TYPED_TEST(MasterAllocatorTest, MemoryOnlyOfferedAndTaskLaunched)
MesosSchedulerDriver driver(
&sched, DEFAULT_FRAMEWORK_INFO, master.get()->pid, DEFAULT_CREDENTIAL);
- EXPECT_CALL(allocator, addFramework(_, _, _));
+ EXPECT_CALL(allocator, addFramework(_, _, _, _));
EXPECT_CALL(sched, registered(_, _, _));
@@ -1291,7 +1291,7 @@ TYPED_TEST(MasterAllocatorTest, RoleTest)
.WillOnce(FutureSatisfy(®istered2));
Future<Nothing> addFramework;
- EXPECT_CALL(allocator, addFramework(_, _, _))
+ EXPECT_CALL(allocator, addFramework(_, _, _, _))
.WillOnce(FutureSatisfy(&addFramework));
driver2.start();
@@ -1357,7 +1357,7 @@ TYPED_TEST(MasterAllocatorTest, FrameworkReregistersFirst)
slave = this->StartSlave(&slaveDetector, &containerizer, flags);
ASSERT_SOME(slave);
- EXPECT_CALL(allocator, addFramework(_, _, _));
+ EXPECT_CALL(allocator, addFramework(_, _, _, _));
EXPECT_CALL(sched, registered(&driver, _, _));
@@ -1401,7 +1401,7 @@ TYPED_TEST(MasterAllocatorTest, FrameworkReregistersFirst)
EXPECT_CALL(allocator2, initialize(_, _, _, _, _));
Future<Nothing> addFramework;
- EXPECT_CALL(allocator2, addFramework(_, _, _))
+ EXPECT_CALL(allocator2, addFramework(_, _, _, _))
.WillOnce(DoAll(InvokeAddFramework(&allocator2),
FutureSatisfy(&addFramework)));
@@ -1481,7 +1481,7 @@ TYPED_TEST(MasterAllocatorTest, SlaveReregistersFirst)
slave = this->StartSlave(&slaveDetector, &containerizer, flags);
ASSERT_SOME(slave);
- EXPECT_CALL(allocator, addFramework(_, _, _));
+ EXPECT_CALL(allocator, addFramework(_, _, _, _));
EXPECT_CALL(allocator, recoverResources(_, _, _, _));
EXPECT_CALL(sched, registered(&driver, _, _));
@@ -1540,7 +1540,7 @@ TYPED_TEST(MasterAllocatorTest, SlaveReregistersFirst)
EXPECT_CALL(sched, registered(&driver, _, _));
- EXPECT_CALL(allocator2, addFramework(_, _, _));
+ EXPECT_CALL(allocator2, addFramework(_, _, _, _));
Future<vector<Offer>> resourceOffers2;
EXPECT_CALL(sched, resourceOffers(&driver, _))
http://git-wip-us.apache.org/repos/asf/mesos/blob/51dfe768/src/tests/persistent_volume_endpoints_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/persistent_volume_endpoints_tests.cpp b/src/tests/persistent_volume_endpoints_tests.cpp
index f35592a..241970f 100644
--- a/src/tests/persistent_volume_endpoints_tests.cpp
+++ b/src/tests/persistent_volume_endpoints_tests.cpp
@@ -1559,7 +1559,7 @@ TEST_F(PersistentVolumeEndpointsTest, OfferCreateThenEndpointRemove)
frameworkInfo.role(),
createReservationInfo(DEFAULT_CREDENTIAL.principal())).get();
- EXPECT_CALL(allocator, addFramework(_, _, _));
+ EXPECT_CALL(allocator, addFramework(_, _, _, _));
EXPECT_CALL(sched, registered(_, _, _));
@@ -1857,7 +1857,7 @@ TEST_F(PersistentVolumeEndpointsTest, ReserveAndSlaveRemoval)
MesosSchedulerDriver driver(
&sched, frameworkInfo, master.get()->pid, DEFAULT_CREDENTIAL);
- EXPECT_CALL(allocator, addFramework(_, _, _));
+ EXPECT_CALL(allocator, addFramework(_, _, _, _));
EXPECT_CALL(sched, registered(_, _, _));
http://git-wip-us.apache.org/repos/asf/mesos/blob/51dfe768/src/tests/reservation_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/reservation_tests.cpp b/src/tests/reservation_tests.cpp
index dddfbbe..ffbb50b 100644
--- a/src/tests/reservation_tests.cpp
+++ b/src/tests/reservation_tests.cpp
@@ -553,7 +553,7 @@ TEST_F(ReservationTest, DropReserveTooLarge)
EXPECT_CALL(sched, resourceOffers(&driver, _))
.WillOnce(FutureArg<1>(&offers));
- EXPECT_CALL(allocator, addFramework(_, _, _));
+ EXPECT_CALL(allocator, addFramework(_, _, _, _));
driver.start();
@@ -644,7 +644,7 @@ TEST_F(ReservationTest, DropReserveStaticReservation)
EXPECT_CALL(sched, resourceOffers(&driver, _))
.WillOnce(FutureArg<1>(&offers));
- EXPECT_CALL(allocator, addFramework(_, _, _));
+ EXPECT_CALL(allocator, addFramework(_, _, _, _));
driver.start();
@@ -2129,7 +2129,7 @@ TEST_F(ReservationTest, DropReserveWithInvalidRole)
EXPECT_CALL(sched, resourceOffers(&driver, _))
.WillOnce(FutureArg<1>(&offers));
- EXPECT_CALL(allocator, addFramework(_, _, _));
+ EXPECT_CALL(allocator, addFramework(_, _, _, _));
driver.start();
http://git-wip-us.apache.org/repos/asf/mesos/blob/51dfe768/src/tests/resource_offers_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/resource_offers_tests.cpp b/src/tests/resource_offers_tests.cpp
index 3dde7bf..b6c15cb 100644
--- a/src/tests/resource_offers_tests.cpp
+++ b/src/tests/resource_offers_tests.cpp
@@ -299,7 +299,7 @@ TEST_F(ResourceOffersTest, Request)
MesosSchedulerDriver driver(
&sched, DEFAULT_FRAMEWORK_INFO, master.get()->pid, DEFAULT_CREDENTIAL);
- EXPECT_CALL(allocator, addFramework(_, _, _))
+ EXPECT_CALL(allocator, addFramework(_, _, _, _))
.Times(1);
Future<Nothing> registered;
http://git-wip-us.apache.org/repos/asf/mesos/blob/51dfe768/src/tests/slave_recovery_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/slave_recovery_tests.cpp b/src/tests/slave_recovery_tests.cpp
index 324cf59..5b86c06 100644
--- a/src/tests/slave_recovery_tests.cpp
+++ b/src/tests/slave_recovery_tests.cpp
@@ -3148,7 +3148,7 @@ TYPED_TEST(SlaveRecoveryTest, ReconcileTasksMissingFromSlave)
MesosSchedulerDriver driver(
&sched, frameworkInfo, master.get()->pid, DEFAULT_CREDENTIAL);
- EXPECT_CALL(allocator, addFramework(_, _, _));
+ EXPECT_CALL(allocator, addFramework(_, _, _, _));
Future<FrameworkID> frameworkId;
EXPECT_CALL(sched, registered(_, _, _))