Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(207)

Side by Side Diff: base/synchronization/condition_variable_unittest.cc

Issue 2047433004: content: Add heartbeat trace for CategorizedWorkerPool. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nits Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Multi-threaded tests of ConditionVariable class. 5 // Multi-threaded tests of ConditionVariable class.
6 6
7 #include "base/synchronization/condition_variable.h" 7 #include "base/synchronization/condition_variable.h"
8 8
9 #include <time.h> 9 #include <time.h>
10 10
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 187
188 cv.TimedWait(WAIT_TIME + FUDGE_TIME); 188 cv.TimedWait(WAIT_TIME + FUDGE_TIME);
189 TimeDelta duration = TimeTicks::Now() - start; 189 TimeDelta duration = TimeTicks::Now() - start;
190 // We can't use EXPECT_GE here as the TimeDelta class does not support the 190 // We can't use EXPECT_GE here as the TimeDelta class does not support the
191 // required stream conversion. 191 // required stream conversion.
192 EXPECT_TRUE(duration >= WAIT_TIME); 192 EXPECT_TRUE(duration >= WAIT_TIME);
193 193
194 lock.Release(); 194 lock.Release();
195 } 195 }
196 196
197 void SignalConditionVariable(ConditionVariable* cv) {
198 cv->Signal();
199 }
200
201 TEST_F(ConditionVariableTest, TimedWaitTimeoutTest) {
202 Lock lock;
203 ConditionVariable cv(&lock);
204 lock.Acquire();
205
206 bool timed_out = cv.TimedWait(TimeDelta::FromMilliseconds(50));
207 EXPECT_TRUE(timed_out);
208
209 Thread thread("Helper");
210 thread.Start();
211 thread.task_runner()->PostTask(FROM_HERE,
212 base::Bind(&SignalConditionVariable, &cv));
213 timed_out = cv.TimedWait(TimeDelta::FromMilliseconds(300));
214 EXPECT_FALSE(timed_out);
215
216 lock.Release();
217 }
218
197 #if defined(OS_POSIX) 219 #if defined(OS_POSIX)
198 const int kDiscontinuitySeconds = 2; 220 const int kDiscontinuitySeconds = 2;
199 221
200 void BackInTime(Lock* lock) { 222 void BackInTime(Lock* lock) {
201 AutoLock auto_lock(*lock); 223 AutoLock auto_lock(*lock);
202 224
203 timeval tv; 225 timeval tv;
204 gettimeofday(&tv, NULL); 226 gettimeofday(&tv, NULL);
205 tv.tv_sec -= kDiscontinuitySeconds; 227 tv.tv_sec -= kDiscontinuitySeconds;
206 settimeofday(&tv, NULL); 228 settimeofday(&tv, NULL);
(...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after
759 base::AutoLock auto_lock(lock_); 781 base::AutoLock auto_lock(lock_);
760 // Send notification that we completed our "work." 782 // Send notification that we completed our "work."
761 WorkIsCompleted(thread_id); 783 WorkIsCompleted(thread_id);
762 } 784 }
763 } 785 }
764 } 786 }
765 787
766 } // namespace 788 } // namespace
767 789
768 } // namespace base 790 } // namespace base
OLDNEW
« no previous file with comments | « base/synchronization/condition_variable_posix.cc ('k') | base/synchronization/condition_variable_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698