| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2016 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2016 The WebRTC Project Authors. All rights reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 TEST(TaskQueueTest, PostFromQueue) { | 84 TEST(TaskQueueTest, PostFromQueue) { |
| 85 static const char kQueueName[] = "PostFromQueue"; | 85 static const char kQueueName[] = "PostFromQueue"; |
| 86 TaskQueue queue(kQueueName); | 86 TaskQueue queue(kQueueName); |
| 87 | 87 |
| 88 Event event(false, false); | 88 Event event(false, false); |
| 89 queue.PostTask( | 89 queue.PostTask( |
| 90 [&event, &queue]() { queue.PostTask([&event]() { event.Set(); }); }); | 90 [&event, &queue]() { queue.PostTask([&event]() { event.Set(); }); }); |
| 91 EXPECT_TRUE(event.Wait(1000)); | 91 EXPECT_TRUE(event.Wait(1000)); |
| 92 } | 92 } |
| 93 | 93 |
| 94 // Currently flaky on Windows. See issue 6610. | 94 TEST(TaskQueueTest, PostDelayed) { |
| 95 #if defined(WEBRTC_WIN) | |
| 96 #define MAYBE_PostDelayed DISABLED_PostDelayed | |
| 97 #else | |
| 98 #define MAYBE_PostDelayed PostDelayed | |
| 99 #endif | |
| 100 TEST(TaskQueueTest, MAYBE_PostDelayed) { | |
| 101 static const char kQueueName[] = "PostDelayed"; | 95 static const char kQueueName[] = "PostDelayed"; |
| 102 TaskQueue queue(kQueueName); | 96 TaskQueue queue(kQueueName); |
| 103 | 97 |
| 104 Event event(false, false); | 98 Event event(false, false); |
| 105 uint32_t start = Time(); | 99 uint32_t start = Time(); |
| 106 queue.PostDelayedTask(Bind(&CheckCurrent, kQueueName, &event, &queue), 100); | 100 queue.PostDelayedTask(Bind(&CheckCurrent, kQueueName, &event, &queue), 100); |
| 107 EXPECT_TRUE(event.Wait(1000)); | 101 EXPECT_TRUE(event.Wait(1000)); |
| 108 uint32_t end = Time(); | 102 uint32_t end = Time(); |
| 109 EXPECT_GE(end - start, 100u); | 103 // These tests are a little relaxed due to how "powerful" our test bots can |
| 110 EXPECT_NEAR(end - start, 200u, 100u); // Accept 100-300. | 104 // be. Most recently we've seen windows bots fire the callback after 99ms, |
| 105 // which is why we have a little bit of leeway backwards as well. |
| 106 EXPECT_GE(end - start, 95u); |
| 107 EXPECT_NEAR(end - start, 195u, 100u); // Accept 95-295. |
| 111 } | 108 } |
| 112 | 109 |
| 113 TEST(TaskQueueTest, PostMultipleDelayed) { | 110 TEST(TaskQueueTest, PostMultipleDelayed) { |
| 114 static const char kQueueName[] = "PostMultipleDelayed"; | 111 static const char kQueueName[] = "PostMultipleDelayed"; |
| 115 TaskQueue queue(kQueueName); | 112 TaskQueue queue(kQueueName); |
| 116 | 113 |
| 117 std::vector<std::unique_ptr<Event>> events; | 114 std::vector<std::unique_ptr<Event>> events; |
| 118 for (int i = 0; i < 10; ++i) { | 115 for (int i = 0; i < 10; ++i) { |
| 119 events.push_back(std::unique_ptr<Event>(new Event(false, false))); | 116 events.push_back(std::unique_ptr<Event>(new Event(false, false))); |
| 120 queue.PostDelayedTask( | 117 queue.PostDelayedTask( |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 255 queue.PostTask(NewClosure([&tasks_executed]() { ++tasks_executed; }, | 252 queue.PostTask(NewClosure([&tasks_executed]() { ++tasks_executed; }, |
| 256 [&tasks_cleaned_up]() { ++tasks_cleaned_up; })); | 253 [&tasks_cleaned_up]() { ++tasks_cleaned_up; })); |
| 257 event.Set(); // Unblock the first task. | 254 event.Set(); // Unblock the first task. |
| 258 } | 255 } |
| 259 | 256 |
| 260 EXPECT_GE(tasks_cleaned_up, tasks_executed); | 257 EXPECT_GE(tasks_cleaned_up, tasks_executed); |
| 261 EXPECT_EQ(kTaskCount, tasks_cleaned_up); | 258 EXPECT_EQ(kTaskCount, tasks_cleaned_up); |
| 262 } | 259 } |
| 263 | 260 |
| 264 } // namespace rtc | 261 } // namespace rtc |
| OLD | NEW |