diff --git a/.github/workflows/test-on-iotlab.yml b/.github/workflows/test-on-iotlab.yml index 99249fe94df1..6932408d1007 100644 --- a/.github/workflows/test-on-iotlab.yml +++ b/.github/workflows/test-on-iotlab.yml @@ -82,6 +82,10 @@ jobs: # but flashing at a specific offset is not (yet) supported on IoT-LAB # so it will always fail because of that limitation APPLICATIONS_EXCLUDE: tests/periph_timer_short_relative_set tests/riotboot + # Increase tolerance error with `tests/periph_timer_periodic` because + # of timing issues with the test script when running in the github + # actions environment + TEST_PERIPH_TIMER_PERIODIC_PRECISION: 0.30 steps: - name: Set up Python 3.8 uses: actions/setup-python@v2 diff --git a/tests/periph_timer_periodic/tests/01-run.py b/tests/periph_timer_periodic/tests/01-run.py index ac28e2f79780..653914f86e32 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__":