You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by jp...@apache.org on 2017/10/31 22:38:18 UTC
mesos git commit: Updated XFS tests to handle the TASK_STARTING state.
Repository: mesos
Updated Branches:
refs/heads/master 330761e20 -> b7f4c134a
Updated XFS tests to handle the TASK_STARTING state.
Updated the XFS disk isolator tests to handle the new TASK_STARTING
status update from the Mesos executors.
Review: https://reviews.apache.org/r/63428/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/b7f4c134
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/b7f4c134
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/b7f4c134
Branch: refs/heads/master
Commit: b7f4c134a9996ce60b1699826e6dfb02910d0e83
Parents: 330761e
Author: James Peach <jp...@apache.org>
Authored: Tue Oct 31 15:02:25 2017 -0700
Committer: James Peach <jp...@apache.org>
Committed: Tue Oct 31 15:02:25 2017 -0700
----------------------------------------------------------------------
src/tests/containerizer/xfs_quota_tests.cpp | 136 +++++++++++++++--------
1 file changed, 89 insertions(+), 47 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/b7f4c134/src/tests/containerizer/xfs_quota_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/xfs_quota_tests.cpp b/src/tests/containerizer/xfs_quota_tests.cpp
index 4603847..83fa7f2 100644
--- a/src/tests/containerizer/xfs_quota_tests.cpp
+++ b/src/tests/containerizer/xfs_quota_tests.cpp
@@ -414,26 +414,32 @@ TEST_F(ROOT_XFS_QuotaTest, DiskUsageExceedsQuota)
Resources::parse("cpus:1;mem:128;disk:1").get(),
"dd if=/dev/zero of=file bs=1048576 count=2");
- Future<TaskStatus> status1;
- Future<TaskStatus> status2;
+ Future<TaskStatus> startingStatus;
+ Future<TaskStatus> runningStatus;
+ Future<TaskStatus> failedStatus;
EXPECT_CALL(sched, statusUpdate(&driver, _))
- .WillOnce(FutureArg<1>(&status1))
- .WillOnce(FutureArg<1>(&status2));
+ .WillOnce(FutureArg<1>(&startingStatus))
+ .WillOnce(FutureArg<1>(&runningStatus))
+ .WillOnce(FutureArg<1>(&failedStatus));
driver.launchTasks(offer.id(), {task});
- AWAIT_READY(status1);
- EXPECT_EQ(task.task_id(), status1->task_id());
- EXPECT_EQ(TASK_RUNNING, status1->state());
+ AWAIT_READY(startingStatus);
+ EXPECT_EQ(task.task_id(), startingStatus->task_id());
+ EXPECT_EQ(TASK_STARTING, startingStatus->state());
- AWAIT_READY(status2);
- EXPECT_EQ(task.task_id(), status2->task_id());
- EXPECT_EQ(TASK_FAILED, status2->state());
+ AWAIT_READY(runningStatus);
+ EXPECT_EQ(task.task_id(), runningStatus->task_id());
+ EXPECT_EQ(TASK_RUNNING, runningStatus->state());
+
+ AWAIT_READY(failedStatus);
+ EXPECT_EQ(task.task_id(), failedStatus->task_id());
+ EXPECT_EQ(TASK_FAILED, failedStatus->state());
// Unlike the 'disk/du' isolator, the reason for task failure
// should be that dd got an IO error.
- EXPECT_EQ(TaskStatus::SOURCE_EXECUTOR, status2->source());
- EXPECT_EQ("Command exited with status 1", status2->message());
+ EXPECT_EQ(TaskStatus::SOURCE_EXECUTOR, failedStatus->source());
+ EXPECT_EQ("Command exited with status 1", failedStatus->message());
driver.stop();
driver.join();
@@ -480,23 +486,29 @@ TEST_F(ROOT_XFS_QuotaTest, DiskUsageExceedsQuotaNoEnforce)
Resources::parse("cpus:1;mem:128;disk:1").get(),
"dd if=/dev/zero of=file bs=1048576 count=2");
- Future<TaskStatus> status1;
- Future<TaskStatus> status2;
+ Future<TaskStatus> startingStatus;
+ Future<TaskStatus> runningStatus;
+ Future<TaskStatus> finishedStatus;
EXPECT_CALL(sched, statusUpdate(&driver, _))
- .WillOnce(FutureArg<1>(&status1))
- .WillOnce(FutureArg<1>(&status2));
+ .WillOnce(FutureArg<1>(&startingStatus))
+ .WillOnce(FutureArg<1>(&runningStatus))
+ .WillOnce(FutureArg<1>(&finishedStatus));
driver.launchTasks(offer.id(), {task});
- AWAIT_READY(status1);
- EXPECT_EQ(task.task_id(), status1->task_id());
- EXPECT_EQ(TASK_RUNNING, status1->state());
+ AWAIT_READY(startingStatus);
+ EXPECT_EQ(task.task_id(), startingStatus->task_id());
+ EXPECT_EQ(TASK_STARTING, startingStatus->state());
+
+ AWAIT_READY(runningStatus);
+ EXPECT_EQ(task.task_id(), runningStatus->task_id());
+ EXPECT_EQ(TASK_RUNNING, runningStatus->state());
// We expect the task to succeed even though it exceeded
// the disk quota.
- AWAIT_READY(status2);
- EXPECT_EQ(task.task_id(), status2->task_id());
- EXPECT_EQ(TASK_FINISHED, status2->state());
+ AWAIT_READY(finishedStatus);
+ EXPECT_EQ(task.task_id(), finishedStatus->task_id());
+ EXPECT_EQ(TASK_FINISHED, finishedStatus->state());
driver.stop();
driver.join();
@@ -551,16 +563,22 @@ TEST_F(ROOT_XFS_QuotaTest, ResourceStatistics)
Resources::parse("cpus:1;mem:128;disk:3").get(),
"dd if=/dev/zero of=file bs=1048576 count=4 || sleep 1000");
- Future<TaskStatus> status;
+ Future<TaskStatus> startingStatus;
+ Future<TaskStatus> runningStatus;
EXPECT_CALL(sched, statusUpdate(&driver, _))
- .WillOnce(FutureArg<1>(&status))
+ .WillOnce(FutureArg<1>(&startingStatus))
+ .WillOnce(FutureArg<1>(&runningStatus))
.WillRepeatedly(Return()); // Ignore subsequent updates.
driver.launchTasks(offers.get()[0].id(), {task});
- AWAIT_READY(status);
- EXPECT_EQ(task.task_id(), status->task_id());
- EXPECT_EQ(TASK_RUNNING, status->state());
+ AWAIT_READY(startingStatus);
+ EXPECT_EQ(task.task_id(), startingStatus->task_id());
+ EXPECT_EQ(TASK_STARTING, startingStatus->state());
+
+ AWAIT_READY(runningStatus);
+ EXPECT_EQ(task.task_id(), runningStatus->task_id());
+ EXPECT_EQ(TASK_RUNNING, runningStatus->state());
Future<hashset<ContainerID>> containers = containerizer.get()->containers();
AWAIT_READY(containers);
@@ -648,16 +666,22 @@ TEST_F(ROOT_XFS_QuotaTest, ResourceStatisticsNoEnforce)
Resources::parse("cpus:1;mem:128;disk:3").get(),
"dd if=/dev/zero of=file bs=1048576 count=4 && sleep 1000");
- Future<TaskStatus> status;
+ Future<TaskStatus> startingStatus;
+ Future<TaskStatus> runningStatus;
EXPECT_CALL(sched, statusUpdate(&driver, _))
- .WillOnce(FutureArg<1>(&status))
+ .WillOnce(FutureArg<1>(&startingStatus))
+ .WillOnce(FutureArg<1>(&runningStatus))
.WillRepeatedly(Return()); // Ignore subsequent updates.
driver.launchTasks(offers.get()[0].id(), {task});
- AWAIT_READY(status);
- EXPECT_EQ(task.task_id(), status->task_id());
- EXPECT_EQ(TASK_RUNNING, status->state());
+ AWAIT_READY(startingStatus);
+ EXPECT_EQ(task.task_id(), startingStatus->task_id());
+ EXPECT_EQ(TASK_STARTING, startingStatus->state());
+
+ AWAIT_READY(runningStatus);
+ EXPECT_EQ(task.task_id(), runningStatus->task_id());
+ EXPECT_EQ(TASK_RUNNING, runningStatus->state());
Future<hashset<ContainerID>> containers = containerizer.get()->containers();
AWAIT_READY(containers);
@@ -749,16 +773,22 @@ TEST_F(ROOT_XFS_QuotaTest, NoCheckpointRecovery)
Resources::parse("cpus:1;mem:128;disk:1").get(),
"dd if=/dev/zero of=file bs=1048576 count=1; sleep 1000");
- Future<TaskStatus> status;
+ Future<TaskStatus> runningStatus;
+ Future<TaskStatus> startingStatus;
EXPECT_CALL(sched, statusUpdate(&driver, _))
- .WillOnce(FutureArg<1>(&status))
+ .WillOnce(FutureArg<1>(&startingStatus))
+ .WillOnce(FutureArg<1>(&runningStatus))
.WillOnce(Return());
driver.launchTasks(offer.id(), {task});
- AWAIT_READY(status);
- EXPECT_EQ(task.task_id(), status->task_id());
- EXPECT_EQ(TASK_RUNNING, status->state());
+ AWAIT_READY(startingStatus);
+ EXPECT_EQ(task.task_id(), startingStatus->task_id());
+ EXPECT_EQ(TASK_STARTING, startingStatus->state());
+
+ AWAIT_READY(runningStatus);
+ EXPECT_EQ(task.task_id(), runningStatus->task_id());
+ EXPECT_EQ(TASK_RUNNING, runningStatus->state());
Future<ResourceUsage> usage1 =
process::dispatch(slave.get()->pid, &Slave::usage);
@@ -873,15 +903,21 @@ TEST_F(ROOT_XFS_QuotaTest, CheckpointRecovery)
Resources::parse("cpus:1;mem:128;disk:1").get(),
"dd if=/dev/zero of=file bs=1048576 count=1; sleep 1000");
- Future<TaskStatus> status;
+ Future<TaskStatus> startingStatus;
+ Future<TaskStatus> runningStatus;
EXPECT_CALL(sched, statusUpdate(&driver, _))
- .WillOnce(FutureArg<1>(&status));
+ .WillOnce(FutureArg<1>(&startingStatus))
+ .WillOnce(FutureArg<1>(&runningStatus));
driver.launchTasks(offer.id(), {task});
- AWAIT_READY(status);
- EXPECT_EQ(task.task_id(), status->task_id());
- EXPECT_EQ(TASK_RUNNING, status->state());
+ AWAIT_READY(startingStatus);
+ EXPECT_EQ(task.task_id(), startingStatus->task_id());
+ EXPECT_EQ(TASK_STARTING, startingStatus->state());
+
+ AWAIT_READY(startingStatus);
+ EXPECT_EQ(task.task_id(), runningStatus->task_id());
+ EXPECT_EQ(TASK_RUNNING, runningStatus->state());
Future<ResourceUsage> usage1 =
process::dispatch(slave.get()->pid, &Slave::usage);
@@ -986,15 +1022,21 @@ TEST_F(ROOT_XFS_QuotaTest, RecoverOldContainers)
Resources::parse("cpus:1;mem:128;disk:1").get(),
"dd if=/dev/zero of=file bs=1024 count=1; sleep 1000");
- Future<TaskStatus> status;
+ Future<TaskStatus> startingStatus;
+ Future<TaskStatus> runningstatus;
EXPECT_CALL(sched, statusUpdate(&driver, _))
- .WillOnce(FutureArg<1>(&status));
+ .WillOnce(FutureArg<1>(&startingStatus))
+ .WillOnce(FutureArg<1>(&runningstatus));
driver.launchTasks(offer.id(), {task});
- AWAIT_READY(status);
- EXPECT_EQ(task.task_id(), status->task_id());
- EXPECT_EQ(TASK_RUNNING, status->state());
+ AWAIT_READY(startingStatus);
+ EXPECT_EQ(task.task_id(), startingStatus->task_id());
+ EXPECT_EQ(TASK_STARTING, startingStatus->state());
+
+ AWAIT_READY(runningstatus);
+ EXPECT_EQ(task.task_id(), runningstatus->task_id());
+ EXPECT_EQ(TASK_RUNNING, runningstatus->state());
{
Future<ResourceUsage> usage =