summaryrefslogtreecommitdiffstats
path: root/jingle
diff options
context:
space:
mode:
authorsergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-14 02:30:21 +0000
committersergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-14 02:30:21 +0000
commit5d7b073aa9e11c2eb5a2f976aa53e9b76e871394 (patch)
treed7d5b7df7af789d2ad621c07d189708a4e974a9d /jingle
parentbc52ac80a16c2281535009fcf212a5aaf2277b25 (diff)
downloadchromium_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.cc73
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);