You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by mz...@apache.org on 2019/03/18 20:54:52 UTC
[mesos] 05/16: Added test for `ResourceQuantities` arithmetic
operations.
This is an automated email from the ASF dual-hosted git repository.
mzhu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git
commit 75b3637445c26e73f130a1566c4d101cda374b2e
Author: Meng Zhu <mz...@mesosphere.io>
AuthorDate: Tue Feb 26 16:52:27 2019 -0800
Added test for `ResourceQuantities` arithmetic operations.
Added tests for `+=` and `-=` operators.
Review: https://reviews.apache.org/r/70063
---
src/tests/resource_quantities_tests.cpp | 97 +++++++++++++++++++++++++++++++++
1 file changed, 97 insertions(+)
diff --git a/src/tests/resource_quantities_tests.cpp b/src/tests/resource_quantities_tests.cpp
index 7e9819d..674785c 100644
--- a/src/tests/resource_quantities_tests.cpp
+++ b/src/tests/resource_quantities_tests.cpp
@@ -148,6 +148,103 @@ TEST(QuantitiesTest, FromScalarResources)
}
+TEST(QuantitiesTest, Addition)
+{
+ // Empty quantity:
+ // "cpus:10" + [ ] = "cpus:10"
+ ResourceQuantities quantities =
+ CHECK_NOTERROR(ResourceQuantities::fromString("cpus:10"));
+ quantities += ResourceQuantities();
+ vector<pair<string, double>> expected = {{"cpus", 10}};
+ EXPECT_EQ(expected, toVector(quantities));
+
+ // Same name entries:
+ // "cpus:10" + "cpus:0.1" = "cpus:10.1"
+ quantities = CHECK_NOTERROR(ResourceQuantities::fromString("cpus:10"));
+ quantities += CHECK_NOTERROR(ResourceQuantities::fromString("cpus:0.1"));
+ expected = {{"cpus", 10.1}};
+ EXPECT_EQ(expected, toVector(quantities));
+
+ // Different name entries, insert at head:
+ // "cpus:10.1" + "alphas:1" = "alphas:1;cpus:10.1"
+ quantities = CHECK_NOTERROR(ResourceQuantities::fromString("cpus:10.1"));
+ quantities += CHECK_NOTERROR(ResourceQuantities::fromString("alphas:1"));
+ expected = {{"alphas", 1}, {"cpus", 10.1}};
+ EXPECT_EQ(expected, toVector(quantities));
+
+ // Different name entries, insert at tail:
+ // "cpus:10.1" + "mem:1" = "cpus:10.1;mem:1"
+ quantities = CHECK_NOTERROR(ResourceQuantities::fromString("cpus:10.1"));
+ quantities += CHECK_NOTERROR(ResourceQuantities::fromString("mem:1"));
+ expected = {{"cpus", 10.1}, {"mem", 1}};
+ EXPECT_EQ(expected, toVector(quantities));
+
+ // Mixed: "alphas:1;cpus:10.1" + "cpus:1;mem:100" =
+ // "alphas:1;cpus:11.1;mem:100"
+ quantities =
+ CHECK_NOTERROR(ResourceQuantities::fromString("alphas:1;cpus:10.1"));
+ quantities +=
+ CHECK_NOTERROR(ResourceQuantities::fromString("cpus:1;mem:100"));
+ expected = {{"alphas", 1}, {"cpus", 11.1}, {"mem", 100}};
+ EXPECT_EQ(expected, toVector(quantities));
+}
+
+TEST(QuantitiesTest, Subtraction)
+{
+ // Empty subtrahend:
+ // [ ] - "cpus:1" = [ ]
+ ResourceQuantities quantities{};
+ quantities -= CHECK_NOTERROR(ResourceQuantities::fromString("cpus:1"));
+ EXPECT_EQ(0u, quantities.size());
+
+ // Empty minuend:
+ // "cpus:1" - [ ] = "cpus:1"
+ quantities = CHECK_NOTERROR(ResourceQuantities::fromString("cpus:1"));
+ quantities -= ResourceQuantities();
+ vector<pair<string, double>> expected = {{"cpus", 1}};
+ EXPECT_EQ(expected, toVector(quantities));
+
+ // Same name entry, positive result is retained:
+ // "cpus:1" - "cpus:0.4" = "cpus:0.6"
+ quantities = CHECK_NOTERROR(ResourceQuantities::fromString("cpus:1"));
+ quantities -= CHECK_NOTERROR(ResourceQuantities::fromString("cpus:0.4"));
+ expected = {{"cpus", 0.6}};
+ EXPECT_EQ(expected, toVector(quantities));
+
+ // Same name entry, zero is dropped:
+ // "cpus:1" - "cpus:1" = [ ]
+ quantities = CHECK_NOTERROR(ResourceQuantities::fromString("cpus:1"));
+ quantities -= CHECK_NOTERROR(ResourceQuantities::fromString("cpus:1"));
+ EXPECT_EQ(0u, quantities.size());
+
+ // Same name entry, negative entry is dropped:
+ // "cpus:1" - "cpus:1.4" = [ ]
+ quantities = CHECK_NOTERROR(ResourceQuantities::fromString("cpus:1"));
+ quantities -= CHECK_NOTERROR(ResourceQuantities::fromString("cpus:1.4"));
+ EXPECT_EQ(0u, quantities.size());
+
+ // Different name entry:
+ // "cpus:1" - "mem:100" = "cpus:1"
+ quantities = CHECK_NOTERROR(ResourceQuantities::fromString("cpus:1"));
+ quantities -= CHECK_NOTERROR(ResourceQuantities::fromString("mem:100"));
+ expected = {{"cpus", 1}};
+ EXPECT_EQ(expected, toVector(quantities));
+
+ // "cpus:1" - "alphas:1" = "cpus:1"
+ quantities = CHECK_NOTERROR(ResourceQuantities::fromString("cpus:1"));
+ quantities -= CHECK_NOTERROR(ResourceQuantities::fromString("alphas:1"));
+ expected = {{"cpus", 1}};
+ EXPECT_EQ(expected, toVector(quantities));
+
+ // Mixed: "cpus:1;mem:100" - "alphas:1;cpus:0.5" = "cpus:0.5;mem:100"
+ quantities = CHECK_NOTERROR(ResourceQuantities::fromString("cpus:1;mem:100"));
+ quantities -=
+ CHECK_NOTERROR(ResourceQuantities::fromString("alphas:1;cpus:0.5"));
+ expected = {{"cpus", 0.5}, {"mem", 100}};
+ EXPECT_EQ(expected, toVector(quantities));
+}
+
+
} // namespace tests {
} // namespace internal {
} // namespace mesos {