Verify posting task and reply just before task queue destruction

Bug: webrtc:9728
Change-Id: I516311a507b4e9f49c45fda5185e96d4248ed455
Reviewed-on: https://webrtc-review.googlesource.com/98520
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24639}
This commit is contained in:
Danil Chapovalov 2018-09-07 16:28:20 +02:00 committed by Commit Bot
parent 1fdcfa755e
commit 2903888cde

View file

@ -371,6 +371,32 @@ TEST(TaskQueueTest, PostAndReplyDeadlock) {
EXPECT_TRUE(event.Wait(1000));
}
// http://bugs.webrtc.org/9728
#if defined(WEBRTC_WIN)
#define MAYBE_DeleteTaskQueueAfterPostAndReply \
DISABLED_DeleteTaskQueueAfterPostAndReply
#else
#define MAYBE_DeleteTaskQueueAfterPostAndReply DeleteTaskQueueAfterPostAndReply
#endif
TEST(TaskQueueTest, MAYBE_DeleteTaskQueueAfterPostAndReply) {
Event task_deleted(false, false);
Event reply_deleted(false, false);
auto* task_queue = new TaskQueue("Queue");
task_queue->PostTaskAndReply(
/*task=*/rtc::NewClosure(
/*closure=*/[] {},
/*cleanup=*/[&task_deleted] { task_deleted.Set(); }),
/*reply=*/rtc::NewClosure(
/*closure=*/[] {},
/*cleanup=*/[&reply_deleted] { reply_deleted.Set(); }));
delete task_queue;
EXPECT_TRUE(task_deleted.Wait(1000));
EXPECT_TRUE(reply_deleted.Wait(1000));
}
void TestPostTaskAndReply(TaskQueue* work_queue, Event* event) {
ASSERT_FALSE(work_queue->IsCurrent());
work_queue->PostTaskAndReply(Bind(&CheckCurrent, nullptr, work_queue),