You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ji...@apache.org on 2014/11/19 09:54:11 UTC

[6/9] mesos git commit: Replaced <= with contains() in C++ Resources.

Replaced <= with contains() in C++ Resources.

Review: https://reviews.apache.org/r/28094


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/5fbc6264
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/5fbc6264
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/5fbc6264

Branch: refs/heads/master
Commit: 5fbc6264aab8370925793aecb29d6d1f54d37cba
Parents: 7fa0217
Author: Jie Yu <yu...@gmail.com>
Authored: Fri Nov 14 22:33:28 2014 -0800
Committer: Jie Yu <yu...@gmail.com>
Committed: Wed Nov 19 00:14:26 2014 -0800

----------------------------------------------------------------------
 include/mesos/resources.hpp                     |  5 ++-
 src/cli/execute.cpp                             |  3 +-
 src/common/resources.cpp                        | 36 ++++++++----------
 src/examples/low_level_scheduler_libprocess.cpp |  2 +-
 src/examples/low_level_scheduler_pthread.cpp    |  2 +-
 src/examples/no_executor_framework.cpp          |  2 +-
 src/examples/test_framework.cpp                 |  2 +-
 src/master/hierarchical_allocator_process.hpp   |  6 +--
 src/master/master.cpp                           |  2 +-
 src/tests/mesos.hpp                             |  3 +-
 src/tests/resources_tests.cpp                   | 40 ++++++++++----------
 src/tests/slave_recovery_tests.cpp              |  5 ++-
 12 files changed, 53 insertions(+), 55 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/5fbc6264/include/mesos/resources.hpp
----------------------------------------------------------------------
diff --git a/include/mesos/resources.hpp b/include/mesos/resources.hpp
index 13a81e2..10777a6 100644
--- a/include/mesos/resources.hpp
+++ b/include/mesos/resources.hpp
@@ -104,6 +104,9 @@ public:
 
   bool empty() const { return resources.size() == 0; }
 
+  // Checks if this Resources is a superset of the given Resources.
+  bool contains(const Resources& that) const;
+
   // Returns all resources in this object that are marked with the
   // specified role.
   Resources extract(const std::string& role) const;
@@ -162,8 +165,6 @@ public:
   bool operator == (const Resources& that) const;
   bool operator != (const Resources& that) const;
 
-  bool operator <= (const Resources& that) const;
-
   // NOTE: If any error occurs (e.g., input Resource is not valid or
   // the first operand is not a superset of the second oprand while
   // doing subtraction), the semantics is as though the second operand

