Taylor Brandstetter b3c6810be3 Adding the ability to use a simulated clock for unit tests.
This will be useful for any tests that test objects with time-dependent
behavior. It will allow such tests to be written in such a way that their
outcome is more repeatable (less flaky), and will also allow such tests
to finish quicker. For example, a test for STUN timeout doesn't need to
wait the full timeout interval in real time; it can simply advance the
simulated clock.

BUG=webrtc:4925
R=pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/1895933003 .

Cr-Commit-Position: refs/heads/master@{#12950}
2016-05-27 21:16:07 +00:00

42 lines
1.4 KiB
C++

/*
* Copyright 2008 The WebRTC Project Authors. All rights reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef WEBRTC_BASE_TIMING_H_
#define WEBRTC_BASE_TIMING_H_
namespace rtc {
// TODO(deadbeef): Remove this and use ClockInterface instead.
class Timing {
public:
Timing();
virtual ~Timing();
// WallTimeNow() returns the current wall-clock time in seconds,
// within 10 milliseconds resolution.
// WallTimeNow is static and does not require a timer_handle_ on Windows.
static double WallTimeNow();
// TimerNow() is like WallTimeNow(), but is monotonically
// increasing. It returns seconds in resolution of 10 microseconds
// or better. Although timer and wall-clock time have the same
// timing unit, they do not necessarily correlate because wall-clock
// time may be adjusted backwards, hence not monotonic.
// Made virtual so we can make a fake one.
// TODO(tommi): The only place we use this (virtual) is in
// rtpdata_engine_unittest.cc. See if it doesn't make more sense to change
// that contract or test than to modify this generic class.
virtual double TimerNow();
};
} // namespace rtc
#endif // WEBRTC_BASE_TIMING_H_