• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef MOJO_CORE_TEST_UTILS_H_
6 #define MOJO_CORE_TEST_UTILS_H_
7 
8 #include "base/macros.h"
9 #include "base/time/time.h"
10 #include "mojo/public/c/system/types.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12 
13 namespace mojo {
14 namespace core {
15 namespace test {
16 
17 MojoDeadline DeadlineFromMilliseconds(unsigned milliseconds);
18 
19 // A timeout smaller than |TestTimeouts::tiny_timeout()|, as a |MojoDeadline|.
20 // Warning: This may lead to flakiness, but this is unavoidable if, e.g., you're
21 // trying to ensure that functions with timeouts are reasonably accurate. We
22 // want this to be as small as possible without causing too much flakiness.
23 MojoDeadline EpsilonDeadline();
24 
25 // |TestTimeouts::tiny_timeout()|, as a |MojoDeadline|. (Expect this to be on
26 // the order of 100 ms.)
27 MojoDeadline TinyDeadline();
28 
29 // |TestTimeouts::action_timeout()|, as a |MojoDeadline|. (Expect this to be on
30 // the order of 10 s.)
31 MojoDeadline ActionDeadline();
32 
33 // Sleeps for at least the specified duration.
34 void Sleep(MojoDeadline deadline);
35 
36 // Stopwatch -------------------------------------------------------------------
37 
38 // A simple "stopwatch" for measuring time elapsed from a given starting point.
39 class Stopwatch {
40  public:
41   Stopwatch();
42   ~Stopwatch();
43 
44   void Start();
45   // Returns the amount of time elapsed since the last call to |Start()| (in
46   // microseconds).
47   MojoDeadline Elapsed();
48 
49  private:
50   base::TimeTicks start_time_;
51 
52   DISALLOW_COPY_AND_ASSIGN(Stopwatch);
53 };
54 
55 }  // namespace test
56 }  // namespace core
57 }  // namespace mojo
58 
59 #endif  // MOJO_CORE_TEST_UTILS_H_
60