http://git-wip-us.apache.org/repos/asf/mesos/blob/5fbc6264/src/cli/execute.cpp
----------------------------------------------------------------------
diff --git a/src/cli/execute.cpp b/src/cli/execute.cpp
index ddaa20d..77deec9 100644
--- a/src/cli/execute.cpp
+++ b/src/cli/execute.cpp
@@ -170,7 +170,8 @@ public:
     }
 
     foreach (const Offer& offer, offers) {
-      if (!launched && TASK_RESOURCES.get() <= offer.resources()) {
+      if (!launched &&
+          Resources(offer.resources()).contains(TASK_RESOURCES.get())) {
         TaskInfo task;
         task.set_name(name);
         task.mutable_task_id()->set_value(name);

http://git-wip-us.apache.org/repos/asf/mesos/blob/5fbc6264/src/common/resources.cpp
----------------------------------------------------------------------
diff --git a/src/common/resources.cpp b/src/common/resources.cpp
index 3a3c6a6..23fd6a3 100644
--- a/src/common/resources.cpp
+++ b/src/common/resources.cpp
@@ -113,12 +113,6 @@ bool operator != (const Resource& left, const Resource& right)
 }
 
 
-bool operator <= (const Resource& left, const Resource& right)
-{
-  return contains(right, left);
-}
-
-
 Resource& operator += (Resource& left, const Resource& right)
 {
   // TODO(jieyu): Leverage += for Value to avoid copying.
@@ -372,6 +366,18 @@ Resources::Resources(
 }
 
 
+bool Resources::contains(const Resources& that) const
+{
+  foreach (const Resource& resource, that.resources) {
+    if (!contains(resource)) {
+      return false;
+    }
+  }
+
+  return true;
+}
+
+
 Resources Resources::extract(const string& role) const
 {
   Resources r;
@@ -436,10 +442,10 @@ Option<Resources> Resources::find(const Resource& target) const
       // Need to flatten to ignore the roles in contains().
       Resources flattened = Resources(resource).flatten();
 
-      if (remaining <= flattened) {
+      if (flattened.contains(remaining)) {
         // Done!
         return found + remaining.flatten(resource.role());
-      } else if (flattened <= remaining) {
+      } else if (remaining.contains(flattened)) {
         found += resource;
         total -= resource;
         remaining -= flattened;
@@ -617,7 +623,7 @@ Resources::operator const google::protobuf::RepeatedPtrField<Resource>& () const
 
 bool Resources::operator == (const Resources& that) const
 {
-  return *this <= that && that <= *this;
+  return this->contains(that) && that.contains(*this);
 }
 
 
@@ -627,18 +633,6 @@ bool Resources::operator != (const Resources& that) const
 }
 
 
-bool Resources::operator <= (const Resources& that) const
-{
-  foreach (const Resource& resource, resources) {
-    if (!that.contains(resource)) {
-      return false;
-    }
-  }
-
-  return true;
-}
-
-
 Resources Resources::operator + (const Resource& that) const
 {
   Resources result = *this;

http://git-wip-us.apache.org/repos/asf/mesos/blob/5fbc6264/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 7229797..e5267f7 100644
--- a/src/examples/low_level_scheduler_libprocess.cpp
+++ b/src/examples/low_level_scheduler_libprocess.cpp
@@ -224,7 +224,7 @@ private:
       // Launch tasks.
       vector<TaskInfo> tasks;
       while (tasksLaunched < totalTasks &&
-             TASK_RESOURCES <= remaining.flatten()) {
+             remaining.flatten().contains(TASK_RESOURCES)) {
         int taskId = tasksLaunched++;
 
         cout << "Launching task " << taskId << " using offer "

http://git-wip-us.apache.org/repos/asf/mesos/blob/5fbc6264/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 2b012a8..4f9a594 100644
--- a/src/examples/low_level_scheduler_pthread.cpp
+++ b/src/examples/low_level_scheduler_pthread.cpp
@@ -275,7 +275,7 @@ private:
       // Launch tasks.
       vector<TaskInfo> tasks;
       while (tasksLaunched < totalTasks &&
-             TASK_RESOURCES <= remaining.flatten()) {
+             remaining.flatten().contains(TASK_RESOURCES)) {
         int taskId = tasksLaunched++;
 
         cout << "Launching task " << taskId << " using offer "

http://git-wip-us.apache.org/repos/asf/mesos/blob/5fbc6264/src/examples/no_executor_framework.cpp
----------------------------------------------------------------------
diff --git a/src/examples/no_executor_framework.cpp b/src/examples/no_executor_framework.cpp
index 9c84e03..5e47cfc 100644
--- a/src/examples/no_executor_framework.cpp
+++ b/src/examples/no_executor_framework.cpp
@@ -85,7 +85,7 @@ public:
       // Launch tasks.
       vector<TaskInfo> tasks;
       while (tasksLaunched < totalTasks &&
-             TASK_RESOURCES <= remaining.flatten()) {
+             remaining.flatten().contains(TASK_RESOURCES)) {
         int taskId = tasksLaunched++;
 
         cout << "Launching task " << taskId << " using offer "

http://git-wip-us.apache.org/repos/asf/mesos/blob/5fbc6264/src/examples/test_framework.cpp
----------------------------------------------------------------------
diff --git a/src/examples/test_framework.cpp b/src/examples/test_framework.cpp
index ce1616d..e5ec3b9 100644
--- a/src/examples/test_framework.cpp
+++ b/src/examples/test_framework.cpp
@@ -92,7 +92,7 @@ public:
       // Launch tasks.
       vector<TaskInfo> tasks;
       while (tasksLaunched < totalTasks &&
-             TASK_RESOURCES <= remaining.flatten()) {
+             remaining.flatten().contains(TASK_RESOURCES)) {
         int taskId = tasksLaunched++;
 
         cout << "Launching task " << taskId << " using offer "

http://git-wip-us.apache.org/repos/asf/mesos/blob/5fbc6264/src/master/hierarchical_allocator_process.hpp
----------------------------------------------------------------------
diff --git a/src/master/hierarchical_allocator_process.hpp b/src/master/hierarchical_allocator_process.hpp
index 45d45b8..e631b60 100644
--- a/src/master/hierarchical_allocator_process.hpp
+++ b/src/master/hierarchical_allocator_process.hpp
@@ -246,10 +246,10 @@ public:
       const process::Timeout& _timeout)
     : slaveId(_slaveId), resources(_resources), timeout(_timeout) {}
 
-  virtual bool filter(const SlaveID& slaveId, const Resources& resources)
+  virtual bool filter(const SlaveID& _slaveId, const Resources& _resources)
   {
-    return slaveId == this->slaveId &&
-           resources <= this->resources && // Refused resources are superset.
+    return slaveId == _slaveId &&
+           resources.contains(_resources) && // Refused resources are superset.
            timeout.remaining() > Seconds(0);
   }
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/5fbc6264/src/master/master.cpp
----------------------------------------------------------------------
diff --git a/src/master/master.cpp b/src/master/master.cpp
index 7ab25b3..de42f8e 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -2026,7 +2026,7 @@ struct ResourceUsageChecker : TaskInfoVisitor
       resources += task.executor().resources();
     }
 
-    if (!(resources + usedResources <= totalResources)) {
+    if (!totalResources.contains(resources + usedResources)) {
       return Error(
           "Task uses more resources " + stringify(resources) +
           " than available " + stringify(totalResources - usedResources));

http://git-wip-us.apache.org/repos/asf/mesos/blob/5fbc6264/src/tests/mesos.hpp
----------------------------------------------------------------------
diff --git a/src/tests/mesos.hpp b/src/tests/mesos.hpp
index 0a5e8ec..f132c6c 100644
--- a/src/tests/mesos.hpp
+++ b/src/tests/mesos.hpp
@@ -406,7 +406,8 @@ ACTION_P5(LaunchTasks, executor, tasks, cpus, mem, role)
     std::vector<TaskInfo> tasks;
     Resources remaining = offer.resources();
 
-    while (TASK_RESOURCES <= remaining.flatten() && launched < numTasks) {
+    while (remaining.flatten().contains(TASK_RESOURCES) &&
+           launched < numTasks) {
       TaskInfo task;
       task.set_name("TestTask");
       task.mutable_task_id()->set_value(stringify(nextTaskId++));

http://git-wip-us.apache.org/repos/asf/mesos/blob/5fbc6264/src/tests/resources_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/resources_tests.cpp b/src/tests/resources_tests.cpp
index c0486f4..73f50ba 100644
--- a/src/tests/resources_tests.cpp
+++ b/src/tests/resources_tests.cpp
@@ -243,8 +243,8 @@ TEST(ResourcesTest, ScalarSubset)
   r2 += cpus2;
   r2 += mem2;
 
-  EXPECT_TRUE(r1 <= r2);
-  EXPECT_FALSE(r2 <= r1);
+  EXPECT_TRUE(r2.contains(r1));
+  EXPECT_FALSE(r1.contains(r2));
 }
 
 
@@ -259,18 +259,18 @@ TEST(ResourcesTest, ScalarSubset2)
   Resources r2;
   r2 += cpus2;
 
-  EXPECT_FALSE(r1 <= r2);
-  EXPECT_FALSE(r2 <= r1);
+  EXPECT_FALSE(r2.contains(r1));
+  EXPECT_FALSE(r1.contains(r2));
 
   Resource cpus3 = Resources::parse("cpus", "3", "role1").get();
 
   Resources r3;
   r3 += cpus3;
 
-  EXPECT_FALSE(r3 <= r1);
-  EXPECT_FALSE(r3 <= r2);
-  EXPECT_FALSE(r2 <= r3);
-  EXPECT_LE(r1, r3);
+  EXPECT_FALSE(r1.contains(r3));
+  EXPECT_FALSE(r2.contains(r3));
+  EXPECT_FALSE(r3.contains(r2));
+  EXPECT_TRUE(r3.contains(r1));
 }
 
 
@@ -429,16 +429,16 @@ TEST(ResourcesTest, RangesSubset)
   Resources r5;
   r5 += ports5;
 
-  EXPECT_TRUE(r1 <= r2);
-  EXPECT_FALSE(r2 <= r1);
-  EXPECT_FALSE(r1 <= r3);
-  EXPECT_FALSE(r3 <= r1);
-  EXPECT_TRUE(r3 <= r2);
-  EXPECT_FALSE(r2 <= r3);
-  EXPECT_TRUE(r1 <= r4);
-  EXPECT_TRUE(r4 <= r2);
-  EXPECT_TRUE(r1 <= r5);
-  EXPECT_FALSE(r5 <= r1);
+  EXPECT_TRUE(r2.contains(r1));
+  EXPECT_FALSE(r1.contains(r2));
+  EXPECT_FALSE(r3.contains(r1));
+  EXPECT_FALSE(r1.contains(r3));
+  EXPECT_TRUE(r2.contains(r3));
+  EXPECT_FALSE(r3.contains(r2));
+  EXPECT_TRUE(r4.contains(r1));
+  EXPECT_TRUE(r2.contains(r4));
+  EXPECT_TRUE(r5.contains(r1));
+  EXPECT_FALSE(r1.contains(r5));
 }
 
 
@@ -687,8 +687,8 @@ TEST(ResourcesTest, SetSubset)
 
   EXPECT_FALSE(r1.empty());
   EXPECT_FALSE(r2.empty());
-  EXPECT_TRUE(r1 <= r2);
-  EXPECT_FALSE(r2 <= r1);
+  EXPECT_TRUE(r2.contains(r1));
+  EXPECT_FALSE(r1.contains(r2));
 }
 
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/5fbc6264/src/tests/slave_recovery_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/slave_recovery_tests.cpp b/src/tests/slave_recovery_tests.cpp
index 98e059f..782f57a 100644
--- a/src/tests/slave_recovery_tests.cpp
+++ b/src/tests/slave_recovery_tests.cpp
@@ -1061,8 +1061,9 @@ TYPED_TEST(SlaveRecoveryTest, RemoveNonCheckpointingFramework)
       Resources::parse("cpus:1;mem:512").get());
   tasks.push_back(createTask(offer2, "sleep 1000")); // Long-running task,
 
-  ASSERT_LE(Resources(offer1.resources()) + Resources(offer2.resources()),
-            Resources(offer.resources()));
+  ASSERT_TRUE(Resources(offer.resources()).contains(
+        Resources(offer1.resources()) +
+        Resources(offer2.resources())));
 
   Future<Nothing> update1;
   Future<Nothing> update2;