Update TimeRollbackPrevention unit test
Merge from Widevine repo of http://go/wvgerrit/100110 The unit test TimeRollbackPrevention was broken for several reasons. This CL reduces the test to its most basic functionality and updates it to be compatible with a v16 oemcrypto. This CL also adjusts the fake clock used by the buildbot to fake sleeping backwards, so that the TimeRollbackPrevention test can also be run on the buildbot. Bug: 155773482 Bug: 79422351 Test: unit tests on buildbot, and on flame w/v16 modmock Change-Id: I3027018b17b738281989e63ae6b0729757217d05
This commit is contained in:
@@ -22,8 +22,9 @@ class TestSleep {
|
||||
virtual ~CallBack(){};
|
||||
};
|
||||
|
||||
// If real_sleep_ is true, then this sleeps for |seconds| of time.
|
||||
// If the callback exists, this calls the callback.
|
||||
// If real_sleep_ is true, then this sleeps for |seconds| of time. If
|
||||
// real_sleep_ is false, then the fake clock is advanced by |seconds|. If the
|
||||
// callback exists, this calls the callback.
|
||||
static void Sleep(unsigned int seconds);
|
||||
|
||||
// If we are using a real clock and a fake clock, then the real clock advances
|
||||
@@ -33,8 +34,30 @@ class TestSleep {
|
||||
// failing due to this drift.
|
||||
static void SyncFakeClock();
|
||||
|
||||
static void set_real_sleep(bool real_sleep) { real_sleep_ = real_sleep; }
|
||||
// Roll the system clock back by |seconds|. Returns true on success. A well
|
||||
// mannered test will call CanChangeSystemTime before attempting to call this
|
||||
// function and then assert that this is true. This function should *NOT* roll
|
||||
// back the clock used by OEMCrypto -- in fact, there are several tests that
|
||||
// verify this function does not roll back the clock used by OEMCrypto.
|
||||
static bool RollbackSystemTime(int seconds);
|
||||
|
||||
// Roll the system clock forward to undo all previous calls to
|
||||
// RollBackSystemTime. Returns true on success.
|
||||
static bool ResetRollback() {
|
||||
return total_clock_rollback_ == 0 ||
|
||||
RollbackSystemTime(-total_clock_rollback_);
|
||||
}
|
||||
|
||||
// Returns true if the system time can be rolled back. This is true on some
|
||||
// devices if the tests are run as root. It is also true when using a fake
|
||||
// clock with the reference version of OEMCrypto. This function is about the
|
||||
// system clock, *NOT* the clock used by OEMCrypto.
|
||||
static bool CanChangeSystemTime();
|
||||
|
||||
static void set_real_sleep(bool real_sleep) { real_sleep_ = real_sleep; }
|
||||
static bool real_sleep() { return real_sleep_; }
|
||||
|
||||
// The callback is notified whenever sleep is called.
|
||||
static void set_callback(CallBack* callback) { callback_ = callback; }
|
||||
|
||||
private:
|
||||
@@ -42,6 +65,9 @@ class TestSleep {
|
||||
static bool real_sleep_;
|
||||
// Called when the clock should advance.
|
||||
static CallBack* callback_;
|
||||
// The sum of all calls to RollBackSystemTime. Kept so we can undo all changes
|
||||
// at the end of a test.
|
||||
static int total_clock_rollback_;
|
||||
};
|
||||
|
||||
} // namespace wvcdm
|
||||
|
||||
Reference in New Issue
Block a user