You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by bm...@apache.org on 2013/03/29 00:20:36 UTC

svn commit: r1462347 - /incubator/mesos/trunk/third_party/libprocess/src/tests/statistics_tests.cpp

Author: bmahler
Date: Thu Mar 28 23:20:36 2013
New Revision: 1462347

URL: http://svn.apache.org/r1462347
Log:
Fixed Statistics.archive test flakiness by adding a call to
Clock::settle.

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

Modified:
    incubator/mesos/trunk/third_party/libprocess/src/tests/statistics_tests.cpp

Modified: incubator/mesos/trunk/third_party/libprocess/src/tests/statistics_tests.cpp
URL: http://svn.apache.org/viewvc/incubator/mesos/trunk/third_party/libprocess/src/tests/statistics_tests.cpp?rev=1462347&r1=1462346&r2=1462347&view=diff
==============================================================================
--- incubator/mesos/trunk/third_party/libprocess/src/tests/statistics_tests.cpp (original)
+++ incubator/mesos/trunk/third_party/libprocess/src/tests/statistics_tests.cpp Thu Mar 28 23:20:36 2013
@@ -4,6 +4,7 @@
 
 #include <process/clock.hpp>
 #include <process/future.hpp>
+#include <process/gtest.hpp>
 #include <process/statistics.hpp>
 
 #include <stout/duration.hpp>
@@ -27,9 +28,8 @@ TEST(Statistics, set)
   Future<map<Seconds, double> > values =
     statistics.timeseries("test", "statistic");
 
-  values.await();
+  ASSERT_FUTURE_WILL_SUCCEED(values);
 
-  ASSERT_TRUE(values.isReady());
   EXPECT_EQ(2, values.get().size());
 
   EXPECT_GE(Clock::now(), values.get().begin()->first.secs());
@@ -51,22 +51,21 @@ TEST(Statistics, truncate)
   Future<map<Seconds, double> > values =
     statistics.timeseries("test", "statistic");
 
-  values.await();
+  ASSERT_FUTURE_WILL_SUCCEED(values);
 
-  ASSERT_TRUE(values.isReady());
   EXPECT_EQ(1, values.get().size());
   EXPECT_GE(Clock::now(), values.get().begin()->first.secs());
   EXPECT_DOUBLE_EQ(3.0, values.get().begin()->second);
 
-  Clock::advance((60*60*24) + 1);
+  Clock::advance(Days(1).secs() + 1);
+  Clock::settle();
 
   statistics.increment("test", "statistic");
 
   values = statistics.timeseries("test", "statistic");
 
-  values.await();
+  ASSERT_FUTURE_WILL_SUCCEED(values);
 
-  ASSERT_TRUE(values.isReady());
   EXPECT_EQ(1, values.get().size());
   EXPECT_GE(Clock::now(), values.get().begin()->first.secs());
   EXPECT_DOUBLE_EQ(4.0, values.get().begin()->second);
@@ -82,9 +81,8 @@ TEST(Statistics, meter) {
   Future<Try<Nothing> > meter =
     statistics.meter("test", "statistic", new meters::TimeRate("metered"));
 
-  meter.await();
+  ASSERT_FUTURE_WILL_SUCCEED(meter);
 
-  ASSERT_TRUE(meter.isReady());
   ASSERT_TRUE(meter.get().isSome());
 
   Seconds now(Clock::now());
@@ -96,9 +94,8 @@ TEST(Statistics, meter) {
   Future<map<Seconds, double> > values =
     statistics.timeseries("test", "statistic");
 
-  values.await();
+  ASSERT_FUTURE_WILL_SUCCEED(values);
 
-  ASSERT_TRUE(values.isReady());
   EXPECT_EQ(3, values.get().size());
   EXPECT_EQ(1, values.get().count(now));
   EXPECT_EQ(1, values.get().count(Seconds(now.secs() + 1.0)));
@@ -111,9 +108,8 @@ TEST(Statistics, meter) {
   // Now check the metered values.
   values = statistics.timeseries("test", "metered");
 
-  values.await();
+  ASSERT_FUTURE_WILL_SUCCEED(values);
 
-  ASSERT_TRUE(values.isReady());
   EXPECT_EQ(2, values.get().size());
   EXPECT_EQ(1, values.get().count(Seconds(now.secs() + 1.0)));
   EXPECT_EQ(1, values.get().count(Seconds(now.secs() + 2.0)));
@@ -135,9 +131,8 @@ TEST(Statistics, archive)
   Future<Try<Nothing> > meter =
     statistics.meter("test", "statistic", new meters::TimeRate("metered"));
 
-  meter.await();
+  ASSERT_FUTURE_WILL_SUCCEED(meter);
 
-  ASSERT_TRUE(meter.isReady());
   ASSERT_TRUE(meter.get().isSome());
 
   Seconds now(Clock::now());
@@ -155,37 +150,33 @@ TEST(Statistics, archive)
   // Ensure the raw time series is present.
   Future<map<Seconds, double> > values =
     statistics.timeseries("test", "statistic");
-  values.await();
-  ASSERT_TRUE(values.isReady());
+  ASSERT_FUTURE_WILL_SUCCEED(values);
   EXPECT_FALSE(values.get().empty());
 
   // Ensure the metered timeseries is present.
   values = statistics.timeseries("test", "metered");
-  values.await();
-  ASSERT_TRUE(values.isReady());
+  ASSERT_FUTURE_WILL_SUCCEED(values);
   EXPECT_FALSE(values.get().empty());
 
   // Expire the window and ensure the statistics were removed.
-  Clock::advance(STATISTICS_TRUNCATION_INTERVAL.secs() + 1);
+  Clock::advance(STATISTICS_TRUNCATION_INTERVAL.secs());
+  Clock::settle();
 
   // Ensure the raw statistics are gone.
   values = statistics.timeseries("test", "statistic");
-  values.await();
-  ASSERT_TRUE(values.isReady());
+  ASSERT_FUTURE_WILL_SUCCEED(values);
   EXPECT_TRUE(values.get().empty());
 
   // Ensure the metered statistics are gone.
   values = statistics.timeseries("test", "metered");
-  values.await();
-  ASSERT_TRUE(values.isReady());
+  ASSERT_FUTURE_WILL_SUCCEED(values);
   EXPECT_TRUE(values.get().empty());
 
   // Reactivate the statistic, and make sure the meter is still missing.
   statistics.set("test", "statistic", 1.0, now);
 
   values = statistics.timeseries("test", "metered");
-  values.await();
-  ASSERT_TRUE(values.isReady());
+  ASSERT_FUTURE_WILL_SUCCEED(values);
   EXPECT_TRUE(values.get().empty());
 
   Clock::resume();