diff options
author | Jett Rink <jettrink@chromium.org> | 2019-10-14 10:45:27 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-10-14 22:41:38 +0000 |
commit | d0d8434d500bfdc0f3b318fd5aa3638283eaee8f (patch) | |
tree | bf80403f5eda6361c8ac0ce97b13e38bba5bbc3b /core | |
parent | 8a8f6069bebc6665038456079984b812665cd2d1 (diff) | |
download | chrome-ec-d0d8434d500bfdc0f3b318fd5aa3638283eaee8f.tar.gz |
test: don't rely on system time for tests
Instead of relying on the host's clock, we need to monotonically
increase a timestamp. This gives tests predictability.
BRANCH=none
BUG=chromium:1013701
TEST=ran usb_prl over 100 times without failure
Change-Id: Id4a1e9a8cbd9dd44509747916c9073444d71af5c
Signed-off-by: Jett Rink <jettrink@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1860474
Tested-by: Edward Hill <ecgh@chromium.org>
Reviewed-by: Denis Brockus <dbrockus@chromium.org>
Reviewed-by: Edward Hill <ecgh@chromium.org>
Diffstat (limited to 'core')
-rw-r--r-- | core/host/timer.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/core/host/timer.c b/core/host/timer.c index e76e4b3e3b..f7067dce08 100644 --- a/core/host/timer.c +++ b/core/host/timer.c @@ -52,12 +52,16 @@ void usleep(unsigned us) timestamp_t _get_time(void) { - struct timespec ts; - timestamp_t ret; - clock_gettime(CLOCK_MONOTONIC, &ts); - ret.val = (1000000000 * (uint64_t)ts.tv_sec + ts.tv_nsec) * - TEST_TIME_SCALE / 1000 / TEST_TIME_SLOW_DOWN; - return ret; + static timestamp_t time; + + /* + * We just monotonically increase the microsecond every time we check + * the time. Do not depend on host system time as this introduces + * flakyness in tests. The time is periodically fast forwarded with + * force_time() during the host's task scheduler implementation. + */ + ++time.val; + return time; } test_mockable timestamp_t get_time(void) |