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 2015/06/04 18:45:26 UTC

[2/2] mesos git commit: Added tests for the new qdisc statistics functions.

Added tests for the new qdisc statistics functions.

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


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

Branch: refs/heads/master
Commit: 9d977730705feb15bcfbbaa14506db97ff91d9bb
Parents: d431f04
Author: Paul Brett <pa...@twopensource.com>
Authored: Thu Jun 4 09:39:34 2015 -0700
Committer: Jie Yu <yu...@gmail.com>
Committed: Thu Jun 4 09:39:35 2015 -0700

----------------------------------------------------------------------
 src/tests/routing_tests.cpp | 42 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/9d977730/src/tests/routing_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/routing_tests.cpp b/src/tests/routing_tests.cpp
index 687c2fd..96be25f 100644
--- a/src/tests/routing_tests.cpp
+++ b/src/tests/routing_tests.cpp
@@ -52,6 +52,7 @@
 
 #include "linux/routing/queueing/fq_codel.hpp"
 #include "linux/routing/queueing/ingress.hpp"
+#include "linux/routing/queueing/statistics.hpp"
 
 using namespace process;
 
@@ -429,6 +430,10 @@ TEST_F(RoutingVethTest, ROOT_IngressQdisc)
   EXPECT_SOME_FALSE(ingress::exists(TEST_VETH_LINK));
   EXPECT_SOME_FALSE(ingress::exists(TEST_PEER_LINK));
 
+  // Interfaces without qdisc established no data.
+  EXPECT_NONE(ingress::statistics(TEST_VETH_LINK));
+  EXPECT_NONE(ingress::statistics(TEST_PEER_LINK));
+
   // Try to create an ingress filter on an non-existant interface.
   EXPECT_ERROR(ingress::create("noSuchInterface"));
 
@@ -439,6 +444,22 @@ TEST_F(RoutingVethTest, ROOT_IngressQdisc)
   EXPECT_SOME_TRUE(ingress::exists(TEST_VETH_LINK));
   EXPECT_SOME_FALSE(ingress::exists(TEST_PEER_LINK));
 
+  // Interfaces which exist return at least the core statisitcs.
+  Result<hashmap<string, uint64_t>> stats = ingress::statistics(TEST_VETH_LINK);
+  ASSERT_SOME(stats);
+  EXPECT_TRUE(stats.get().contains(statistics::PACKETS));
+  EXPECT_TRUE(stats.get().contains(statistics::BYTES));
+  EXPECT_TRUE(stats.get().contains(statistics::RATE_BPS));
+  EXPECT_TRUE(stats.get().contains(statistics::RATE_PPS));
+  EXPECT_TRUE(stats.get().contains(statistics::QLEN));
+  EXPECT_TRUE(stats.get().contains(statistics::BACKLOG));
+  EXPECT_TRUE(stats.get().contains(statistics::DROPS));
+  EXPECT_TRUE(stats.get().contains(statistics::REQUEUES));
+  EXPECT_TRUE(stats.get().contains(statistics::OVERLIMITS));
+
+  // Interface without qdisc returns no data.
+  EXPECT_NONE(ingress::statistics(TEST_PEER_LINK));
+
   // Try to create a second ingress filter on an existing interface.
   EXPECT_SOME_FALSE(ingress::create(TEST_VETH_LINK));
   EXPECT_SOME_TRUE(ingress::exists(TEST_VETH_LINK));
@@ -473,6 +494,10 @@ TEST_F(RoutingVethTest, ROOT_FqCodeQdisc)
   EXPECT_SOME_FALSE(fq_codel::exists(TEST_VETH_LINK));
   EXPECT_SOME_FALSE(fq_codel::exists(TEST_PEER_LINK));
 
+  // Interfaces without qdisc established no data.
+  EXPECT_NONE(fq_codel::statistics(TEST_VETH_LINK));
+  EXPECT_NONE(fq_codel::statistics(TEST_PEER_LINK));
+
   // Try to create an fq_codel filter on an non-existant interface.
   EXPECT_ERROR(fq_codel::create("noSuchInterface"));
 
@@ -483,6 +508,23 @@ TEST_F(RoutingVethTest, ROOT_FqCodeQdisc)
   EXPECT_SOME_TRUE(fq_codel::exists(TEST_VETH_LINK));
   EXPECT_SOME_FALSE(fq_codel::exists(TEST_PEER_LINK));
 
+  // Interfaces which exist return at least the core statisitcs.
+  Result<hashmap<string, uint64_t>> stats =
+      fq_codel::statistics(TEST_VETH_LINK);
+  ASSERT_SOME(stats);
+  EXPECT_TRUE(stats.get().contains(statistics::PACKETS));
+  EXPECT_TRUE(stats.get().contains(statistics::BYTES));
+  EXPECT_TRUE(stats.get().contains(statistics::RATE_BPS));
+  EXPECT_TRUE(stats.get().contains(statistics::RATE_PPS));
+  EXPECT_TRUE(stats.get().contains(statistics::QLEN));
+  EXPECT_TRUE(stats.get().contains(statistics::BACKLOG));
+  EXPECT_TRUE(stats.get().contains(statistics::DROPS));
+  EXPECT_TRUE(stats.get().contains(statistics::REQUEUES));
+  EXPECT_TRUE(stats.get().contains(statistics::OVERLIMITS));
+
+  // Interface without qdisc returns no data.
+  EXPECT_NONE(fq_codel::statistics(TEST_PEER_LINK));
+
   // Try to create a second fq_codel filter on an existing interface.
   EXPECT_SOME_FALSE(fq_codel::create(TEST_VETH_LINK));
   EXPECT_SOME_TRUE(fq_codel::exists(TEST_VETH_LINK));