You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by al...@apache.org on 2017/06/07 10:02:05 UTC
[1/3] mesos git commit: Made persistent volume endpoints tests
independent from allocator.
Repository: mesos
Updated Branches:
refs/heads/master 79daf9769 -> cae76904a
Made persistent volume endpoints tests independent from allocator.
The tests in the case often require an agent ID. To obtain the ID they
were using a mock allocator to grab agent ID, but not other operations
with the allocator were performed.
Instead we now just capture the SlaveRegisteredMessage in order to
learn an agent's ID.
Review: https://reviews.apache.org/r/58950/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/430998e9
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/430998e9
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/430998e9
Branch: refs/heads/master
Commit: 430998e942d3dd775eaa641f6b91943ef80bf1b3
Parents: 79daf97
Author: Benjamin Bannier <be...@mesosphere.io>
Authored: Wed Jun 7 11:11:21 2017 +0200
Committer: Alexander Rukletsov <al...@apache.org>
Committed: Wed Jun 7 11:11:21 2017 +0200
----------------------------------------------------------------------
src/tests/persistent_volume_endpoints_tests.cpp | 454 ++++++++-----------
1 file changed, 190 insertions(+), 264 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/430998e9/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 8d0a797..1d76433 100644
--- a/src/tests/persistent_volume_endpoints_tests.cpp
+++ b/src/tests/persistent_volume_endpoints_tests.cpp
@@ -36,7 +36,6 @@
#include "master/flags.hpp"
#include "master/master.hpp"
-#include "tests/allocator.hpp"
#include "tests/mesos.hpp"
#include "tests/resources_utils.hpp"
#include "tests/utils.hpp"
@@ -112,25 +111,22 @@ public:
// statically reserved resources, and can then destroy that volume.
TEST_F(PersistentVolumeEndpointsTest, StaticReservation)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
-
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "disk(role1):1024";
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
+
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
Resources volume = createPersistentVolume(
Megabytes(64),
"role1",
@@ -144,7 +140,7 @@ TEST_F(PersistentVolumeEndpointsTest, StaticReservation)
master.get()->pid,
"create-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, createResponse);
@@ -183,7 +179,7 @@ TEST_F(PersistentVolumeEndpointsTest, StaticReservation)
master.get()->pid,
"destroy-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, destroyResponse);
@@ -208,25 +204,22 @@ TEST_F(PersistentVolumeEndpointsTest, StaticReservation)
// dynamically reserved resources, and can then destroy that volume.
TEST_F(PersistentVolumeEndpointsTest, DynamicReservation)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
-
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "disk(*):1024";
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
+
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
FrameworkInfo frameworkInfo = createFrameworkInfo();
Resources unreserved = Resources::parse("disk:1024").get();
@@ -238,7 +231,7 @@ TEST_F(PersistentVolumeEndpointsTest, DynamicReservation)
master.get()->pid,
"reserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "resources", dynamicallyReserved));
+ createRequestBody(slaveId, "resources", dynamicallyReserved));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -287,7 +280,7 @@ TEST_F(PersistentVolumeEndpointsTest, DynamicReservation)
master.get()->pid,
"create-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -312,7 +305,7 @@ TEST_F(PersistentVolumeEndpointsTest, DynamicReservation)
master.get()->pid,
"destroy-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -330,25 +323,22 @@ TEST_F(PersistentVolumeEndpointsTest, DynamicReservation)
// the slave have been reserved by a different role.
TEST_F(PersistentVolumeEndpointsTest, DynamicReservationRoleMismatch)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
-
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "disk(*):1024";
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
+
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
FrameworkInfo frameworkInfo = createFrameworkInfo();
Resources unreserved = Resources::parse("disk:1024").get();
@@ -360,7 +350,7 @@ TEST_F(PersistentVolumeEndpointsTest, DynamicReservationRoleMismatch)
master.get()->pid,
"reserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "resources", dynamicallyReserved));
+ createRequestBody(slaveId, "resources", dynamicallyReserved));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -399,7 +389,7 @@ TEST_F(PersistentVolumeEndpointsTest, DynamicReservationRoleMismatch)
master.get()->pid,
"create-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Conflict().status, response);
@@ -412,25 +402,22 @@ TEST_F(PersistentVolumeEndpointsTest, DynamicReservationRoleMismatch)
// persistent volume results in a 'Conflict' HTTP error.
TEST_F(PersistentVolumeEndpointsTest, UnreserveVolumeResources)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
-
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "disk(*):1024";
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
+
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
FrameworkInfo frameworkInfo = createFrameworkInfo();
Resources unreserved = Resources::parse("disk:1024").get();
@@ -442,7 +429,7 @@ TEST_F(PersistentVolumeEndpointsTest, UnreserveVolumeResources)
master.get()->pid,
"reserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "resources", dynamicallyReserved));
+ createRequestBody(slaveId, "resources", dynamicallyReserved));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -459,7 +446,7 @@ TEST_F(PersistentVolumeEndpointsTest, UnreserveVolumeResources)
master.get()->pid,
"create-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -467,7 +454,7 @@ TEST_F(PersistentVolumeEndpointsTest, UnreserveVolumeResources)
master.get()->pid,
"unreserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "resources", dynamicallyReserved));
+ createRequestBody(slaveId, "resources", dynamicallyReserved));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Conflict().status, response);
}
@@ -477,25 +464,21 @@ TEST_F(PersistentVolumeEndpointsTest, UnreserveVolumeResources)
// invalid resource will receive a Bad Request response.
TEST_F(PersistentVolumeEndpointsTest, InvalidVolume)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
-
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "disk(role1):1024";
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
+
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
- AWAIT_READY(slaveId);
+
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
// This volume has role "*", which is not allowed.
Try<Resource> disk = Resources::parse("disk", "64", "*");
@@ -512,7 +495,7 @@ TEST_F(PersistentVolumeEndpointsTest, InvalidVolume)
// function `createRequestBody` accepts `Resources`.
string body = strings::format(
"slaveId=%s&volumes=[%s]",
- slaveId->value(),
+ slaveId.value(),
JSON::protobuf(volume)).get();
{
@@ -545,25 +528,22 @@ TEST_F(PersistentVolumeEndpointsTest, InvalidVolume)
// reserved resources at the slave results in a 'Conflict' HTTP error.
TEST_F(PersistentVolumeEndpointsTest, VolumeExceedsReservedSize)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
-
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "disk(role1):1024";
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
+
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
Resources volume = createPersistentVolume(
Megabytes(1025),
"role1",
@@ -577,7 +557,7 @@ TEST_F(PersistentVolumeEndpointsTest, VolumeExceedsReservedSize)
master.get()->pid,
"create-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Conflict().status, createResponse);
}
@@ -587,25 +567,22 @@ TEST_F(PersistentVolumeEndpointsTest, VolumeExceedsReservedSize)
// volume results in a 'BadRequest' HTTP error.
TEST_F(PersistentVolumeEndpointsTest, DeleteNonExistentVolume)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
-
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "disk(role1):1024";
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
+
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
Resources volume = createPersistentVolume(
Megabytes(64),
"role1",
@@ -619,7 +596,7 @@ TEST_F(PersistentVolumeEndpointsTest, DeleteNonExistentVolume)
master.get()->pid,
"create-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, createResponse);
@@ -637,7 +614,7 @@ TEST_F(PersistentVolumeEndpointsTest, DeleteNonExistentVolume)
master.get()->pid,
"destroy-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "volumes", badVolumeId));
+ createRequestBody(slaveId, "volumes", badVolumeId));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(BadRequest().status, destroyResponse);
@@ -655,7 +632,7 @@ TEST_F(PersistentVolumeEndpointsTest, DeleteNonExistentVolume)
master.get()->pid,
"destroy-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "volumes", badRole));
+ createRequestBody(slaveId, "volumes", badRole));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(BadRequest().status, destroyResponse);
@@ -673,7 +650,7 @@ TEST_F(PersistentVolumeEndpointsTest, DeleteNonExistentVolume)
master.get()->pid,
"destroy-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "volumes", badSize));
+ createRequestBody(slaveId, "volumes", badSize));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(BadRequest().status, destroyResponse);
@@ -693,7 +670,7 @@ TEST_F(PersistentVolumeEndpointsTest, DeleteNonExistentVolume)
master.get()->pid,
"destroy-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "volumes", differentPath));
+ createRequestBody(slaveId, "volumes", differentPath));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, destroyResponse);
}
@@ -703,25 +680,22 @@ TEST_F(PersistentVolumeEndpointsTest, DeleteNonExistentVolume)
// authorization header results in an 'Unauthorized' HTTP error.
TEST_F(PersistentVolumeEndpointsTest, NoHeader)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
-
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "disk(role1):1024";
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
+
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
FrameworkInfo frameworkInfo = createFrameworkInfo();
Resources volume = createPersistentVolume(
@@ -737,7 +711,7 @@ TEST_F(PersistentVolumeEndpointsTest, NoHeader)
master.get()->pid,
"create-volumes",
None(),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(
Unauthorized({}).status,
@@ -747,7 +721,7 @@ TEST_F(PersistentVolumeEndpointsTest, NoHeader)
master.get()->pid,
"destroy-volumes",
None(),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(
Unauthorized({}).status,
@@ -759,25 +733,22 @@ TEST_F(PersistentVolumeEndpointsTest, NoHeader)
// credentials results in an 'Unauthorized' HTTP error.
TEST_F(PersistentVolumeEndpointsTest, BadCredentials)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
-
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "disk(role1):1024";
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
+
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
Credential credential;
credential.set_principal("bad-principal");
credential.set_secret("bad-secret");
@@ -792,7 +763,7 @@ TEST_F(PersistentVolumeEndpointsTest, BadCredentials)
DEFAULT_CREDENTIAL.principal());
process::http::Headers headers = createBasicAuthHeaders(credential);
- string body = createRequestBody(slaveId.get(), "volumes", volume);
+ string body = createRequestBody(slaveId, "volumes", volume);
Future<Response> response =
process::http::post(master.get()->pid, "create-volumes", headers, body);
@@ -817,7 +788,6 @@ TEST_F(PersistentVolumeEndpointsTest, GoodCreateAndDestroyACL)
// Pause the clock to gain control over the offer cycle.
Clock::pause();
- TestAllocator<> allocator;
ACLs acls;
// This ACL asserts that the principal of `DEFAULT_CREDENTIAL`
@@ -837,9 +807,7 @@ TEST_F(PersistentVolumeEndpointsTest, GoodCreateAndDestroyACL)
master::Flags masterFlags = CreateMasterFlags();
masterFlags.acls = acls;
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator, masterFlags);
+ Try<Owned<cluster::Master>> master = StartMaster(masterFlags);
ASSERT_SOME(master);
// Create a slave. Disk resources are statically reserved to allow the
@@ -847,17 +815,19 @@ TEST_F(PersistentVolumeEndpointsTest, GoodCreateAndDestroyACL)
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "cpus:1;mem:512;disk(role1):1024";
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator), FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
- // Advance clock to trigger agent registration befor we HTTP POST.
+ // Advance clock to trigger agent registration before we HTTP POST.
Clock::advance(slaveFlags.registration_backoff_factor);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
process::http::Headers headers = createBasicAuthHeaders(DEFAULT_CREDENTIAL);
Resources volume = createPersistentVolume(
@@ -873,7 +843,7 @@ TEST_F(PersistentVolumeEndpointsTest, GoodCreateAndDestroyACL)
master.get()->pid,
"create-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, createResponse);
@@ -915,7 +885,7 @@ TEST_F(PersistentVolumeEndpointsTest, GoodCreateAndDestroyACL)
master.get()->pid,
"destroy-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, destroyResponse);
@@ -947,7 +917,6 @@ TEST_F(PersistentVolumeEndpointsTest, GoodCreateACLMultipleRoles)
const string AUTHORIZED_ROLE_1 = "potato_head";
const string AUTHORIZED_ROLE_2 = "gumby";
- TestAllocator<> allocator;
ACLs acls;
// This ACL asserts that the principal of `DEFAULT_CREDENTIAL`
@@ -960,9 +929,7 @@ TEST_F(PersistentVolumeEndpointsTest, GoodCreateACLMultipleRoles)
master::Flags masterFlags = CreateMasterFlags();
masterFlags.acls = acls;
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator, masterFlags);
+ Try<Owned<cluster::Master>> master = StartMaster(masterFlags);
ASSERT_SOME(master);
// Create a slave. Disk resources are statically reserved to allow the
@@ -972,14 +939,16 @@ TEST_F(PersistentVolumeEndpointsTest, GoodCreateACLMultipleRoles)
"cpus:1;mem:512;disk(" + AUTHORIZED_ROLE_1 + "):1024;disk(" +
AUTHORIZED_ROLE_2 + "):1024";
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator), FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
Resources volume1 = createPersistentVolume(
Megabytes(64),
AUTHORIZED_ROLE_1,
@@ -1004,7 +973,7 @@ TEST_F(PersistentVolumeEndpointsTest, GoodCreateACLMultipleRoles)
master.get()->pid,
"create-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "volumes", volumesMultipleRoles));
+ createRequestBody(slaveId, "volumes", volumesMultipleRoles));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
}
@@ -1017,7 +986,6 @@ TEST_F(PersistentVolumeEndpointsTest, BadCreateAndDestroyACL)
// Pause the clock to gain control over the offer cycle.
Clock::pause();
- TestAllocator<> allocator;
ACLs acls;
// This ACL asserts that the principal of `DEFAULT_CREDENTIAL_2`
@@ -1045,9 +1013,7 @@ TEST_F(PersistentVolumeEndpointsTest, BadCreateAndDestroyACL)
master::Flags masterFlags = CreateMasterFlags();
masterFlags.acls = acls;
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator, masterFlags);
+ Try<Owned<cluster::Master>> master = StartMaster(masterFlags);
ASSERT_SOME(master);
// Create a slave. Disk resources are statically reserved to allow the
@@ -1055,18 +1021,19 @@ TEST_F(PersistentVolumeEndpointsTest, BadCreateAndDestroyACL)
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "cpus:1;mem:512;disk(role1):1024";
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
- // Advance clock to trigger agent registration befor we HTTP POST.
+ // Advance clock to trigger agent registration before we HTTP POST.
Clock::advance(slaveFlags.registration_backoff_factor);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
// The failed creation attempt.
{
Resources volume = createPersistentVolume(
@@ -1082,7 +1049,7 @@ TEST_F(PersistentVolumeEndpointsTest, BadCreateAndDestroyACL)
master.get()->pid,
"create-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL_2),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Forbidden().status, response);
}
@@ -1102,7 +1069,7 @@ TEST_F(PersistentVolumeEndpointsTest, BadCreateAndDestroyACL)
master.get()->pid,
"create-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
}
@@ -1138,7 +1105,7 @@ TEST_F(PersistentVolumeEndpointsTest, BadCreateAndDestroyACL)
master.get()->pid,
"destroy-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL_2),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Forbidden().status, destroyResponse);
@@ -1155,7 +1122,6 @@ TEST_F(PersistentVolumeEndpointsTest, BadCreateACLMultipleRoles)
const string AUTHORIZED_ROLE = "potato_head";
const string UNAUTHORIZED_ROLE = "gumby";
- TestAllocator<> allocator;
ACLs acls;
// This ACL asserts that the principal of `DEFAULT_CREDENTIAL`
@@ -1174,9 +1140,7 @@ TEST_F(PersistentVolumeEndpointsTest, BadCreateACLMultipleRoles)
master::Flags masterFlags = CreateMasterFlags();
masterFlags.acls = acls;
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator, masterFlags);
+ Try<Owned<cluster::Master>> master = StartMaster(masterFlags);
ASSERT_SOME(master);
// Create a slave. Disk resources are statically reserved to allow the
@@ -1186,14 +1150,16 @@ TEST_F(PersistentVolumeEndpointsTest, BadCreateACLMultipleRoles)
"cpus:1;mem:512;disk(" + AUTHORIZED_ROLE + "):1024;disk(" +
UNAUTHORIZED_ROLE + "):1024";
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator), FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
Resources volume1 = createPersistentVolume(
Megabytes(64),
AUTHORIZED_ROLE,
@@ -1218,7 +1184,7 @@ TEST_F(PersistentVolumeEndpointsTest, BadCreateACLMultipleRoles)
master.get()->pid,
"create-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "volumes", volumesMultipleRoles));
+ createRequestBody(slaveId, "volumes", volumesMultipleRoles));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Forbidden().status, response);
}
@@ -1238,7 +1204,6 @@ TEST_F(PersistentVolumeEndpointsTest, GoodCreateAndDestroyACLBadCredential)
failedCredential.set_principal("awesome-principal");
failedCredential.set_secret("super-secret-secret");
- TestAllocator<> allocator;
ACLs acls;
// This ACL asserts that the principal of `failedCredential`
@@ -1264,9 +1229,7 @@ TEST_F(PersistentVolumeEndpointsTest, GoodCreateAndDestroyACLBadCredential)
master::Flags masterFlags = CreateMasterFlags();
masterFlags.acls = acls;
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator, masterFlags);
+ Try<Owned<cluster::Master>> master = StartMaster(masterFlags);
ASSERT_SOME(master);
// Create a slave. Disk resources are statically reserved to allow the
@@ -1274,18 +1237,19 @@ TEST_F(PersistentVolumeEndpointsTest, GoodCreateAndDestroyACLBadCredential)
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "cpus:1;mem:512;disk(role1):1024";
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
- // Advance clock to trigger agent registration befor we HTTP POST.
+ // Advance clock to trigger agent registration before we HTTP POST.
Clock::advance(slaveFlags.registration_backoff_factor);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
Resources volume = createPersistentVolume(
Megabytes(64),
"role1",
@@ -1300,7 +1264,7 @@ TEST_F(PersistentVolumeEndpointsTest, GoodCreateAndDestroyACLBadCredential)
master.get()->pid,
"create-volumes",
createBasicAuthHeaders(failedCredential),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(
Unauthorized({}).status,
@@ -1311,7 +1275,7 @@ TEST_F(PersistentVolumeEndpointsTest, GoodCreateAndDestroyACLBadCredential)
master.get()->pid,
"create-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, createResponse);
@@ -1346,7 +1310,7 @@ TEST_F(PersistentVolumeEndpointsTest, GoodCreateAndDestroyACLBadCredential)
master.get()->pid,
"destroy-volumes",
createBasicAuthHeaders(failedCredential),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(
Unauthorized({}).status,
@@ -1366,15 +1330,11 @@ TEST_F(PersistentVolumeEndpointsTest, NoAuthentication)
{
const string TEST_ROLE = "role1";
- TestAllocator<> allocator;
-
// Create master flags that will disable authentication.
master::Flags masterFlags = CreateMasterFlags();
masterFlags.authenticate_http_readwrite = false;
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator, masterFlags);
+ Try<Owned<cluster::Master>> master = StartMaster(masterFlags);
ASSERT_SOME(master);
// Create an agent with statically reserved disk resources to allow the
@@ -1382,15 +1342,15 @@ TEST_F(PersistentVolumeEndpointsTest, NoAuthentication)
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "cpus:1;mem:512;disk(" + TEST_ROLE + "):1024";
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator), FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
- AWAIT_READY(slaveId);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
Resources volume = createPersistentVolume(
Megabytes(64),
@@ -1407,7 +1367,7 @@ TEST_F(PersistentVolumeEndpointsTest, NoAuthentication)
master.get()->pid,
"create-volumes",
None(),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
}
@@ -1418,7 +1378,7 @@ TEST_F(PersistentVolumeEndpointsTest, NoAuthentication)
master.get()->pid,
"destroy-volumes",
None(),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
}
@@ -1429,25 +1389,22 @@ TEST_F(PersistentVolumeEndpointsTest, NoAuthentication)
// 'slaveId' results in a 'BadRequest' HTTP error.
TEST_F(PersistentVolumeEndpointsTest, NoSlaveId)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "disk(role1):1024";
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
Resources volume = createPersistentVolume(
Megabytes(64),
"role1",
@@ -1473,7 +1430,7 @@ TEST_F(PersistentVolumeEndpointsTest, NoSlaveId)
master.get()->pid,
"create-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -1488,17 +1445,11 @@ TEST_F(PersistentVolumeEndpointsTest, NoSlaveId)
// the 'volumes' parameter results in a 'BadRequest' HTTP error.
TEST_F(PersistentVolumeEndpointsTest, NoVolumes)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "disk(role1):1024";
@@ -1507,8 +1458,11 @@ TEST_F(PersistentVolumeEndpointsTest, NoVolumes)
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
process::http::Headers headers = createBasicAuthHeaders(DEFAULT_CREDENTIAL);
- string body = "slaveId=" + slaveId->value();
+ string body = "slaveId=" + slaveId.value();
Future<Response> response =
process::http::post(master.get()->pid, "create-volumes", headers, body);
@@ -1529,7 +1483,7 @@ TEST_F(PersistentVolumeEndpointsTest, NoVolumes)
master.get()->pid,
"create-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -1545,25 +1499,22 @@ TEST_F(PersistentVolumeEndpointsTest, NoVolumes)
// using the HTTP endpoints.
TEST_F(PersistentVolumeEndpointsTest, OfferCreateThenEndpointRemove)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
-
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "disk(*):1024";
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
+
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
FrameworkInfo frameworkInfo = createFrameworkInfo();
MockScheduler sched;
@@ -1576,8 +1527,6 @@ TEST_F(PersistentVolumeEndpointsTest, OfferCreateThenEndpointRemove)
frameworkInfo.role(),
createReservationInfo(DEFAULT_CREDENTIAL.principal())).get();
- EXPECT_CALL(allocator, addFramework(_, _, _, _, _));
-
EXPECT_CALL(sched, registered(_, _, _));
Future<vector<Offer>> offers;
@@ -1592,7 +1541,7 @@ TEST_F(PersistentVolumeEndpointsTest, OfferCreateThenEndpointRemove)
ASSERT_EQ(1u, offers->size());
Offer offer = offers.get()[0];
- EXPECT_EQ(offer.slave_id(), slaveId.get());
+ EXPECT_EQ(offer.slave_id(), slaveId);
// We use the filter explicitly here so that the resources will not
// be filtered for 5 seconds (the default).
@@ -1652,7 +1601,7 @@ TEST_F(PersistentVolumeEndpointsTest, OfferCreateThenEndpointRemove)
master.get()->pid,
"destroy-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, destroyResponse);
@@ -1679,7 +1628,7 @@ TEST_F(PersistentVolumeEndpointsTest, OfferCreateThenEndpointRemove)
master.get()->pid,
"unreserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "resources", dynamicallyReserved));
+ createRequestBody(slaveId, "resources", dynamicallyReserved));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, unreserveResponse);
@@ -1705,25 +1654,22 @@ TEST_F(PersistentVolumeEndpointsTest, OfferCreateThenEndpointRemove)
// offer cycle.
TEST_F(PersistentVolumeEndpointsTest, EndpointCreateThenOfferRemove)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
-
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "disk(*):1024";
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
+
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
FrameworkInfo frameworkInfo = createFrameworkInfo();
// Make a dynamic reservation for 512MB of disk.
@@ -1736,7 +1682,7 @@ TEST_F(PersistentVolumeEndpointsTest, EndpointCreateThenOfferRemove)
master.get()->pid,
"reserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "resources", dynamicallyReserved));
+ createRequestBody(slaveId, "resources", dynamicallyReserved));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -1754,7 +1700,7 @@ TEST_F(PersistentVolumeEndpointsTest, EndpointCreateThenOfferRemove)
master.get()->pid,
"create-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -1827,31 +1773,24 @@ TEST_F(PersistentVolumeEndpointsTest, EndpointCreateThenOfferRemove)
// correctly. See MESOS-5698 for context.
TEST_F(PersistentVolumeEndpointsTest, ReserveAndSlaveRemoval)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
Owned<MasterDetector> detector = master.get()->createDetector();
- Future<SlaveID> slave1Id;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slave1Id)));
+ Future<SlaveRegisteredMessage> slave1RegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
slave::Flags slave1Flags = CreateSlaveFlags();
slave1Flags.resources = "cpus:4";
Try<Owned<cluster::Slave>> slave1 = StartSlave(detector.get(), slave1Flags);
ASSERT_SOME(slave1);
- AWAIT_READY(slave1Id);
+ AWAIT_READY(slave1RegisteredMessage);
+ const SlaveID& slaveId1 = slave1RegisteredMessage->slave_id();
- Future<SlaveID> slave2Id;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slave2Id)));
+ Future<SlaveRegisteredMessage> slave2RegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
// Each slave needs its own flags to ensure work_dirs are unique.
slave::Flags slave2Flags = CreateSlaveFlags();
@@ -1859,7 +1798,8 @@ TEST_F(PersistentVolumeEndpointsTest, ReserveAndSlaveRemoval)
Try<Owned<cluster::Slave>> slave2 = StartSlave(detector.get(), slave2Flags);
ASSERT_SOME(slave2);
- AWAIT_READY(slave2Id);
+ AWAIT_READY(slave2RegisteredMessage);
+ const SlaveID& slaveId2 = slave2RegisteredMessage->slave_id();
FrameworkInfo frameworkInfo = createFrameworkInfo();
@@ -1873,7 +1813,7 @@ TEST_F(PersistentVolumeEndpointsTest, ReserveAndSlaveRemoval)
master.get()->pid,
"reserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slave1Id.get(), "resources", slave1Reserved));
+ createRequestBody(slaveId1, "resources", slave1Reserved));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -1881,8 +1821,6 @@ TEST_F(PersistentVolumeEndpointsTest, ReserveAndSlaveRemoval)
MesosSchedulerDriver driver(
&sched, frameworkInfo, master.get()->pid, DEFAULT_CREDENTIAL);
- EXPECT_CALL(allocator, addFramework(_, _, _, _, _));
-
EXPECT_CALL(sched, registered(_, _, _));
Future<vector<Offer>> offers;
@@ -1912,10 +1850,10 @@ TEST_F(PersistentVolumeEndpointsTest, ReserveAndSlaveRemoval)
const Offer& offer = offers.get()[i];
const SlaveID& offeredSlaveId = offer.slave_id();
- ASSERT_TRUE(offeredSlaveId == slave1Id.get() ||
- offeredSlaveId == slave2Id.get());
+ ASSERT_TRUE(offeredSlaveId == slaveId1 ||
+ offeredSlaveId == slaveId2);
- if (offeredSlaveId == slave2Id.get()) {
+ if (offeredSlaveId == slaveId2) {
driver.acceptOffers({offer.id()}, {RESERVE(slave2Reserved)});
break;
}
@@ -1926,11 +1864,6 @@ TEST_F(PersistentVolumeEndpointsTest, ReserveAndSlaveRemoval)
slave2Reserved);
// Shutdown `slave2` with an explicit shutdown message.
- Future<Nothing> removeSlave;
- EXPECT_CALL(allocator, removeSlave(_))
- .WillOnce(DoAll(InvokeRemoveSlave(&allocator),
- FutureSatisfy(&removeSlave)));
-
EXPECT_CALL(sched, offerRescinded(_, _));
Future<Nothing> slaveLost;
@@ -1939,22 +1872,18 @@ TEST_F(PersistentVolumeEndpointsTest, ReserveAndSlaveRemoval)
slave2.get()->shutdown();
- AWAIT_READY(removeSlave);
-
AWAIT_READY(slaveLost);
response = process::http::post(
master.get()->pid,
"unreserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slave1Id.get(), "resources", slave1Reserved));
+ createRequestBody(slaveId1, "resources", slave1Reserved));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
driver.stop();
driver.join();
-
- EXPECT_CALL(allocator, removeSlave(_));
}
@@ -1962,25 +1891,22 @@ TEST_F(PersistentVolumeEndpointsTest, ReserveAndSlaveRemoval)
// volumes are reflected in the "/slaves" master endpoint.
TEST_F(PersistentVolumeEndpointsTest, SlavesEndpointFullResources)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
-
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "cpus:4;gpus:0;mem:2048;disk:4096";
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
+
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
FrameworkInfo frameworkInfo = createFrameworkInfo();
Resources unreserved = Resources::parse("cpus:1;mem:512;disk:1024").get();
@@ -1992,7 +1918,7 @@ TEST_F(PersistentVolumeEndpointsTest, SlavesEndpointFullResources)
master.get()->pid,
"reserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "resources", dynamicallyReserved));
+ createRequestBody(slaveId, "resources", dynamicallyReserved));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -2009,7 +1935,7 @@ TEST_F(PersistentVolumeEndpointsTest, SlavesEndpointFullResources)
master.get()->pid,
"create-volumes",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), "volumes", volume));
+ createRequestBody(slaveId, "volumes", volume));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
[2/3] mesos git commit: Made reservation endpoints tests independent
from allocator.
Posted by al...@apache.org.
Made reservation endpoints tests independent from allocator.
The tests in the case often require an agent ID. To obtain the ID they
were using a mock allocator to grab agent ID, but not other operations
with the allocator were performed.
Instead we now just capture the SlaveRegisteredMessage in order to
learn an agent's ID.
Review: https://reviews.apache.org/r/58951/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/9ef28fe7
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/9ef28fe7
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/9ef28fe7
Branch: refs/heads/master
Commit: 9ef28fe706b8df74434aac807d4b2c101c15f675
Parents: 430998e
Author: Benjamin Bannier <be...@mesosphere.io>
Authored: Wed Jun 7 11:11:36 2017 +0200
Committer: Alexander Rukletsov <al...@apache.org>
Committed: Wed Jun 7 11:11:36 2017 +0200
----------------------------------------------------------------------
src/tests/reservation_endpoints_tests.cpp | 460 ++++++++++---------------
1 file changed, 178 insertions(+), 282 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/9ef28fe7/src/tests/reservation_endpoints_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/reservation_endpoints_tests.cpp b/src/tests/reservation_endpoints_tests.cpp
index 505c542..62fc60e 100644
--- a/src/tests/reservation_endpoints_tests.cpp
+++ b/src/tests/reservation_endpoints_tests.cpp
@@ -106,22 +106,19 @@ public:
// This tests that an operator can reserve/unreserve available resources.
TEST_F(ReservationEndpointsTest, AvailableResources)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get());
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
FrameworkInfo frameworkInfo = createFrameworkInfo();
Resources unreserved = Resources::parse("cpus:1;mem:512").get();
@@ -133,7 +130,7 @@ TEST_F(ReservationEndpointsTest, AvailableResources)
master.get()->pid,
"reserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), dynamicallyReserved));
+ createRequestBody(slaveId, dynamicallyReserved));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -158,11 +155,6 @@ TEST_F(ReservationEndpointsTest, AvailableResources)
EXPECT_TRUE(Resources(offer.resources()).contains(
allocatedResources(dynamicallyReserved, frameworkInfo.role())));
- Future<Nothing> recoverResources;
- EXPECT_CALL(allocator, recoverResources(_, _, _, _))
- .WillOnce(DoAll(InvokeRecoverResources(&allocator),
- FutureSatisfy(&recoverResources)));
-
// The filter to decline the offer "forever".
Filters filtersForever;
filtersForever.set_refuse_seconds(1000);
@@ -170,8 +162,6 @@ TEST_F(ReservationEndpointsTest, AvailableResources)
// Decline the offer "forever" in order to deallocate resources.
driver.declineOffer(offer.id(), filtersForever);
- AWAIT_READY(recoverResources);
-
EXPECT_CALL(sched, resourceOffers(&driver, _))
.WillOnce(FutureArg<1>(&offers));
@@ -179,7 +169,7 @@ TEST_F(ReservationEndpointsTest, AvailableResources)
master.get()->pid,
"unreserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), dynamicallyReserved));
+ createRequestBody(slaveId, dynamicallyReserved));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -191,11 +181,6 @@ TEST_F(ReservationEndpointsTest, AvailableResources)
EXPECT_TRUE(Resources(offer.resources()).contains(
allocatedResources(unreserved, frameworkInfo.role())));
- // Ignore subsequent `recoverResources` calls triggered from recovering the
- // resources that this framework is currently holding onto.
- EXPECT_CALL(allocator, recoverResources(_, _, _, _))
- .WillRepeatedly(DoDefault());
-
driver.stop();
driver.join();
}
@@ -205,22 +190,19 @@ TEST_F(ReservationEndpointsTest, AvailableResources)
// outstanding offers.
TEST_F(ReservationEndpointsTest, ReserveOfferedResources)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get());
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
FrameworkInfo frameworkInfo = createFrameworkInfo();
Resources unreserved = Resources::parse("cpus:1;mem:512").get();
@@ -259,7 +241,7 @@ TEST_F(ReservationEndpointsTest, ReserveOfferedResources)
master.get()->pid,
"reserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), dynamicallyReserved));
+ createRequestBody(slaveId, dynamicallyReserved));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -280,22 +262,19 @@ TEST_F(ReservationEndpointsTest, ReserveOfferedResources)
// outstanding offers.
TEST_F(ReservationEndpointsTest, UnreserveOfferedResources)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get());
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
FrameworkInfo frameworkInfo = createFrameworkInfo();
Resources unreserved = Resources::parse("cpus:1;mem:512").get();
@@ -307,7 +286,7 @@ TEST_F(ReservationEndpointsTest, UnreserveOfferedResources)
master.get()->pid,
"reserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), dynamicallyReserved));
+ createRequestBody(slaveId, dynamicallyReserved));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -342,7 +321,7 @@ TEST_F(ReservationEndpointsTest, UnreserveOfferedResources)
master.get()->pid,
"unreserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), dynamicallyReserved));
+ createRequestBody(slaveId, dynamicallyReserved));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -363,26 +342,23 @@ TEST_F(ReservationEndpointsTest, UnreserveOfferedResources)
// resources by rescinding the outstanding offers.
TEST_F(ReservationEndpointsTest, ReserveAvailableAndOfferedResources)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
master::Flags masterFlags = CreateMasterFlags();
// Turn off allocation. We're doing it manually.
masterFlags.allocation_interval = Seconds(1000);
- Try<Owned<cluster::Master>> master = StartMaster(&allocator, masterFlags);
+ Try<Owned<cluster::Master>> master = StartMaster(masterFlags);
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get());
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
FrameworkInfo frameworkInfo = createFrameworkInfo();
Resources available = Resources::parse("cpus:1;mem:128").get();
@@ -432,20 +408,15 @@ TEST_F(ReservationEndpointsTest, ReserveAvailableAndOfferedResources)
Future<Nothing> _statusUpdateAcknowledgement =
FUTURE_DISPATCH(_, &Slave::_statusUpdateAcknowledgement);
- Future<Nothing> recoverUnusedResources;
- EXPECT_CALL(allocator, recoverResources(_, _, _, _))
- .WillOnce(DoAll(InvokeRecoverResources(&allocator),
- FutureSatisfy(&recoverUnusedResources)));
-
driver.acceptOffers({offer.id()}, {LAUNCH({taskInfo})});
- // Wait for TASK_RUNNING update ack and for the resources to be recovered.
+ // Wait for TASK_RUNNING update ack.
AWAIT_READY(_statusUpdateAcknowledgement);
- AWAIT_READY(recoverUnusedResources);
// Summon an offer to receive the 'offered' resources.
EXPECT_CALL(sched, resourceOffers(&driver, _))
- .WillOnce(FutureArg<1>(&offers));
+ .WillOnce(FutureArg<1>(&offers))
+ .WillRepeatedly(Return()); // Ignore subsequent offers.
driver.reviveOffers();
@@ -458,34 +429,28 @@ TEST_F(ReservationEndpointsTest, ReserveAvailableAndOfferedResources)
allocatedResources(offered, frameworkInfo.role())));
// Kill the task running on 'available' resources to make it available.
- EXPECT_CALL(sched, statusUpdate(_, _));
-
- // Wait for the used resources to be recovered.
- Future<Resources> availableResources;
- EXPECT_CALL(allocator, recoverResources(_, _, _, _))
- .WillOnce(DoAll(InvokeRecoverResources(&allocator),
- FutureArg<2>(&availableResources)));
+ Future<TaskStatus> statusUpdate;
+ EXPECT_CALL(sched, statusUpdate(_, _))
+ .WillOnce(FutureArg<1>(&statusUpdate));
// Send a KillTask message to the master.
driver.killTask(taskInfo.task_id());
- AWAIT_READY(availableResources);
- EXPECT_TRUE(availableResources->contains(
- allocatedResources(available, frameworkInfo.role())));
+ AWAIT_READY(statusUpdate);
+ ASSERT_EQ(TaskState::TASK_KILLED, statusUpdate->state());
// At this point, we have 'available' resources in the allocator, and
// 'offered' resources offered to the framework.
- // Expect an offer to be rescinded and recovered!
- EXPECT_CALL(sched, offerRescinded(_, _));
- EXPECT_CALL(allocator, recoverResources(_, _, _, _))
- .WillOnce(DoDefault());
+ // Expect offers to be rescinded and recovered!
+ EXPECT_CALL(sched, offerRescinded(_, _))
+ .WillRepeatedly(Return());
Future<Response> response = process::http::post(
master.get()->pid,
"reserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), dynamicallyReserved));
+ createRequestBody(slaveId, dynamicallyReserved));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -503,11 +468,6 @@ TEST_F(ReservationEndpointsTest, ReserveAvailableAndOfferedResources)
EXPECT_TRUE(Resources(offer.resources()).contains(
allocatedResources(dynamicallyReserved, frameworkInfo.role())));
- // Ignore subsequent `recoverResources` calls triggered from recovering the
- // resources that this framework is currently holding onto.
- EXPECT_CALL(allocator, recoverResources(_, _, _, _))
- .WillRepeatedly(DoDefault());
-
driver.stop();
driver.join();
}
@@ -517,26 +477,23 @@ TEST_F(ReservationEndpointsTest, ReserveAvailableAndOfferedResources)
// resources by rescinding the outstanding offers.
TEST_F(ReservationEndpointsTest, UnreserveAvailableAndOfferedResources)
{
- TestAllocator<> allocator;
-
master::Flags masterFlags = CreateMasterFlags();
// Turn off allocation. We're doing it manually.
masterFlags.allocation_interval = Seconds(1000);
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator, masterFlags);
+ Try<Owned<cluster::Master>> master = StartMaster(masterFlags);
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get());
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
FrameworkInfo frameworkInfo = createFrameworkInfo();
Resources available = Resources::parse("cpus:1;mem:128").get();
@@ -556,7 +513,7 @@ TEST_F(ReservationEndpointsTest, UnreserveAvailableAndOfferedResources)
master.get()->pid,
"reserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), total));
+ createRequestBody(slaveId, total));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -568,7 +525,8 @@ TEST_F(ReservationEndpointsTest, UnreserveAvailableAndOfferedResources)
Future<vector<Offer>> offers;
EXPECT_CALL(sched, resourceOffers(&driver, _))
- .WillOnce(FutureArg<1>(&offers));
+ .WillOnce(FutureArg<1>(&offers))
+ .WillRepeatedly(Return()); // Ignore subsequent offers.
driver.start();
@@ -599,16 +557,10 @@ TEST_F(ReservationEndpointsTest, UnreserveAvailableAndOfferedResources)
Future<Nothing> _statusUpdateAcknowledgement =
FUTURE_DISPATCH(_, &Slave::_statusUpdateAcknowledgement);
- Future<Nothing> recoverUnusedResources;
- EXPECT_CALL(allocator, recoverResources(_, _, _, _))
- .WillOnce(DoAll(InvokeRecoverResources(&allocator),
- FutureSatisfy(&recoverUnusedResources)));
-
driver.acceptOffers({offer.id()}, {LAUNCH({taskInfo})});
- // Wait for TASK_RUNNING update ack and for the resources to be recovered.
+ // Wait for TASK_RUNNING update ack.
AWAIT_READY(_statusUpdateAcknowledgement);
- AWAIT_READY(recoverUnusedResources);
// Summon an offer to receive the 'offered' resources.
EXPECT_CALL(sched, resourceOffers(&driver, _))
@@ -625,34 +577,28 @@ TEST_F(ReservationEndpointsTest, UnreserveAvailableAndOfferedResources)
allocatedResources(offered, frameworkInfo.role())));
// Kill the task running on 'available' resources to make it available.
- EXPECT_CALL(sched, statusUpdate(_, _));
-
- // Wait for the used resources to be recovered.
- Future<Resources> availableResources;
- EXPECT_CALL(allocator, recoverResources(_, _, _, _))
- .WillOnce(DoAll(InvokeRecoverResources(&allocator),
- FutureArg<2>(&availableResources)));
+ Future<TaskStatus> statusUpdate;
+ EXPECT_CALL(sched, statusUpdate(_, _))
+ .WillOnce(FutureArg<1>(&statusUpdate));
// Send a KillTask message to the master.
driver.killTask(taskInfo.task_id());
- AWAIT_READY(availableResources);
- EXPECT_TRUE(availableResources->contains(
- allocatedResources(available, frameworkInfo.role())));
+ AWAIT_READY(statusUpdate);
+ ASSERT_EQ(TaskState::TASK_KILLED, statusUpdate->state());
// At this point, we have 'available' resources in the allocator, and
// 'offered' resources offered to the framework.
- // Expect an offer to be rescinded and recovered!
- EXPECT_CALL(sched, offerRescinded(_, _));
- EXPECT_CALL(allocator, recoverResources(_, _, _, _))
- .WillOnce(DoDefault());
+ // Expect offers to be rescinded and recovered!
+ EXPECT_CALL(sched, offerRescinded(_, _))
+ .WillRepeatedly(Return());
response = process::http::post(
master.get()->pid,
"unreserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), total));
+ createRequestBody(slaveId, total));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -670,11 +616,6 @@ TEST_F(ReservationEndpointsTest, UnreserveAvailableAndOfferedResources)
EXPECT_TRUE(Resources(offer.resources()).contains(
allocatedResources(unreserved, frameworkInfo.role())));
- // Ignore subsequent `recoverResources` calls triggered from recovering the
- // resources that this framework is currently holding onto.
- EXPECT_CALL(allocator, recoverResources(_, _, _, _))
- .WillRepeatedly(DoDefault());
-
driver.stop();
driver.join();
}
@@ -684,11 +625,7 @@ TEST_F(ReservationEndpointsTest, UnreserveAvailableAndOfferedResources)
// behave as expected.
TEST_F(ReservationEndpointsTest, LabeledResources)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
slave::Flags slaveFlags = CreateSlaveFlags();
@@ -696,15 +633,16 @@ TEST_F(ReservationEndpointsTest, LabeledResources)
Resources totalSlaveResources =
Resources::parse(slaveFlags.resources.get()).get();
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
FrameworkInfo frameworkInfo = createFrameworkInfo();
Labels labels1;
@@ -726,7 +664,7 @@ TEST_F(ReservationEndpointsTest, LabeledResources)
master.get()->pid,
"reserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), labeledResources1));
+ createRequestBody(slaveId, labeledResources1));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -734,7 +672,7 @@ TEST_F(ReservationEndpointsTest, LabeledResources)
master.get()->pid,
"reserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), labeledResources2));
+ createRequestBody(slaveId, labeledResources2));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -773,7 +711,7 @@ TEST_F(ReservationEndpointsTest, LabeledResources)
master.get()->pid,
"unreserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), labeledResources1));
+ createRequestBody(slaveId, labeledResources1));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -798,7 +736,7 @@ TEST_F(ReservationEndpointsTest, LabeledResources)
master.get()->pid,
"unreserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), labeledResources1));
+ createRequestBody(slaveId, labeledResources1));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Conflict().status, response);
@@ -813,7 +751,7 @@ TEST_F(ReservationEndpointsTest, LabeledResources)
master.get()->pid,
"unreserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), labeledResources2));
+ createRequestBody(slaveId, labeledResources2));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -831,11 +769,6 @@ TEST_F(ReservationEndpointsTest, LabeledResources)
EXPECT_FALSE(offeredResources.contains(
allocatedResources(labeledResources2, frameworkInfo.role())));
- // Ignore subsequent `recoverResources` calls triggered from recovering the
- // resources that this framework is currently holding onto.
- EXPECT_CALL(allocator, recoverResources(_, _, _, _))
- .WillRepeatedly(DoDefault());
-
driver.stop();
driver.join();
}
@@ -845,22 +778,19 @@ TEST_F(ReservationEndpointsTest, LabeledResources)
// return a Bad Request response.
TEST_F(ReservationEndpointsTest, InvalidResource)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get());
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
FrameworkInfo frameworkInfo = createFrameworkInfo();
// This resource is marked for the default "*" role and it also has a
@@ -877,7 +807,7 @@ TEST_F(ReservationEndpointsTest, InvalidResource)
// function `createRequestBody` accepts `Resources`.
string body = strings::format(
"slaveId=%s&resources=[%s]",
- slaveId->value(),
+ slaveId.value(),
JSON::protobuf(resource.get())).get();
{
@@ -904,22 +834,19 @@ TEST_F(ReservationEndpointsTest, InvalidResource)
// results in a 'Conflict' HTTP error.
TEST_F(ReservationEndpointsTest, InsufficientResources)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get());
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
FrameworkInfo frameworkInfo = createFrameworkInfo();
Resources unreserved = Resources::parse("cpus:4;mem:4096").get();
@@ -928,7 +855,7 @@ TEST_F(ReservationEndpointsTest, InsufficientResources)
createReservationInfo(DEFAULT_CREDENTIAL.principal())).get();
process::http::Headers headers = createBasicAuthHeaders(DEFAULT_CREDENTIAL);
- string body = createRequestBody(slaveId.get(), dynamicallyReserved);
+ string body = createRequestBody(slaveId, dynamicallyReserved);
Future<Response> response =
process::http::post(master.get()->pid, "reserve", headers, body);
@@ -945,22 +872,19 @@ TEST_F(ReservationEndpointsTest, InsufficientResources)
// an 'Unauthorized' HTTP error.
TEST_F(ReservationEndpointsTest, NoHeader)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get());
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
FrameworkInfo frameworkInfo = createFrameworkInfo();
Resources unreserved = Resources::parse("cpus:1;mem:512").get();
@@ -972,7 +896,7 @@ TEST_F(ReservationEndpointsTest, NoHeader)
master.get()->pid,
"reserve",
None(),
- createRequestBody(slaveId.get(), dynamicallyReserved));
+ createRequestBody(slaveId, dynamicallyReserved));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(
Unauthorized({}).status,
@@ -982,7 +906,7 @@ TEST_F(ReservationEndpointsTest, NoHeader)
master.get()->pid,
"unreserve",
None(),
- createRequestBody(slaveId.get(), dynamicallyReserved));
+ createRequestBody(slaveId, dynamicallyReserved));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(
Unauthorized({}).status,
@@ -994,22 +918,19 @@ TEST_F(ReservationEndpointsTest, NoHeader)
// 'Unauthorized' HTTP error.
TEST_F(ReservationEndpointsTest, BadCredentials)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get());
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
Credential credential;
credential.set_principal("bad-principal");
credential.set_secret("bad-secret");
@@ -1019,7 +940,7 @@ TEST_F(ReservationEndpointsTest, BadCredentials)
"role", createReservationInfo(DEFAULT_CREDENTIAL.principal())).get();
process::http::Headers headers = createBasicAuthHeaders(credential);
- string body = createRequestBody(slaveId.get(), dynamicallyReserved);
+ string body = createRequestBody(slaveId, dynamicallyReserved);
Future<Response> response =
process::http::post(master.get()->pid, "reserve", headers, body);
@@ -1040,7 +961,6 @@ TEST_F(ReservationEndpointsTest, BadCredentials)
// the operator to perform reserve/unreserve operations successfully.
TEST_F(ReservationEndpointsTest, GoodReserveAndUnreserveACL)
{
- TestAllocator<> allocator;
ACLs acls;
// This ACL asserts that the principal of `DEFAULT_CREDENTIAL`
@@ -1065,24 +985,23 @@ TEST_F(ReservationEndpointsTest, GoodReserveAndUnreserveACL)
masterFlags.allocation_interval = Milliseconds(50);
masterFlags.roles = frameworkInfo.role();
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator, masterFlags);
+ Try<Owned<cluster::Master>> master = StartMaster(masterFlags);
ASSERT_SOME(master);
// Create a slave.
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "cpus:1;mem:512";
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
process::http::Headers headers = createBasicAuthHeaders(DEFAULT_CREDENTIAL);
Resources unreserved = Resources::parse("cpus:1;mem:512").get();
@@ -1095,7 +1014,7 @@ TEST_F(ReservationEndpointsTest, GoodReserveAndUnreserveACL)
master.get()->pid,
"reserve",
headers,
- createRequestBody(slaveId.get(), dynamicallyReserved));
+ createRequestBody(slaveId, dynamicallyReserved));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -1104,7 +1023,7 @@ TEST_F(ReservationEndpointsTest, GoodReserveAndUnreserveACL)
master.get()->pid,
"unreserve",
headers,
- createRequestBody(slaveId.get(), dynamicallyReserved));
+ createRequestBody(slaveId, dynamicallyReserved));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
}
@@ -1114,7 +1033,6 @@ TEST_F(ReservationEndpointsTest, GoodReserveAndUnreserveACL)
// to perform reserve operations for multiple roles successfully.
TEST_F(ReservationEndpointsTest, GoodReserveACLMultipleRoles)
{
- TestAllocator<> allocator;
ACLs acls;
// This ACL asserts that the principal of `DEFAULT_CREDENTIAL`
@@ -1127,24 +1045,23 @@ TEST_F(ReservationEndpointsTest, GoodReserveACLMultipleRoles)
master::Flags masterFlags = CreateMasterFlags();
masterFlags.acls = acls;
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator, masterFlags);
+ Try<Owned<cluster::Master>> master = StartMaster(masterFlags);
ASSERT_SOME(master);
// Create a slave.
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "cpus:2;mem:1024";
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
Resources unreserved = Resources::parse("cpus:1;mem:512").get();
Resources dynamicallyReserved1 = unreserved.flatten(
"jedi_master",
@@ -1160,7 +1077,7 @@ TEST_F(ReservationEndpointsTest, GoodReserveACLMultipleRoles)
master.get()->pid,
"reserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), dynamicallyReservedMultipleRoles));
+ createRequestBody(slaveId, dynamicallyReservedMultipleRoles));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
}
@@ -1170,7 +1087,6 @@ TEST_F(ReservationEndpointsTest, GoodReserveACLMultipleRoles)
// operator from performing reserve operations.
TEST_F(ReservationEndpointsTest, BadReserveACL)
{
- TestAllocator<> allocator;
ACLs acls;
// This ACL asserts that ANY principal can reserve NONE,
@@ -1188,24 +1104,23 @@ TEST_F(ReservationEndpointsTest, BadReserveACL)
masterFlags.allocation_interval = Milliseconds(50);
masterFlags.roles = frameworkInfo.role();
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator, masterFlags);
+ Try<Owned<cluster::Master>> master = StartMaster(masterFlags);
ASSERT_SOME(master);
// Create a slave.
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "cpus:1;mem:512";
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
process::http::Headers headers = createBasicAuthHeaders(DEFAULT_CREDENTIAL);
Resources unreserved = Resources::parse("cpus:1;mem:512").get();
@@ -1218,7 +1133,7 @@ TEST_F(ReservationEndpointsTest, BadReserveACL)
master.get()->pid,
"reserve",
headers,
- createRequestBody(slaveId.get(), dynamicallyReserved));
+ createRequestBody(slaveId, dynamicallyReserved));
// Expect a failed authorization.
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Forbidden().status, response);
@@ -1229,7 +1144,6 @@ TEST_F(ReservationEndpointsTest, BadReserveACL)
// operator from performing unreserve operations.
TEST_F(ReservationEndpointsTest, BadUnreserveACL)
{
- TestAllocator<> allocator;
ACLs acls;
// This ACL asserts that ANY principal can unreserve NONE,
@@ -1247,24 +1161,23 @@ TEST_F(ReservationEndpointsTest, BadUnreserveACL)
masterFlags.allocation_interval = Milliseconds(50);
masterFlags.roles = frameworkInfo.role();
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator, masterFlags);
+ Try<Owned<cluster::Master>> master = StartMaster(masterFlags);
ASSERT_SOME(master);
// Create a slave.
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "cpus:1;mem:512";
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
process::http::Headers headers = createBasicAuthHeaders(DEFAULT_CREDENTIAL);
Resources unreserved = Resources::parse("cpus:1;mem:512").get();
@@ -1277,7 +1190,7 @@ TEST_F(ReservationEndpointsTest, BadUnreserveACL)
master.get()->pid,
"reserve",
headers,
- createRequestBody(slaveId.get(), dynamicallyReserved));
+ createRequestBody(slaveId, dynamicallyReserved));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -1286,7 +1199,7 @@ TEST_F(ReservationEndpointsTest, BadUnreserveACL)
master.get()->pid,
"unreserve",
headers,
- createRequestBody(slaveId.get(), dynamicallyReserved));
+ createRequestBody(slaveId, dynamicallyReserved));
// Expect a failed authorization.
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Forbidden().status, response);
@@ -1301,7 +1214,6 @@ TEST_F(ReservationEndpointsTest, BadReserveACLMultipleRoles)
const string AUTHORIZED_ROLE = "panda";
const string UNAUTHORIZED_ROLE = "giraffe";
- TestAllocator<> allocator;
ACLs acls;
// This ACL asserts that the principal of `DEFAULT_CREDENTIAL`
@@ -1320,24 +1232,23 @@ TEST_F(ReservationEndpointsTest, BadReserveACLMultipleRoles)
master::Flags masterFlags = CreateMasterFlags();
masterFlags.acls = acls;
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator, masterFlags);
+ Try<Owned<cluster::Master>> master = StartMaster(masterFlags);
ASSERT_SOME(master);
// Create a slave.
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "cpus:2;mem:1024";
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
Resources unreserved = Resources::parse("cpus:1;mem:512").get();
Resources dynamicallyReserved1 = unreserved.flatten(
AUTHORIZED_ROLE,
@@ -1353,7 +1264,7 @@ TEST_F(ReservationEndpointsTest, BadReserveACLMultipleRoles)
master.get()->pid,
"reserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), dynamicallyReservedMultipleRoles));
+ createRequestBody(slaveId, dynamicallyReservedMultipleRoles));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Forbidden().status, response);
}
@@ -1395,24 +1306,21 @@ TEST_F(ReservationEndpointsTest, NoSlaveId)
// 'BadRequest' HTTP error.
TEST_F(ReservationEndpointsTest, NoResources)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get());
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
process::http::Headers headers = createBasicAuthHeaders(DEFAULT_CREDENTIAL);
- string body = "slaveId=" + slaveId->value();
+ string body = "slaveId=" + slaveId.value();
Future<Response> response =
process::http::post(master.get()->pid, "reserve", headers, body);
@@ -1429,22 +1337,19 @@ TEST_F(ReservationEndpointsTest, NoResources)
// in a 'BadRequest' HTTP error.
TEST_F(ReservationEndpointsTest, NonMatchingPrincipal)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get());
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
Resources unreserved = Resources::parse("cpus:1;mem:512").get();
Resources dynamicallyReserved =
unreserved.flatten("role", createReservationInfo("badPrincipal")).get();
@@ -1453,7 +1358,7 @@ TEST_F(ReservationEndpointsTest, NonMatchingPrincipal)
master.get()->pid,
"reserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), dynamicallyReserved));
+ createRequestBody(slaveId, dynamicallyReserved));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(BadRequest().status, response);
}
@@ -1467,8 +1372,6 @@ TEST_F(ReservationEndpointsTest, ReserveAndUnreserveNoAuthentication)
// control the timing of the offer cycle.
Clock::pause();
- TestAllocator<> allocator;
-
FrameworkInfo frameworkInfo = DEFAULT_FRAMEWORK_INFO;
frameworkInfo.set_role("role");
@@ -1477,19 +1380,15 @@ TEST_F(ReservationEndpointsTest, ReserveAndUnreserveNoAuthentication)
masterFlags.authenticate_frameworks = false;
masterFlags.authenticate_http_readwrite = false;
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator, masterFlags);
+ Try<Owned<cluster::Master>> master = StartMaster(masterFlags);
ASSERT_SOME(master);
// Create an agent.
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "cpus:1;mem:512";
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
@@ -1500,6 +1399,9 @@ TEST_F(ReservationEndpointsTest, ReserveAndUnreserveNoAuthentication)
Clock::advance(slaveFlags.registration_backoff_factor);
Clock::advance(masterFlags.allocation_interval);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
Resources unreserved = Resources::parse("cpus:1;mem:512").get();
Resources dynamicallyReservedWithNoPrincipal = unreserved.flatten(
@@ -1512,7 +1414,7 @@ TEST_F(ReservationEndpointsTest, ReserveAndUnreserveNoAuthentication)
master.get()->pid,
"reserve",
None(),
- createRequestBody(slaveId.get(), dynamicallyReservedWithNoPrincipal));
+ createRequestBody(slaveId, dynamicallyReservedWithNoPrincipal));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -1522,7 +1424,7 @@ TEST_F(ReservationEndpointsTest, ReserveAndUnreserveNoAuthentication)
master.get()->pid,
"unreserve",
None(),
- createRequestBody(slaveId.get(), dynamicallyReservedWithNoPrincipal));
+ createRequestBody(slaveId, dynamicallyReservedWithNoPrincipal));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -1536,7 +1438,7 @@ TEST_F(ReservationEndpointsTest, ReserveAndUnreserveNoAuthentication)
master.get()->pid,
"reserve",
None(),
- createRequestBody(slaveId.get(), dynamicallyReservedWithPrincipal));
+ createRequestBody(slaveId, dynamicallyReservedWithPrincipal));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -1546,7 +1448,7 @@ TEST_F(ReservationEndpointsTest, ReserveAndUnreserveNoAuthentication)
master.get()->pid,
"unreserve",
None(),
- createRequestBody(slaveId.get(), dynamicallyReservedWithPrincipal));
+ createRequestBody(slaveId, dynamicallyReservedWithPrincipal));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
}
@@ -1557,25 +1459,22 @@ TEST_F(ReservationEndpointsTest, ReserveAndUnreserveNoAuthentication)
// into a single reserved resource.
TEST_F(ReservationEndpointsTest, DifferentPrincipalsSameRole)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
-
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "cpus:2;mem:1024";
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
+
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> slave = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(slave);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
FrameworkInfo frameworkInfo = createFrameworkInfo();
Resources unreserved = Resources::parse("cpus:1;mem:512").get();
@@ -1591,7 +1490,7 @@ TEST_F(ReservationEndpointsTest, DifferentPrincipalsSameRole)
master.get()->pid,
"reserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), dynamicallyReserved1));
+ createRequestBody(slaveId, dynamicallyReserved1));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -1599,7 +1498,7 @@ TEST_F(ReservationEndpointsTest, DifferentPrincipalsSameRole)
master.get()->pid,
"reserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL_2),
- createRequestBody(slaveId.get(), dynamicallyReserved2));
+ createRequestBody(slaveId, dynamicallyReserved2));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
@@ -1638,25 +1537,22 @@ TEST_F(ReservationEndpointsTest, DifferentPrincipalsSameRole)
// it matches the master's versions.
TEST_F(ReservationEndpointsTest, AgentStateEndpointResources)
{
- TestAllocator<> allocator;
-
- EXPECT_CALL(allocator, initialize(_, _, _, _, _));
-
- Try<Owned<cluster::Master>> master = StartMaster(&allocator);
+ Try<Owned<cluster::Master>> master = StartMaster();
ASSERT_SOME(master);
- Future<SlaveID> slaveId;
- EXPECT_CALL(allocator, addSlave(_, _, _, _, _, _))
- .WillOnce(DoAll(InvokeAddSlave(&allocator),
- FutureArg<0>(&slaveId)));
-
slave::Flags slaveFlags = CreateSlaveFlags();
slaveFlags.resources = "cpus:4;mem:2048;disk:4096";
+ Future<SlaveRegisteredMessage> slaveRegisteredMessage =
+ FUTURE_PROTOBUF(SlaveRegisteredMessage(), master.get()->pid, _);
+
Owned<MasterDetector> detector = master.get()->createDetector();
Try<Owned<cluster::Slave>> agent = StartSlave(detector.get(), slaveFlags);
ASSERT_SOME(agent);
+ AWAIT_READY(slaveRegisteredMessage);
+ const SlaveID& slaveId = slaveRegisteredMessage->slave_id();
+
Resources unreserved = Resources::parse("cpus:1;mem:512;disk:1024").get();
Resources dynamicallyReserved = unreserved.flatten(
"role1",
@@ -1670,7 +1566,7 @@ TEST_F(ReservationEndpointsTest, AgentStateEndpointResources)
master.get()->pid,
"reserve",
createBasicAuthHeaders(DEFAULT_CREDENTIAL),
- createRequestBody(slaveId.get(), dynamicallyReserved));
+ createRequestBody(slaveId, dynamicallyReserved));
AWAIT_EXPECT_RESPONSE_STATUS_EQ(Accepted().status, response);
}
[3/3] mesos git commit: Removed some unused includes and using
declarations.
Posted by al...@apache.org.
Removed some unused includes and using declarations.
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/cae76904
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/cae76904
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/cae76904
Branch: refs/heads/master
Commit: cae76904aee17db579993c8918f102f553c20b50
Parents: 9ef28fe
Author: Alexander Rukletsov <al...@apache.org>
Authored: Wed Jun 7 12:00:59 2017 +0200
Committer: Alexander Rukletsov <al...@apache.org>
Committed: Wed Jun 7 12:00:59 2017 +0200
----------------------------------------------------------------------
src/tests/persistent_volume_endpoints_tests.cpp | 2 --
src/tests/reservation_endpoints_tests.cpp | 2 --
2 files changed, 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/cae76904/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 1d76433..80501e6 100644
--- a/src/tests/persistent_volume_endpoints_tests.cpp
+++ b/src/tests/persistent_volume_endpoints_tests.cpp
@@ -63,8 +63,6 @@ using process::http::Response;
using process::http::Unauthorized;
using testing::_;
-using testing::DoAll;
-using testing::Eq;
using testing::Return;
namespace mesos {
http://git-wip-us.apache.org/repos/asf/mesos/blob/cae76904/src/tests/reservation_endpoints_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/reservation_endpoints_tests.cpp b/src/tests/reservation_endpoints_tests.cpp
index 62fc60e..ba283ee 100644
--- a/src/tests/reservation_endpoints_tests.cpp
+++ b/src/tests/reservation_endpoints_tests.cpp
@@ -34,7 +34,6 @@
#include "master/flags.hpp"
#include "master/master.hpp"
-#include "tests/allocator.hpp"
#include "tests/mesos.hpp"
#include "tests/resources_utils.hpp"
#include "tests/utils.hpp"
@@ -64,7 +63,6 @@ using process::http::Response;
using process::http::Unauthorized;
using testing::_;
-using testing::DoAll;
namespace mesos {
namespace internal {