From d50f4f331e8cc2a88f51db083975fceb76448e83 Mon Sep 17 00:00:00 2001 From: deadbeef Date: Fri, 3 Jun 2016 10:30:58 -0700 Subject: [PATCH] Fixing flaky SignalThread tests. Using an "EXPECT_WAIT" pattern with a long timeout rather than calling "SleepMs" with a margin of 250ms. BUG=webrtc:5953 Review-Url: https://codereview.webrtc.org/2029853002 Cr-Commit-Position: refs/heads/master@{#13040} --- webrtc/base/signalthread_unittest.cc | 39 +++++++++++----------------- 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/webrtc/base/signalthread_unittest.cc b/webrtc/base/signalthread_unittest.cc index 95b4ac1d6e..bbae91daf0 100644 --- a/webrtc/base/signalthread_unittest.cc +++ b/webrtc/base/signalthread_unittest.cc @@ -17,6 +17,9 @@ using namespace rtc; +// 10 seconds. +static const int kTimeout = 10000; + class SignalThreadTest : public testing::Test, public sigslot::has_slots<> { public: class SlowSignalThread : public SignalThread { @@ -159,35 +162,26 @@ TEST_F(SignalThreadTest, OwnerThreadGoesAway) { EXPECT_EQ(stopped, thread_stopped_); \ EXPECT_EQ(deleted, thread_deleted_); -#if defined(WEBRTC_LINUX) -#define MAYBE_ThreadFinishes DISABLED_ThreadFinishes -#else -#define MAYBE_ThreadFinishes ThreadFinishes -#endif -TEST_F(SignalThreadTest, MAYBE_ThreadFinishes) { +#define EXPECT_STATE_WAIT(started, done, completed, stopped, deleted, timeout) \ + EXPECT_EQ_WAIT(started, thread_started_, timeout); \ + EXPECT_EQ_WAIT(done, thread_done_, timeout); \ + EXPECT_EQ_WAIT(completed, thread_completed_, timeout); \ + EXPECT_EQ_WAIT(stopped, thread_stopped_, timeout); \ + EXPECT_EQ_WAIT(deleted, thread_deleted_, timeout); + +TEST_F(SignalThreadTest, ThreadFinishes) { thread_->Start(); EXPECT_STATE(1, 0, 0, 0, 0); - Thread::SleepMs(500); - EXPECT_STATE(1, 0, 0, 0, 0); - Thread::Current()->ProcessMessages(0); - EXPECT_STATE(1, 1, 1, 0, 1); + EXPECT_STATE_WAIT(1, 1, 1, 0, 1, kTimeout); } -#if defined(WEBRTC_LINUX) -#define MAYBE_ReleasedThreadFinishes DISABLED_ReleasedThreadFinishes -#else -#define MAYBE_ReleasedThreadFinishes ReleasedThreadFinishes -#endif -TEST_F(SignalThreadTest, MAYBE_ReleasedThreadFinishes) { +TEST_F(SignalThreadTest, ReleasedThreadFinishes) { thread_->Start(); EXPECT_STATE(1, 0, 0, 0, 0); thread_->Release(); called_release_ = true; EXPECT_STATE(1, 0, 0, 0, 0); - Thread::SleepMs(500); - EXPECT_STATE(1, 0, 0, 0, 0); - Thread::Current()->ProcessMessages(0); - EXPECT_STATE(1, 1, 1, 0, 1); + EXPECT_STATE_WAIT(1, 1, 1, 0, 1, kTimeout); } TEST_F(SignalThreadTest, DestroyedThreadCleansUp) { @@ -204,8 +198,5 @@ TEST_F(SignalThreadTest, DeferredDestroyedThreadCleansUp) { EXPECT_STATE(1, 0, 0, 0, 0); thread_->Destroy(false); EXPECT_STATE(1, 0, 0, 1, 0); - Thread::SleepMs(500); - EXPECT_STATE(1, 0, 0, 1, 0); - Thread::Current()->ProcessMessages(0); - EXPECT_STATE(1, 1, 0, 1, 1); + EXPECT_STATE_WAIT(1, 1, 0, 1, 1, kTimeout); }