Clean-up: modernize pretty_xml.cpp
[lttng-tools.git] / tests / utils / test_utils.py
index afe066d7692610b2bf0b79638ff63c5ec8d883cd..2cae263c43db60dddeac144ac893175851dadb14 100644 (file)
@@ -10,6 +10,7 @@ import os
 import subprocess
 import shutil
 import sys
+import time
 import tempfile
 
 # Import lttng bindings generated in the current tree
@@ -22,6 +23,28 @@ sys.path.append(lttng_bindings_path)
 sys.path.append(lttng_bindings_libs_path)
 from lttng import *
 
+_time_tests = True
+if os.getenv("LTTNG_TESTS_TAP_AUTOTIME", "1") == "0":
+    _time_tests = False
+
+
+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)
+
+
+_last_time = _get_time_ns()
+
+BABELTRACE_BIN = "babeltrace2"
+
 
 class SessionInfo:
     def __init__(self, handle, session_name, tmp_directory, channel_name):
@@ -31,7 +54,8 @@ class SessionInfo:
         self.trace_path = tmp_directory + "/" + session_name
         self.channel_name = channel_name
 
-def bail(diag, session_info = None):
+
+def bail(diag, session_info=None):
     print("Bail out!")
     print("#", diag)
 
@@ -42,6 +66,17 @@ def bail(diag, session_info = None):
             shutil.rmtree(session_info.tmp_directory)
     exit(-1)
 
+
+def print_automatic_test_timing():
+    global _time_tests
+    global _last_time
+    if not _time_tests:
+        return
+    duration_ns = _get_time_ns() - _last_time
+    print("  ---\n    duration_ms: {:02f}\n  ...".format(duration_ns / 1000000))
+    _last_time = _get_time_ns()
+
+
 def print_test_result(result, number, description):
     result_string = None
     if result is True:
@@ -51,9 +86,13 @@ def print_test_result(result, number, description):
 
     result_string += " {0} - {1}".format(number, description)
     print(result_string)
+    print_automatic_test_timing()
+
 
 def skip_test(number, description):
-    print('ok {} # skip {}'.format(number, description))
+    print("ok {} # skip {}".format(number, description))
+    print_automatic_test_timing()
+
 
 def enable_ust_tracepoint_event(session_info, event_name):
     event = Event()
@@ -64,6 +103,7 @@ def enable_ust_tracepoint_event(session_info, event_name):
     if res < 0:
         bail("Failed to enable userspace event " + event_name, session_info)
 
+
 def create_session():
     dom = Domain()
     dom.type = DOMAIN_UST
@@ -88,17 +128,23 @@ def create_session():
         bail("Failed to enable channel " + channel.name, session_info)
     return session_info
 
+
 def start_session(session_info):
     start(session_info.name)
 
-def stop_session(session_info, bailing = False):
+
+def stop_session(session_info, bailing=False):
     # Workaround lttng-ctl outputing directly to stdout by spawning a subprocess.
     lttng_binary_path = os.path.dirname(os.path.abspath(__file__)) + "/"
     for i in range(3):
         lttng_binary_path = os.path.dirname(lttng_binary_path)
     lttng_binary_path = lttng_binary_path + "/src/bin/lttng/lttng"
 
-    retcode = subprocess.call([lttng_binary_path, "stop", session_info.name], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+    retcode = subprocess.call(
+        [lttng_binary_path, "stop", session_info.name],
+        stdout=subprocess.PIPE,
+        stderr=subprocess.PIPE,
+    )
     if retcode != 0 and not bailing:
         bail("Unable to stop session " + session_info.name, session_info)
     destroy(session_info.name)
This page took 0.02434 seconds and 4 git commands to generate.