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

Side by Side Diff: base/spin_wait.h

Issue 7995: Move Time, TimeDelta and TimeTicks into namespace base. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 12 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 // This file provides a macro ONLY for use in testing. 5 // This file provides a macro ONLY for use in testing.
6 // DO NOT USE IN PRODUCTION CODE. There are much better ways to wait. 6 // DO NOT USE IN PRODUCTION CODE. There are much better ways to wait.
7 7
8 // This code is very helpful in testing multi-threaded code, without depending 8 // This code is very helpful in testing multi-threaded code, without depending
9 // on almost any primitives. This is especially helpful if you are testing 9 // on almost any primitives. This is especially helpful if you are testing
10 // those primitive multi-threaded constructs. 10 // those primitive multi-threaded constructs.
(...skipping 13 matching lines...) Expand all
24 // 24 //
25 // SPIN_FOR_1_SECOND_OR_UNTIL_TRUE(0 == f(x)); 25 // SPIN_FOR_1_SECOND_OR_UNTIL_TRUE(0 == f(x));
26 // 26 //
27 // The expression will be evaluated repeatedly until it is true, or until 27 // The expression will be evaluated repeatedly until it is true, or until
28 // the time (1 second) expires. 28 // the time (1 second) expires.
29 // Since tests generally have a 5 second watch dog timer, this spin loop is 29 // Since tests generally have a 5 second watch dog timer, this spin loop is
30 // typically used to get the padding needed on a given test platform to assure 30 // typically used to get the padding needed on a given test platform to assure
31 // that the test passes, even if load varies, and external events vary. 31 // that the test passes, even if load varies, and external events vary.
32 32
33 #define SPIN_FOR_1_SECOND_OR_UNTIL_TRUE(expression) \ 33 #define SPIN_FOR_1_SECOND_OR_UNTIL_TRUE(expression) \
34 SPIN_FOR_TIMEDELTA_OR_UNTIL_TRUE(TimeDelta::FromSeconds(1), (expression)) 34 SPIN_FOR_TIMEDELTA_OR_UNTIL_TRUE(base::TimeDelta::FromSeconds(1), \
35 (expression))
35 36
36 #define SPIN_FOR_TIMEDELTA_OR_UNTIL_TRUE(delta, expression) do { \ 37 #define SPIN_FOR_TIMEDELTA_OR_UNTIL_TRUE(delta, expression) do { \
37 Time start = Time::Now(); \ 38 base::Time start = base::Time::Now(); \
38 const TimeDelta kTimeout = delta; \ 39 const base::TimeDelta kTimeout = delta; \
39 while(!(expression)) { \ 40 while(!(expression)) { \
40 if (kTimeout < Time::Now() - start) { \ 41 if (kTimeout < base::Time::Now() - start) { \
41 EXPECT_LE((Time::Now() - start).InMilliseconds(), \ 42 EXPECT_LE((base::Time::Now() - start).InMilliseconds(), \
42 kTimeout.InMilliseconds()) << "Timed out"; \ 43 kTimeout.InMilliseconds()) << "Timed out"; \
43 break; \ 44 break; \
44 } \ 45 } \
45 PlatformThread::Sleep(50); \ 46 PlatformThread::Sleep(50); \
46 } \ 47 } \
47 } \ 48 } \
48 while(0) 49 while(0)
49 50
50 #endif // BASE_SPIN_WAIT_H__ 51 #endif // BASE_SPIN_WAIT_H__
51
OLDNEW
« no previous file with comments | « base/pr_time_unittest.cc ('k') | base/stats_counters.h » ('j') | base/time_format.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698