Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(231)

Unified Diff: webrtc/base/profiler_unittest.cc

Issue 2392613003: Switched flaky ProfilerTest to use fake clock (Closed)
Patch Set: Replaced approximate comparisons with exact ones Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/base/profiler_unittest.cc
diff --git a/webrtc/base/profiler_unittest.cc b/webrtc/base/profiler_unittest.cc
index 2448fce2de62e52f3ce569d96eae5ea5aed9ada9..6fd4b5925e3bf67122858695d26987dfb35b432b 100644
--- a/webrtc/base/profiler_unittest.cc
+++ b/webrtc/base/profiler_unittest.cc
@@ -8,19 +8,20 @@
* be found in the AUTHORS file in the root of the source tree.
*/
+#include "webrtc/base/fakeclock.h"
#include "webrtc/base/gunit.h"
#include "webrtc/base/profiler.h"
+#include "webrtc/base/timedelta.h"
#include "webrtc/base/thread.h"
namespace {
const int kWaitMs = 250;
const double kWaitSec = 0.250;
-const double kTolerance = 0.1;
-const char* TestFunc() {
+const char* TestFunc(rtc::FakeClock* clock) {
PROFILE_F();
- rtc::Thread::SleepMs(kWaitMs);
+ clock->AdvanceTime(rtc::TimeDelta::FromMilliseconds(kWaitMs));
return __FUNCTION__;
}
@@ -28,33 +29,29 @@ const char* TestFunc() {
namespace rtc {
-// Disable this test due to flakiness; see bug 5947.
-#if defined(WEBRTC_LINUX)
-#define MAYBE_TestFunction DISABLED_TestFunction
-#else
-#define MAYBE_TestFunction TestFunction
-#endif
-TEST(ProfilerTest, MAYBE_TestFunction) {
+TEST(ProfilerTest, TestFunction) {
+ rtc::ScopedFakeClock fake_clock;
ASSERT_TRUE(Profiler::Instance()->Clear());
// Profile a long-running function.
- const char* function_name = TestFunc();
+ const char* function_name = TestFunc(&fake_clock);
const ProfilerEvent* event = Profiler::Instance()->GetEvent(function_name);
ASSERT_TRUE(event != NULL);
EXPECT_FALSE(event->is_started());
EXPECT_EQ(1, event->event_count());
- EXPECT_NEAR(kWaitSec, event->mean(), kTolerance * 3);
+ EXPECT_EQ(kWaitSec, event->mean());
// Run it a second time.
- TestFunc();
+ TestFunc(&fake_clock);
EXPECT_FALSE(event->is_started());
EXPECT_EQ(2, event->event_count());
- EXPECT_NEAR(kWaitSec, event->mean(), kTolerance);
- EXPECT_NEAR(kWaitSec * 2, event->total_time(), kTolerance * 2);
+ EXPECT_EQ(kWaitSec, event->mean());
+ EXPECT_EQ(kWaitSec * 2, event->total_time());
EXPECT_DOUBLE_EQ(event->mean(), event->total_time() / event->event_count());
}
TEST(ProfilerTest, TestScopedEvents) {
+ rtc::ScopedFakeClock fake_clock;
const std::string kEvent1Name = "Event 1";
const std::string kEvent2Name = "Event 2";
const int kEvent2WaitMs = 150;
@@ -68,40 +65,39 @@ TEST(ProfilerTest, TestScopedEvents) {
ASSERT_TRUE(event1 != NULL);
EXPECT_TRUE(event1->is_started());
EXPECT_EQ(0, event1->event_count());
- rtc::Thread::SleepMs(kWaitMs);
+ fake_clock.AdvanceTime(rtc::TimeDelta::FromMilliseconds(kWaitMs));
EXPECT_TRUE(event1->is_started());
}
// Check the result.
EXPECT_FALSE(event1->is_started());
EXPECT_EQ(1, event1->event_count());
- EXPECT_NEAR(kWaitSec, event1->mean(), kTolerance);
+ EXPECT_EQ(kWaitSec, event1->mean());
{ // Profile a second event.
PROFILE(kEvent2Name);
event2 = Profiler::Instance()->GetEvent(kEvent2Name);
ASSERT_TRUE(event2 != NULL);
EXPECT_FALSE(event1->is_started());
EXPECT_TRUE(event2->is_started());
- rtc::Thread::SleepMs(kEvent2WaitMs);
+ fake_clock.AdvanceTime(rtc::TimeDelta::FromMilliseconds(kEvent2WaitMs));
}
// Check the result.
EXPECT_FALSE(event2->is_started());
EXPECT_EQ(1, event2->event_count());
- // The difference here can be as much as 0.33, so we need high tolerance.
- EXPECT_NEAR(kEvent2WaitSec, event2->mean(), kTolerance * 4);
+ EXPECT_EQ(kEvent2WaitSec, event2->mean());
// Make sure event1 is unchanged.
EXPECT_FALSE(event1->is_started());
EXPECT_EQ(1, event1->event_count());
{ // Run another event 1.
PROFILE(kEvent1Name);
EXPECT_TRUE(event1->is_started());
- rtc::Thread::SleepMs(kWaitMs);
+ fake_clock.AdvanceTime(rtc::TimeDelta::FromMilliseconds(kWaitMs));
}
// Check the result.
EXPECT_FALSE(event1->is_started());
EXPECT_EQ(2, event1->event_count());
- EXPECT_NEAR(kWaitSec, event1->mean(), kTolerance);
- EXPECT_NEAR(kWaitSec * 2, event1->total_time(), kTolerance * 2);
+ EXPECT_EQ(kWaitSec, event1->mean());
+ EXPECT_EQ(kWaitSec * 2, event1->total_time());
EXPECT_DOUBLE_EQ(event1->mean(),
event1->total_time() / event1->event_count());
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698