You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by vi...@apache.org on 2014/09/19 03:23:14 UTC
[1/2] git commit: Fixed example frameworks to fail fast on an
unexpected status udpate.
Repository: mesos
Updated Branches:
refs/heads/master 7c51ae38b -> 3636c0ea7
Fixed example frameworks to fail fast on an unexpected status udpate.
Review: https://reviews.apache.org/r/25805
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/3636c0ea
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/3636c0ea
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/3636c0ea
Branch: refs/heads/master
Commit: 3636c0ea787f3cb35788ded624a5fa25c0866166
Parents: 0cd8d64
Author: Vinod Kone <vi...@gmail.com>
Authored: Thu Sep 18 17:05:34 2014 -0700
Committer: Vinod Kone <vi...@gmail.com>
Committed: Thu Sep 18 18:22:57 2014 -0700
----------------------------------------------------------------------
src/examples/java/TestExecutor.java | 2 +-
src/examples/java/TestFramework.java | 12 +++++++++++-
src/examples/low_level_scheduler_libprocess.cpp | 11 +++++++++--
src/examples/low_level_scheduler_pthread.cpp | 11 +++++++++--
src/examples/no_executor_framework.cpp | 10 ++++++++++
src/examples/python/test_framework.py | 10 +++++++++-
src/examples/test_framework.cpp | 10 ++++++++++
7 files changed, 59 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/3636c0ea/src/examples/java/TestExecutor.java
----------------------------------------------------------------------
diff --git a/src/examples/java/TestExecutor.java b/src/examples/java/TestExecutor.java
index 014bc97..3f385fb 100644
--- a/src/examples/java/TestExecutor.java
+++ b/src/examples/java/TestExecutor.java
@@ -47,7 +47,7 @@ public class TestExecutor implements Executor {
driver.sendStatusUpdate(status);
- System.out.println("Running task " + task.getTaskId());
+ System.out.println("Running task " + task.getTaskId().getValue());
// This is where one would perform the requested task.
http://git-wip-us.apache.org/repos/asf/mesos/blob/3636c0ea/src/examples/java/TestFramework.java
----------------------------------------------------------------------
diff --git a/src/examples/java/TestFramework.java b/src/examples/java/TestFramework.java
index ad2884b..bc593d0 100644
--- a/src/examples/java/TestFramework.java
+++ b/src/examples/java/TestFramework.java
@@ -117,7 +117,7 @@ public class TestFramework {
@Override
public void statusUpdate(SchedulerDriver driver, TaskStatus status) {
System.out.println("Status update: task " + status.getTaskId().getValue() +
- " is in state " + status.getState());
+ " is in state " + status.getState().getValueDescriptor().getName());
if (status.getState() == TaskState.TASK_FINISHED) {
finishedTasks++;
System.out.println("Finished tasks: " + finishedTasks);
@@ -125,6 +125,16 @@ public class TestFramework {
driver.stop();
}
}
+
+ if (status.getState() == TaskState.TASK_LOST ||
+ status.getState() == TaskState.TASK_KILLED ||
+ status.getState() == TaskState.TASK_FAILED) {
+ System.err.println("Aborting because task " + status.getTaskId().getValue() +
+ " is in unexpected state " +
+ status.getState().getValueDescriptor().getName() +
+ " with message '" + status.getMessage() + "'");
+ driver.abort();
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/mesos/blob/3636c0ea/src/examples/low_level_scheduler_libprocess.cpp
----------------------------------------------------------------------
diff --git a/src/examples/low_level_scheduler_libprocess.cpp b/src/examples/low_level_scheduler_libprocess.cpp
index eb7f8bf..7ef5ea7 100644
--- a/src/examples/low_level_scheduler_libprocess.cpp
+++ b/src/examples/low_level_scheduler_libprocess.cpp
@@ -263,8 +263,7 @@ private:
void statusUpdate(const string& uuid, const TaskStatus& status)
{
- cout << "Task " << status.task_id().value() << " is in state "
- << TaskState_Name(status.state());
+ cout << "Task " << status.task_id() << " is in state " << status.state();
if (status.has_message()) {
cout << " with message '" << status.message() << "'";
@@ -286,6 +285,14 @@ private:
++tasksFinished;
}
+ if (status.state() == TASK_LOST ||
+ status.state() == TASK_KILLED ||
+ status.state() == TASK_FAILED) {
+ EXIT(1) << "Exiting because task " << status.task_id()
+ << " is in unexpected state " << status.state()
+ << " with message '" << status.message() << "'";
+ }
+
if (tasksFinished == totalTasks) {
process::terminate(self());
}
http://git-wip-us.apache.org/repos/asf/mesos/blob/3636c0ea/src/examples/low_level_scheduler_pthread.cpp
----------------------------------------------------------------------
diff --git a/src/examples/low_level_scheduler_pthread.cpp b/src/examples/low_level_scheduler_pthread.cpp
index f5e669f..6e233a1 100644
--- a/src/examples/low_level_scheduler_pthread.cpp
+++ b/src/examples/low_level_scheduler_pthread.cpp
@@ -313,8 +313,7 @@ private:
void statusUpdate(const string& uuid, const TaskStatus& status)
{
- cout << "Task " << status.task_id().value() << " is in state "
- << TaskState_Name(status.state());
+ cout << "Task " << status.task_id() << " is in state " << status.state();
if (status.has_message()) {
cout << " with message '" << status.message() << "'";
@@ -336,6 +335,14 @@ private:
++tasksFinished;
}
+ if (status.state() == TASK_LOST ||
+ status.state() == TASK_KILLED ||
+ status.state() == TASK_FAILED) {
+ EXIT(1) << "Exiting because task " << status.task_id()
+ << " is in unexpected state " << status.state()
+ << " with message '" << status.message() << "'";
+ }
+
if (tasksFinished == totalTasks) {
finalize();
}
http://git-wip-us.apache.org/repos/asf/mesos/blob/3636c0ea/src/examples/no_executor_framework.cpp
----------------------------------------------------------------------
diff --git a/src/examples/no_executor_framework.cpp b/src/examples/no_executor_framework.cpp
index ddc7cab..f98a073 100644
--- a/src/examples/no_executor_framework.cpp
+++ b/src/examples/no_executor_framework.cpp
@@ -121,6 +121,16 @@ public:
if (status.state() == TASK_FINISHED)
tasksFinished++;
+ if (status.state() == TASK_LOST ||
+ status.state() == TASK_KILLED ||
+ status.state() == TASK_FAILED) {
+ cout << "Aborting because task " << taskId
+ << " is in unexpected state " << status.state()
+ << " with message '" << status.message() << "'"
+ << endl;
+ driver->abort();
+ }
+
if (tasksFinished == totalTasks)
driver->stop();
}
http://git-wip-us.apache.org/repos/asf/mesos/blob/3636c0ea/src/examples/python/test_framework.py
----------------------------------------------------------------------
diff --git a/src/examples/python/test_framework.py b/src/examples/python/test_framework.py
index 761c04e..aad6d77 100755
--- a/src/examples/python/test_framework.py
+++ b/src/examples/python/test_framework.py
@@ -93,7 +93,8 @@ class TestScheduler(mesos.interface.Scheduler):
driver.launchTasks(offer.id, tasks)
def statusUpdate(self, driver, update):
- print "Task %s is in state %d" % (update.task_id.value, update.state)
+ print "Task %s is in state %s" % \
+ (update.task_id.value, mesos_pb2.TaskState.Name(update.state))
# Ensure the binary data came through.
if update.data != "data with a \0 byte":
@@ -115,6 +116,13 @@ class TestScheduler(mesos.interface.Scheduler):
slave_id,
'data with a \0 byte')
+ if update.state == mesos_pb2.TASK_LOST or \
+ update.state == mesos_pb2.TASK_KILLED or \
+ update.state == mesos_pb2.TASK_FAILED:
+ print "Aborting because task %s is in unexpected state %s with message '%s'" \
+ % (update.task_id.value, mesos_pb2.TaskState.Name(update.state), update.message)
+ driver.abort()
+
def frameworkMessage(self, driver, executorId, slaveId, message):
self.messagesReceived += 1
http://git-wip-us.apache.org/repos/asf/mesos/blob/3636c0ea/src/examples/test_framework.cpp
----------------------------------------------------------------------
diff --git a/src/examples/test_framework.cpp b/src/examples/test_framework.cpp
index e6c0d33..187a611 100644
--- a/src/examples/test_framework.cpp
+++ b/src/examples/test_framework.cpp
@@ -128,6 +128,16 @@ public:
if (status.state() == TASK_FINISHED)
tasksFinished++;
+ if (status.state() == TASK_LOST ||
+ status.state() == TASK_KILLED ||
+ status.state() == TASK_FAILED) {
+ cout << "Aborting because task " << taskId
+ << " is in unexpected state " << status.state()
+ << " with message '" << status.message() << "'"
+ << endl;
+ driver->abort();
+ }
+
if (tasksFinished == totalTasks)
driver->stop();
}
[2/2] git commit: Fixed example frameworks to launch tasks based on
offered resources.
Posted by vi...@apache.org.
Fixed example frameworks to launch tasks based on offered resources.
Review: https://reviews.apache.org/r/25801
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/0cd8d64b
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/0cd8d64b
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/0cd8d64b
Branch: refs/heads/master
Commit: 0cd8d64b35d0f32cf1dcded7564e19411d872d9c
Parents: 7c51ae3
Author: Vinod Kone <vi...@gmail.com>
Authored: Thu Sep 18 16:09:00 2014 -0700
Committer: Vinod Kone <vi...@gmail.com>
Committed: Thu Sep 18 18:22:57 2014 -0700
----------------------------------------------------------------------
src/examples/java/TestFramework.java | 34 +++++++++--
src/examples/low_level_scheduler_libprocess.cpp | 12 ++--
src/examples/low_level_scheduler_pthread.cpp | 12 ++--
src/examples/no_executor_framework.cpp | 63 ++++++++------------
src/examples/python/test_framework.py | 30 ++++++++--
src/examples/test_framework.cpp | 14 +++--
src/tests/java_framework_test.sh | 3 +
.../low_level_scheduler_libprocess_test.sh | 3 +
src/tests/low_level_scheduler_pthread_test.sh | 3 +
src/tests/no_executor_framework_test.sh | 3 +
src/tests/python_framework_test.sh | 3 +
src/tests/test_framework_test.sh | 3 +
12 files changed, 118 insertions(+), 65 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/0cd8d64b/src/examples/java/TestFramework.java
----------------------------------------------------------------------
diff --git a/src/examples/java/TestFramework.java b/src/examples/java/TestFramework.java
index e01b27c..ad2884b 100644
--- a/src/examples/java/TestFramework.java
+++ b/src/examples/java/TestFramework.java
@@ -56,13 +56,35 @@ public class TestFramework {
@Override
public void resourceOffers(SchedulerDriver driver,
List<Offer> offers) {
+ double CPUS_PER_TASK = 1;
+ double MEM_PER_TASK = 128;
+
for (Offer offer : offers) {
List<TaskInfo> tasks = new ArrayList<TaskInfo>();
- if (launchedTasks < totalTasks) {
+ double offerCpus = 0;
+ double offerMem = 0;
+ for (Resource resource : offer.getResourcesList()) {
+ if (resource.getName().equals("cpus")) {
+ offerCpus += resource.getScalar().getValue();
+ } else if (resource.getName().equals("mem")) {
+ offerMem += resource.getScalar().getValue();
+ }
+ }
+
+ System.out.println(
+ "Received offer " + offer.getId().getValue() + " with cpus: " + offerCpus +
+ " and mem: " + offerMem);
+
+ double remainingCpus = offerCpus;
+ double remainingMem = offerMem;
+ while (launchedTasks < totalTasks &&
+ remainingCpus >= CPUS_PER_TASK &&
+ remainingMem >= MEM_PER_TASK) {
TaskID taskId = TaskID.newBuilder()
.setValue(Integer.toString(launchedTasks++)).build();
- System.out.println("Launching task " + taskId.getValue());
+ System.out.println("Launching task " + taskId.getValue() +
+ " using offer " + offer.getId().getValue());
TaskInfo task = TaskInfo.newBuilder()
.setName("task " + taskId.getValue())
@@ -71,14 +93,18 @@ public class TestFramework {
.addResources(Resource.newBuilder()
.setName("cpus")
.setType(Value.Type.SCALAR)
- .setScalar(Value.Scalar.newBuilder().setValue(1)))
+ .setScalar(Value.Scalar.newBuilder().setValue(CPUS_PER_TASK)))
.addResources(Resource.newBuilder()
.setName("mem")
.setType(Value.Type.SCALAR)
- .setScalar(Value.Scalar.newBuilder().setValue(128)))
+ .setScalar(Value.Scalar.newBuilder().setValue(MEM_PER_TASK)))
.setExecutor(ExecutorInfo.newBuilder(executor))
.build();
+
tasks.add(task);
+
+ remainingCpus -= CPUS_PER_TASK;
+ remainingMem -= MEM_PER_TASK;
}
Filters filters = Filters.newBuilder().setRefuseSeconds(1).build();
driver.launchTasks(offer.getId(), tasks, filters);
http://git-wip-us.apache.org/repos/asf/mesos/blob/0cd8d64b/src/examples/low_level_scheduler_libprocess.cpp
----------------------------------------------------------------------
diff --git a/src/examples/low_level_scheduler_libprocess.cpp b/src/examples/low_level_scheduler_libprocess.cpp
index 9e93bb4..eb7f8bf 100644
--- a/src/examples/low_level_scheduler_libprocess.cpp
+++ b/src/examples/low_level_scheduler_libprocess.cpp
@@ -43,6 +43,8 @@
#include <stout/os.hpp>
#include <stout/stringify.hpp>
+#include "common/type_utils.hpp"
+
#include "logging/flags.hpp"
using namespace mesos;
@@ -61,7 +63,7 @@ using mesos::scheduler::Call;
using mesos::scheduler::Event;
const int32_t CPUS_PER_TASK = 1;
-const int32_t MEM_PER_TASK = 32;
+const int32_t MEM_PER_TASK = 128;
class LowLevelScheduler : public process::Process<LowLevelScheduler>
{
@@ -210,8 +212,8 @@ private:
void resourceOffers(const vector<Offer>& offers)
{
foreach (const Offer& offer, offers) {
- cout << "Offer '" << offer.id().value() << "' has "
- << offer.resources() << endl;
+ cout << "Received offer " << offer.id() << " with " << offer.resources()
+ << endl;
static const Resources TASK_RESOURCES = Resources::parse(
"cpus:" + stringify(CPUS_PER_TASK) +
@@ -225,8 +227,8 @@ private:
TASK_RESOURCES <= remaining.flatten()) {
int taskId = tasksLaunched++;
- cout << "Starting task " << taskId << " on "
- << offer.hostname() << endl;
+ cout << "Launching task " << taskId << " using offer "
+ << offer.id() << endl;
TaskInfo task;
task.set_name("Task " + lexical_cast<string>(taskId));
http://git-wip-us.apache.org/repos/asf/mesos/blob/0cd8d64b/src/examples/low_level_scheduler_pthread.cpp
----------------------------------------------------------------------
diff --git a/src/examples/low_level_scheduler_pthread.cpp b/src/examples/low_level_scheduler_pthread.cpp
index a408571..f5e669f 100644
--- a/src/examples/low_level_scheduler_pthread.cpp
+++ b/src/examples/low_level_scheduler_pthread.cpp
@@ -42,6 +42,8 @@
#include <stout/os.hpp>
#include <stout/stringify.hpp>
+#include "common/type_utils.hpp"
+
#include "logging/flags.hpp"
using namespace mesos;
@@ -60,7 +62,7 @@ using mesos::scheduler::Call;
using mesos::scheduler::Event;
const int32_t CPUS_PER_TASK = 1;
-const int32_t MEM_PER_TASK = 32;
+const int32_t MEM_PER_TASK = 128;
class LowLevelScheduler
{
@@ -261,8 +263,8 @@ private:
void resourceOffers(const vector<Offer>& offers)
{
foreach (const Offer& offer, offers) {
- cout << "Offer '" << offer.id().value() << "' has "
- << offer.resources() << endl;
+ cout << "Received offer " << offer.id() << " with " << offer.resources()
+ << endl;
static const Resources TASK_RESOURCES = Resources::parse(
"cpus:" + stringify(CPUS_PER_TASK) +
@@ -276,8 +278,8 @@ private:
TASK_RESOURCES <= remaining.flatten()) {
int taskId = tasksLaunched++;
- cout << "Starting task " << taskId << " on "
- << offer.hostname() << endl;
+ cout << "Launching task " << taskId << " using offer "
+ << offer.id() << endl;
TaskInfo task;
task.set_name("Task " + lexical_cast<string>(taskId));
http://git-wip-us.apache.org/repos/asf/mesos/blob/0cd8d64b/src/examples/no_executor_framework.cpp
----------------------------------------------------------------------
diff --git a/src/examples/no_executor_framework.cpp b/src/examples/no_executor_framework.cpp
index 1dd2b99..ddc7cab 100644
--- a/src/examples/no_executor_framework.cpp
+++ b/src/examples/no_executor_framework.cpp
@@ -23,11 +23,16 @@
#include <boost/lexical_cast.hpp>
+#include <mesos/resources.hpp>
#include <mesos/scheduler.hpp>
+#include <stout/check.hpp>
#include <stout/exit.hpp>
#include <stout/numify.hpp>
#include <stout/os.hpp>
+#include <stout/stringify.hpp>
+
+#include "common/type_utils.hpp"
using namespace mesos;
@@ -40,8 +45,10 @@ using std::flush;
using std::string;
using std::vector;
+using mesos::Resources;
+
const int32_t CPUS_PER_TASK = 1;
-const int32_t MEM_PER_TASK = 32;
+const int32_t MEM_PER_TASK = 128;
class NoExecutorScheduler : public Scheduler
{
@@ -65,36 +72,24 @@ public:
virtual void resourceOffers(SchedulerDriver* driver,
const vector<Offer>& offers)
{
- cout << "." << flush;
- for (size_t i = 0; i < offers.size(); i++) {
- const Offer& offer = offers[i];
-
- // Lookup resources we care about.
- // TODO(benh): It would be nice to ultimately have some helper
- // functions for looking up resources.
- double cpus = 0;
- double mem = 0;
-
- for (int i = 0; i < offer.resources_size(); i++) {
- const Resource& resource = offer.resources(i);
- if (resource.name() == "cpus" &&
- resource.type() == Value::SCALAR) {
- cpus = resource.scalar().value();
- } else if (resource.name() == "mem" &&
- resource.type() == Value::SCALAR) {
- mem = resource.scalar().value();
- }
- }
+ foreach (const Offer& offer, offers) {
+ cout << "Received offer " << offer.id() << " with " << offer.resources()
+ << endl;
+
+ static const Resources TASK_RESOURCES = Resources::parse(
+ "cpus:" + stringify(CPUS_PER_TASK) +
+ ";mem:" + stringify(MEM_PER_TASK)).get();
+
+ Resources remaining = offer.resources();
// Launch tasks.
vector<TaskInfo> tasks;
while (tasksLaunched < totalTasks &&
- cpus >= CPUS_PER_TASK &&
- mem >= MEM_PER_TASK) {
+ TASK_RESOURCES <= remaining.flatten()) {
int taskId = tasksLaunched++;
- cout << "Starting task " << taskId << " on "
- << offer.hostname() << endl;
+ cout << "Launching task " << taskId << " using offer "
+ << offer.id() << endl;
TaskInfo task;
task.set_name("Task " + lexical_cast<string>(taskId));
@@ -102,22 +97,12 @@ public:
task.mutable_slave_id()->MergeFrom(offer.slave_id());
task.mutable_command()->set_value("echo hello");
- Resource* resource;
-
- resource = task.add_resources();
- resource->set_name("cpus");
- resource->set_type(Value::SCALAR);
- resource->mutable_scalar()->set_value(CPUS_PER_TASK);
-
- resource = task.add_resources();
- resource->set_name("mem");
- resource->set_type(Value::SCALAR);
- resource->mutable_scalar()->set_value(MEM_PER_TASK);
+ Option<Resources> resources = remaining.find(TASK_RESOURCES);
+ CHECK_SOME(resources);
+ task.mutable_resources()->MergeFrom(resources.get());
+ remaining -= resources.get();
tasks.push_back(task);
-
- cpus -= CPUS_PER_TASK;
- mem -= MEM_PER_TASK;
}
driver->launchTasks(offer.id(), tasks);
http://git-wip-us.apache.org/repos/asf/mesos/blob/0cd8d64b/src/examples/python/test_framework.py
----------------------------------------------------------------------
diff --git a/src/examples/python/test_framework.py b/src/examples/python/test_framework.py
index 75ca509..761c04e 100755
--- a/src/examples/python/test_framework.py
+++ b/src/examples/python/test_framework.py
@@ -27,7 +27,7 @@ import mesos.native
TOTAL_TASKS = 5
TASK_CPUS = 1
-TASK_MEM = 32
+TASK_MEM = 128
class TestScheduler(mesos.interface.Scheduler):
def __init__(self, executor):
@@ -42,16 +42,30 @@ class TestScheduler(mesos.interface.Scheduler):
print "Registered with framework ID %s" % frameworkId.value
def resourceOffers(self, driver, offers):
- print "Got %d resource offers" % len(offers)
for offer in offers:
tasks = []
- print "Got resource offer %s" % offer.id.value
- if self.tasksLaunched < TOTAL_TASKS:
+ offerCpus = 0
+ offerMem = 0
+ for resource in offer.resources:
+ if resource.name == "cpus":
+ offerCpus += resource.scalar.value
+ elif resource.name == "mem":
+ offerMem += resource.scalar.value
+
+ print "Received offer %s with cpus: %s and mem: %s" \
+ % (offer.id.value, offerCpus, offerMem)
+
+ remainingCpus = offerCpus
+ remainingMem = offerMem
+
+ while self.tasksLaunched < TOTAL_TASKS and \
+ remainingCpus >= TASK_CPUS and \
+ remainingMem >= TASK_MEM:
tid = self.tasksLaunched
self.tasksLaunched += 1
- print "Accepting offer on %s to start task %d" \
- % (offer.hostname, tid)
+ print "Launching task %d using offer %s" \
+ % (tid, offer.id.value)
task = mesos_pb2.TaskInfo()
task.task_id.value = str(tid)
@@ -72,6 +86,10 @@ class TestScheduler(mesos.interface.Scheduler):
tasks.append(task)
self.taskData[task.task_id.value] = (
offer.slave_id, task.executor.executor_id)
+
+ remainingCpus -= TASK_CPUS
+ remainingMem -= TASK_MEM
+
driver.launchTasks(offer.id, tasks)
def statusUpdate(self, driver, update):
http://git-wip-us.apache.org/repos/asf/mesos/blob/0cd8d64b/src/examples/test_framework.cpp
----------------------------------------------------------------------
diff --git a/src/examples/test_framework.cpp b/src/examples/test_framework.cpp
index e6e7137..e6c0d33 100644
--- a/src/examples/test_framework.cpp
+++ b/src/examples/test_framework.cpp
@@ -33,6 +33,8 @@
#include <stout/os.hpp>
#include <stout/stringify.hpp>
+#include "common/type_utils.hpp"
+
#include "logging/flags.hpp"
using namespace mesos;
@@ -49,7 +51,7 @@ using std::vector;
using mesos::Resources;
const int32_t CPUS_PER_TASK = 1;
-const int32_t MEM_PER_TASK = 32;
+const int32_t MEM_PER_TASK = 128;
class TestScheduler : public Scheduler
{
@@ -77,9 +79,9 @@ public:
virtual void resourceOffers(SchedulerDriver* driver,
const vector<Offer>& offers)
{
- cout << "." << flush;
- for (size_t i = 0; i < offers.size(); i++) {
- const Offer& offer = offers[i];
+ foreach (const Offer& offer, offers) {
+ cout << "Received offer " << offer.id() << " with " << offer.resources()
+ << endl;
static const Resources TASK_RESOURCES = Resources::parse(
"cpus:" + stringify(CPUS_PER_TASK) +
@@ -93,8 +95,8 @@ public:
TASK_RESOURCES <= remaining.flatten()) {
int taskId = tasksLaunched++;
- cout << "Starting task " << taskId << " on "
- << offer.hostname() << endl;
+ cout << "Launching task " << taskId << " using offer "
+ << offer.id() << endl;
TaskInfo task;
task.set_name("Task " + lexical_cast<string>(taskId));
http://git-wip-us.apache.org/repos/asf/mesos/blob/0cd8d64b/src/tests/java_framework_test.sh
----------------------------------------------------------------------
diff --git a/src/tests/java_framework_test.sh b/src/tests/java_framework_test.sh
index 95a05a6..955fd8e 100755
--- a/src/tests/java_framework_test.sh
+++ b/src/tests/java_framework_test.sh
@@ -24,5 +24,8 @@ export MESOS_WORK_DIR=${MESOS_WORK_DIR}
# Set local Mesos runner to use 3 slaves.
export MESOS_NUM_SLAVES=3
+# Set resources for the slave.
+export MESOS_RESOURCES="cpus:2;mem:10240"
+
# Check that the Java test framework executes without crashing (returns 0).
exec $MESOS_BUILD_DIR/src/examples/java/test-framework local
http://git-wip-us.apache.org/repos/asf/mesos/blob/0cd8d64b/src/tests/low_level_scheduler_libprocess_test.sh
----------------------------------------------------------------------
diff --git a/src/tests/low_level_scheduler_libprocess_test.sh b/src/tests/low_level_scheduler_libprocess_test.sh
index eb1736a..7984559 100755
--- a/src/tests/low_level_scheduler_libprocess_test.sh
+++ b/src/tests/low_level_scheduler_libprocess_test.sh
@@ -24,5 +24,8 @@ export MESOS_WORK_DIR=${MESOS_WORK_DIR}
# Set local Mesos runner to use 3 slaves
export MESOS_NUM_SLAVES=3
+# Set resources for the slave.
+export MESOS_RESOURCES="cpus:2;mem:10240"
+
# Check that the C++ low level scheduler executes without crashing (returns 0).
exec ${MESOS_BUILD_DIR}/src/low-level-scheduler-libprocess --master=local
http://git-wip-us.apache.org/repos/asf/mesos/blob/0cd8d64b/src/tests/low_level_scheduler_pthread_test.sh
----------------------------------------------------------------------
diff --git a/src/tests/low_level_scheduler_pthread_test.sh b/src/tests/low_level_scheduler_pthread_test.sh
index 839e8eb..c6e7115 100755
--- a/src/tests/low_level_scheduler_pthread_test.sh
+++ b/src/tests/low_level_scheduler_pthread_test.sh
@@ -24,5 +24,8 @@ export MESOS_WORK_DIR=${MESOS_WORK_DIR}
# Set local Mesos runner to use 3 slaves
export MESOS_NUM_SLAVES=3
+# Set resources for the slave.
+export MESOS_RESOURCES="cpus:2;mem:10240"
+
# Check that the C++ low level scheduler executes without crashing (returns 0).
exec ${MESOS_BUILD_DIR}/src/low-level-scheduler-pthread --master=local
http://git-wip-us.apache.org/repos/asf/mesos/blob/0cd8d64b/src/tests/no_executor_framework_test.sh
----------------------------------------------------------------------
diff --git a/src/tests/no_executor_framework_test.sh b/src/tests/no_executor_framework_test.sh
index e8d72a3..d2d3955 100755
--- a/src/tests/no_executor_framework_test.sh
+++ b/src/tests/no_executor_framework_test.sh
@@ -24,5 +24,8 @@ export MESOS_WORK_DIR=${MESOS_WORK_DIR}
# Set local Mesos runner to use 3 slaves
export MESOS_NUM_SLAVES=3
+# Set resources for the slave.
+export MESOS_RESOURCES="cpus:2;mem:10240"
+
# Check that the C++ test framework executes without crashing (returns 0).
exec ${MESOS_BUILD_DIR}/src/no-executor-framework local
http://git-wip-us.apache.org/repos/asf/mesos/blob/0cd8d64b/src/tests/python_framework_test.sh
----------------------------------------------------------------------
diff --git a/src/tests/python_framework_test.sh b/src/tests/python_framework_test.sh
index a1e36df..2a322da 100755
--- a/src/tests/python_framework_test.sh
+++ b/src/tests/python_framework_test.sh
@@ -24,5 +24,8 @@ export MESOS_WORK_DIR=${MESOS_WORK_DIR}
# Set local Mesos runner to use 3 slaves
export MESOS_NUM_SLAVES=3
+# Set resources for the slave.
+export MESOS_RESOURCES="cpus:2;mem:10240"
+
# Check that the Python test framework executes without crashing (returns 0).
exec $MESOS_BUILD_DIR/src/examples/python/test-framework local
http://git-wip-us.apache.org/repos/asf/mesos/blob/0cd8d64b/src/tests/test_framework_test.sh
----------------------------------------------------------------------
diff --git a/src/tests/test_framework_test.sh b/src/tests/test_framework_test.sh
index 277245d..209e9d8 100755
--- a/src/tests/test_framework_test.sh
+++ b/src/tests/test_framework_test.sh
@@ -24,5 +24,8 @@ export MESOS_WORK_DIR=${MESOS_WORK_DIR}
# Set local Mesos runner to use 3 slaves
export MESOS_NUM_SLAVES=3
+# Set resources for the slave.
+export MESOS_RESOURCES="cpus:2;mem:10240"
+
# Check that the C++ test framework executes without crashing (returns 0).
exec ${MESOS_BUILD_DIR}/src/test-framework --master=local