OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 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 |
11 #include "webrtc/system_wrappers/include/condition_variable_wrapper.h" | 11 #include "webrtc/system_wrappers/include/condition_variable_wrapper.h" |
12 | 12 |
13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
| 14 #include "webrtc/base/platform_thread.h" |
14 #include "webrtc/base/scoped_ptr.h" | 15 #include "webrtc/base/scoped_ptr.h" |
15 #include "webrtc/system_wrappers/include/critical_section_wrapper.h" | 16 #include "webrtc/system_wrappers/include/critical_section_wrapper.h" |
16 #include "webrtc/system_wrappers/include/thread_wrapper.h" | |
17 #include "webrtc/system_wrappers/include/tick_util.h" | 17 #include "webrtc/system_wrappers/include/tick_util.h" |
18 #include "webrtc/system_wrappers/include/trace.h" | 18 #include "webrtc/system_wrappers/include/trace.h" |
19 | 19 |
20 namespace webrtc { | 20 namespace webrtc { |
21 | 21 |
22 namespace { | 22 namespace { |
23 | 23 |
24 const int kLongWaitMs = 100 * 1000; // A long time in testing terms | 24 const int kLongWaitMs = 100 * 1000; // A long time in testing terms |
25 const int kShortWaitMs = 2 * 1000; // Long enough for process switches to happen | 25 const int kShortWaitMs = 2 * 1000; // Long enough for process switches to happen |
26 const int kVeryShortWaitMs = 20; // Used when we want a timeout | 26 const int kVeryShortWaitMs = 20; // Used when we want a timeout |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
140 EXPECT_TRUE(the_baton->Grab(kLongWaitMs)); | 140 EXPECT_TRUE(the_baton->Grab(kLongWaitMs)); |
141 EXPECT_TRUE(the_baton->Pass(kLongWaitMs)); | 141 EXPECT_TRUE(the_baton->Pass(kLongWaitMs)); |
142 return true; | 142 return true; |
143 } | 143 } |
144 | 144 |
145 class CondVarTest : public ::testing::Test { | 145 class CondVarTest : public ::testing::Test { |
146 public: | 146 public: |
147 CondVarTest() {} | 147 CondVarTest() {} |
148 | 148 |
149 virtual void SetUp() { | 149 virtual void SetUp() { |
150 thread_ = ThreadWrapper::CreateThread(&WaitingRunFunction, | 150 thread_ = PlatformThread::CreateThread(&WaitingRunFunction, &baton_, |
151 &baton_, "CondVarTest"); | 151 "CondVarTest"); |
152 ASSERT_TRUE(thread_->Start()); | 152 ASSERT_TRUE(thread_->Start()); |
153 } | 153 } |
154 | 154 |
155 virtual void TearDown() { | 155 virtual void TearDown() { |
156 // We have to wake the thread in order to make it obey the stop order. | 156 // We have to wake the thread in order to make it obey the stop order. |
157 // But we don't know if the thread has completed the run function, so | 157 // But we don't know if the thread has completed the run function, so |
158 // we don't know if it will exit before or after the Pass. | 158 // we don't know if it will exit before or after the Pass. |
159 // Thus, we need to pin it down inside its Run function (between Grab | 159 // Thus, we need to pin it down inside its Run function (between Grab |
160 // and Pass). | 160 // and Pass). |
161 ASSERT_TRUE(baton_.Pass(kShortWaitMs)); | 161 ASSERT_TRUE(baton_.Pass(kShortWaitMs)); |
162 ASSERT_TRUE(baton_.Grab(kShortWaitMs)); | 162 ASSERT_TRUE(baton_.Grab(kShortWaitMs)); |
163 ASSERT_TRUE(thread_->Stop()); | 163 ASSERT_TRUE(thread_->Stop()); |
164 } | 164 } |
165 | 165 |
166 protected: | 166 protected: |
167 Baton baton_; | 167 Baton baton_; |
168 | 168 |
169 private: | 169 private: |
170 rtc::scoped_ptr<ThreadWrapper> thread_; | 170 rtc::scoped_ptr<PlatformThread> thread_; |
171 }; | 171 }; |
172 | 172 |
173 // The SetUp and TearDown functions use condition variables. | 173 // The SetUp and TearDown functions use condition variables. |
174 // This test verifies those pieces in isolation. | 174 // This test verifies those pieces in isolation. |
175 // Disabled due to flakiness. See bug 4262 for details. | 175 // Disabled due to flakiness. See bug 4262 for details. |
176 TEST_F(CondVarTest, DISABLED_InitFunctionsWork) { | 176 TEST_F(CondVarTest, DISABLED_InitFunctionsWork) { |
177 // All relevant asserts are in the SetUp and TearDown functions. | 177 // All relevant asserts are in the SetUp and TearDown functions. |
178 } | 178 } |
179 | 179 |
180 // This test verifies that one can use the baton multiple times. | 180 // This test verifies that one can use the baton multiple times. |
(...skipping 15 matching lines...) Expand all Loading... |
196 int64_t start_ms = TickTime::MillisecondTimestamp(); | 196 int64_t start_ms = TickTime::MillisecondTimestamp(); |
197 EXPECT_FALSE(cond_var->SleepCS(*(crit_sect), kVeryShortWaitMs)); | 197 EXPECT_FALSE(cond_var->SleepCS(*(crit_sect), kVeryShortWaitMs)); |
198 int64_t end_ms = TickTime::MillisecondTimestamp(); | 198 int64_t end_ms = TickTime::MillisecondTimestamp(); |
199 EXPECT_LE(start_ms + kVeryShortWaitMs, end_ms) | 199 EXPECT_LE(start_ms + kVeryShortWaitMs, end_ms) |
200 << "actual elapsed:" << end_ms - start_ms; | 200 << "actual elapsed:" << end_ms - start_ms; |
201 } | 201 } |
202 | 202 |
203 } // anonymous namespace | 203 } // anonymous namespace |
204 | 204 |
205 } // namespace webrtc | 205 } // namespace webrtc |
OLD | NEW |