From ca26a8fe6a54d59997e01f821f072b28a7c8a3f9 Mon Sep 17 00:00:00 2001 From: Alexandre Abadie Date: Wed, 10 Feb 2021 18:20:46 +0100 Subject: [PATCH] tests/periph_timer_periodic: add error tolerance in timings On a lot of platforms the peripheral timer fires in advance, adding a precision factor of 15% makes the test more reliable --- tests/periph_timer_periodic/tests/01-run.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tests/periph_timer_periodic/tests/01-run.py b/tests/periph_timer_periodic/tests/01-run.py index ac28e2f797..653914f86e 100755 --- a/tests/periph_timer_periodic/tests/01-run.py +++ b/tests/periph_timer_periodic/tests/01-run.py @@ -6,19 +6,24 @@ # General Public License v2.1. See the file LICENSE in the top level # directory for more details. +import os import sys import time from testrunner import run +PRECISION = float(os.getenv("TEST_PERIPH_TIMER_PERIODIC_PRECISION", "0")) + + def testfunc(child): child.expect_exact('TEST START') start = time.time() child.expect_exact('TEST SUCCEEDED') end = time.time() # test should run 10 cycles with 25ms each - assert (end - start) > 0.25 - assert (end - start) < 0.40 + elapsed = end - start + assert elapsed > 0.25 * (1 - PRECISION), "=< 0.25s ({})".format(elapsed) + assert elapsed < 0.40 * (1 + PRECISION), "=> 0.40s ({})".format(elapsed) if __name__ == "__main__":