diff options
author | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-14 02:30:21 +0000 |
---|---|---|
committer | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-14 02:30:21 +0000 |
commit | 5d7b073aa9e11c2eb5a2f976aa53e9b76e871394 (patch) | |
tree | d7d5b7df7af789d2ad621c07d189708a4e974a9d /jingle | |
parent | bc52ac80a16c2281535009fcf212a5aaf2277b25 (diff) | |
download | chromium_src-5d7b073aa9e11c2eb5a2f976aa53e9b76e871394.zip chromium_src-5d7b073aa9e11c2eb5a2f976aa53e9b76e871394.tar.gz chromium_src-5d7b073aa9e11c2eb5a2f976aa53e9b76e871394.tar.bz2 |
Fix stability issues with ThreadWrapperTest.
BUG=86532
TEST=the test it not flaky anymore.
Review URL: http://codereview.chromium.org/7327005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@92470 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'jingle')
-rw-r--r-- | jingle/glue/thread_wrapper_unittest.cc | 73 |
1 files changed, 40 insertions, 33 deletions
diff --git a/jingle/glue/thread_wrapper_unittest.cc b/jingle/glue/thread_wrapper_unittest.cc index 3e110e7..20f3648 100644 --- a/jingle/glue/thread_wrapper_unittest.cc +++ b/jingle/glue/thread_wrapper_unittest.cc @@ -44,13 +44,16 @@ class ThreadWrapperTest : public testing::Test { MockMessageHandler handler2_; }; -MATCHER_P3(MatchMessageAndDeleteData, handler, message_id, data, "") { - delete arg->pdata; +MATCHER_P3(MatchMessage, handler, message_id, data, "") { return arg->phandler == handler && arg->message_id == message_id && arg->pdata == data; } +ACTION(DeleteMessageData) { + delete arg0->pdata; +} + TEST_F(ThreadWrapperTest, Post) { talk_base::MessageData* data1_ = new talk_base::MessageData(); talk_base::MessageData* data2_ = new talk_base::MessageData(); @@ -65,46 +68,46 @@ TEST_F(ThreadWrapperTest, Post) { InSequence in_seq; EXPECT_CALL(handler1_, OnMessage( - MatchMessageAndDeleteData(&handler1_, kTestMessage1, data1_))); + MatchMessage(&handler1_, kTestMessage1, data1_))) + .WillOnce(DeleteMessageData()); EXPECT_CALL(handler1_, OnMessage( - MatchMessageAndDeleteData(&handler1_, kTestMessage2, data2_))); + MatchMessage(&handler1_, kTestMessage2, data2_))) + .WillOnce(DeleteMessageData()); EXPECT_CALL(handler2_, OnMessage( - MatchMessageAndDeleteData(&handler2_, kTestMessage1, data3_))); + MatchMessage(&handler2_, kTestMessage1, data3_))) + .WillOnce(DeleteMessageData()); EXPECT_CALL(handler2_, OnMessage( - MatchMessageAndDeleteData(&handler2_, kTestMessage1, data4_))); + MatchMessage(&handler2_, kTestMessage1, data4_))) + .WillOnce(DeleteMessageData()); message_loop_.RunAllPending(); } -// Crashes on Win only. http://crbug.com/86532 -#if defined(OS_WIN) -#define MAYBE_PostDelayed DISABLED_PostDelayed -#else -#define MAYBE_PostDelayed PostDelayed -#endif -TEST_F(ThreadWrapperTest, MAYBE_PostDelayed) { +TEST_F(ThreadWrapperTest, PostDelayed) { talk_base::MessageData* data1_ = new talk_base::MessageData(); talk_base::MessageData* data2_ = new talk_base::MessageData(); talk_base::MessageData* data3_ = new talk_base::MessageData(); talk_base::MessageData* data4_ = new talk_base::MessageData(); - // Post messages in reverse order and verify that they are called in - // the order of the delays. - thread()->PostDelayed(kTestDelayMs4, &handler2_, kTestMessage1, data4_); - thread()->PostDelayed(kTestDelayMs3, &handler2_, kTestMessage1, data3_); - thread()->PostDelayed(kTestDelayMs2, &handler1_, kTestMessage2, data2_); thread()->PostDelayed(kTestDelayMs1, &handler1_, kTestMessage1, data1_); + thread()->PostDelayed(kTestDelayMs2, &handler1_, kTestMessage2, data2_); + thread()->PostDelayed(kTestDelayMs3, &handler2_, kTestMessage1, data3_); + thread()->PostDelayed(kTestDelayMs4, &handler2_, kTestMessage1, data4_); InSequence in_seq; EXPECT_CALL(handler1_, OnMessage( - MatchMessageAndDeleteData(&handler1_, kTestMessage1, data1_))); + MatchMessage(&handler1_, kTestMessage1, data1_))) + .WillOnce(DeleteMessageData()); EXPECT_CALL(handler1_, OnMessage( - MatchMessageAndDeleteData(&handler1_, kTestMessage2, data2_))); + MatchMessage(&handler1_, kTestMessage2, data2_))) + .WillOnce(DeleteMessageData()); EXPECT_CALL(handler2_, OnMessage( - MatchMessageAndDeleteData(&handler2_, kTestMessage1, data3_))); + MatchMessage(&handler2_, kTestMessage1, data3_))) + .WillOnce(DeleteMessageData()); EXPECT_CALL(handler2_, OnMessage( - MatchMessageAndDeleteData(&handler2_, kTestMessage1, data4_))); + MatchMessage(&handler2_, kTestMessage1, data4_))) + .WillOnce(DeleteMessageData()); message_loop_.PostDelayedTask(FROM_HERE, new MessageLoop::QuitTask(), kMaxTestDelay); @@ -123,22 +126,23 @@ TEST_F(ThreadWrapperTest, Clear) { talk_base::MessageData* null_data = NULL; EXPECT_CALL(handler1_, OnMessage( - MatchMessageAndDeleteData(&handler1_, kTestMessage1, null_data))); + MatchMessage(&handler1_, kTestMessage1, null_data))) + .WillOnce(DeleteMessageData()); EXPECT_CALL(handler2_, OnMessage( - MatchMessageAndDeleteData(&handler2_, kTestMessage1, null_data))); + MatchMessage(&handler2_, kTestMessage1, null_data))) + .WillOnce(DeleteMessageData()); EXPECT_CALL(handler2_, OnMessage( - MatchMessageAndDeleteData(&handler2_, kTestMessage2, null_data))); + MatchMessage(&handler2_, kTestMessage2, null_data))) + .WillOnce(DeleteMessageData()); message_loop_.RunAllPending(); } TEST_F(ThreadWrapperTest, ClearDelayed) { - // Post messages in reverse order and verify that they are called in - // the order of the delays. - thread()->PostDelayed(kTestDelayMs4, &handler2_, kTestMessage1, NULL); - thread()->PostDelayed(kTestDelayMs3, &handler2_, kTestMessage1, NULL); - thread()->PostDelayed(kTestDelayMs2, &handler1_, kTestMessage2, NULL); thread()->PostDelayed(kTestDelayMs1, &handler1_, kTestMessage1, NULL); + thread()->PostDelayed(kTestDelayMs2, &handler1_, kTestMessage2, NULL); + thread()->PostDelayed(kTestDelayMs3, &handler2_, kTestMessage1, NULL); + thread()->PostDelayed(kTestDelayMs4, &handler2_, kTestMessage1, NULL); thread()->Clear(&handler1_, kTestMessage2); @@ -146,11 +150,14 @@ TEST_F(ThreadWrapperTest, ClearDelayed) { talk_base::MessageData* null_data = NULL; EXPECT_CALL(handler1_, OnMessage( - MatchMessageAndDeleteData(&handler1_, kTestMessage1, null_data))); + MatchMessage(&handler1_, kTestMessage1, null_data))) + .WillOnce(DeleteMessageData()); EXPECT_CALL(handler2_, OnMessage( - MatchMessageAndDeleteData(&handler2_, kTestMessage1, null_data))); + MatchMessage(&handler2_, kTestMessage1, null_data))) + .WillOnce(DeleteMessageData()); EXPECT_CALL(handler2_, OnMessage( - MatchMessageAndDeleteData(&handler2_, kTestMessage1, null_data))); + MatchMessage(&handler2_, kTestMessage1, null_data))) + .WillOnce(DeleteMessageData()); message_loop_.PostDelayedTask(FROM_HERE, new MessageLoop::QuitTask(), kMaxTestDelay); |