X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=tests%2Futils%2Flttngtest%2Ftap_generator.py;h=75960aece6c25dcfedc51a224dc58db12ea149d6;hb=83dc3923fa4b0fc2e0ad091392aea64cac046498;hp=39c6bda903093c60222bdb8d3a7b3f067d3d7b43;hpb=ce8470c9d039c563167d4fd061803e9eacf69ec3;p=lttng-tools.git diff --git a/tests/utils/lttngtest/tap_generator.py b/tests/utils/lttngtest/tap_generator.py index 39c6bda90..75960aece 100644 --- a/tests/utils/lttngtest/tap_generator.py +++ b/tests/utils/lttngtest/tap_generator.py @@ -6,10 +6,25 @@ # import contextlib +import os import sys +import time from typing import Iterator, Optional +def _get_time_ns(): + # type: () -> int + + # time.monotonic is only available since Python 3.3. We don't support + # those older versions so we can simply assert here. + assert sys.version_info >= (3, 3, 0) + + # time.monotonic_ns is only available for python >= 3.8, + # so the value is multiplied by 10^9 to maintain compatibility with + # older versions of the interpreter. + return int(time.monotonic() * 1000000000) + + class InvalidTestPlan(RuntimeError): def __init__(self, msg): # type: (str) -> None @@ -70,6 +85,10 @@ class TapGenerator: self._last_test_case_id = 0 # type: int self._printed_plan = False # type: bool self._has_failure = False # type: bool + self._time_tests = True # type: bool + if os.getenv("LTTNG_TESTS_TAP_AUTOTIME", "1") == "0": + self._time_tests = False + self._last_time = _get_time_ns() def __del__(self): if self.remaining_test_cases > 0: @@ -123,6 +142,7 @@ class TapGenerator: def test(self, result, description): # type: (bool, str) -> None + duration = (_get_time_ns() - self._last_time) / 1000000 if self._last_test_case_id == self._total_test_count: raise InvalidTestPlan("Executing too many tests") @@ -138,6 +158,9 @@ class TapGenerator: description=description, ) ) + if self._time_tests: + self._print("---\n duration_ms: {}\n...\n".format(duration)) + self._last_time = _get_time_ns() def ok(self, description): # type: (str) -> None