tests: Make test_per_application_leaks more robust
[lttng-tools.git] / tests / regression / ust / ust-dl / test_ust-dl.py
index e60a65a9331e8771cc8be9f832e51493d032ea4e..660fb7b195d3124710f1ab545e18a370bc77b472 100644 (file)
@@ -1,20 +1,9 @@
 #!/usr/bin/env python3
 #
 #!/usr/bin/env python3
 #
-# Copyright (C) 2013 Jérémie Galarneau <jeremie.galarneau@efficios.com>
-# Copyright (C) 2015 Antoine Busque <abusque@efficios.com>
+# Copyright (C) 2013 Jérémie Galarneau <jeremie.galarneau@efficios.com>
+# Copyright (C) 2015 Antoine Busque <abusque@efficios.com>
 #
 #
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License, version 2 only, as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-# more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 51
-# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+# SPDX-License-Identifier: GPL-2.0-only
 
 import os
 import subprocess
 
 import os
 import subprocess
@@ -31,15 +20,20 @@ sys.path.append(test_utils_path)
 from test_utils import *
 
 
 from test_utils import *
 
 
-NR_TESTS = 11
+have_dlmopen = os.environ.get("LTTNG_TOOLS_HAVE_DLMOPEN") == "1"
+
+
+NR_TESTS = 14
 current_test = 1
 print("1..{0}".format(NR_TESTS))
 
 # Check if a sessiond is running... bail out if none found.
 if session_daemon_alive() == 0:
 current_test = 1
 print("1..{0}".format(NR_TESTS))
 
 # Check if a sessiond is running... bail out if none found.
 if session_daemon_alive() == 0:
-    bail("""No sessiond running. Please make sure you are running this test
+    bail(
+        """No sessiond running. Please make sure you are running this test
     with the "run" shell script and verify that the lttng tools are
     with the "run" shell script and verify that the lttng tools are
-    properly installed.""")
+    properly installed."""
+    )
 
 session_info = create_session()
 enable_ust_tracepoint_event(session_info, "*")
 
 session_info = create_session()
 enable_ust_tracepoint_event(session_info, "*")
@@ -48,21 +42,33 @@ start_session(session_info)
 test_env = os.environ.copy()
 test_env["LD_PRELOAD"] = test_env.get("LD_PRELOAD", "") + ":liblttng-ust-dl.so"
 test_env["LD_LIBRARY_PATH"] = test_env.get("LD_LIBRARY_PATH", "") + ":" + test_path
 test_env = os.environ.copy()
 test_env["LD_PRELOAD"] = test_env.get("LD_PRELOAD", "") + ":liblttng-ust-dl.so"
 test_env["LD_LIBRARY_PATH"] = test_env.get("LD_LIBRARY_PATH", "") + ":" + test_path
-test_process = subprocess.Popen(test_path + "prog",
-                                stdout=subprocess.PIPE, stderr=subprocess.PIPE,
-                                env=test_env)
+test_process = subprocess.Popen(
+    test_path + "prog",
+    stdout=subprocess.DEVNULL,
+    stderr=subprocess.DEVNULL,
+    env=test_env,
+)
 test_process.wait()
 
 test_process.wait()
 
-print_test_result(test_process.returncode == 0, current_test, "Test application exited normally")
+print_test_result(
+    test_process.returncode == 0, current_test, "Test application exited normally"
+)
 current_test += 1
 
 stop_session(session_info)
 
 # Check for dl events in the resulting trace
 try:
 current_test += 1
 
 stop_session(session_info)
 
 # Check for dl events in the resulting trace
 try:
-    babeltrace_process = subprocess.Popen(["babeltrace", session_info.trace_path], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+    babeltrace_process = subprocess.Popen(
+        [BABELTRACE_BIN, session_info.trace_path],
+        stdout=subprocess.PIPE,
+        stderr=subprocess.PIPE,
+    )
 except FileNotFoundError:
 except FileNotFoundError:
-    bail("Could not open babeltrace. Please make sure it is installed.", session_info)
+    bail(
+        "Could not open {}. Please make sure it is installed.".format(BABELTRACE_BIN),
+        session_info,
+    )
 
 dlopen_event_found = 0
 dlmopen_event_found = 0
 
 dlopen_event_found = 0
 dlmopen_event_found = 0
@@ -79,7 +85,7 @@ load_libzzz_found = 0
 
 for event_line in babeltrace_process.stdout:
 
 
 for event_line in babeltrace_process.stdout:
 
-    event_line = event_line.decode('utf-8').replace("\n", "")
+    event_line = event_line.decode("utf-8").replace("\n", "")
     if re.search(r".*lttng_ust_dl:dlopen.*", event_line) is not None:
         dlopen_event_found += 1
     elif re.search(r".*lttng_ust_dl:dlmopen.*", event_line) is not None:
     if re.search(r".*lttng_ust_dl:dlopen.*", event_line) is not None:
         dlopen_event_found += 1
     elif re.search(r".*lttng_ust_dl:dlmopen.*", event_line) is not None:
@@ -107,43 +113,97 @@ for event_line in babeltrace_process.stdout:
 
 babeltrace_process.wait()
 
 
 babeltrace_process.wait()
 
-print_test_result(babeltrace_process.returncode == 0, current_test, "Resulting trace is readable")
+print_test_result(
+    babeltrace_process.returncode == 0, current_test, "Resulting trace is readable"
+)
 current_test += 1
 
 current_test += 1
 
-print_test_result(dlopen_event_found > 0, current_test, "lttng_ust_dl:dlopen event found in resulting trace")
+print_test_result(
+    dlopen_event_found > 0,
+    current_test,
+    "lttng_ust_dl:dlopen event found in resulting trace",
+)
 current_test += 1
 
 current_test += 1
 
-print_test_result(dlmopen_event_found > 0, current_test, "lttng_ust_dl:dlmopen event found in resulting trace")
+if have_dlmopen:
+    print_test_result(
+        dlmopen_event_found > 0,
+        current_test,
+        "lttng_ust_dl:dlmopen event found in resulting trace",
+    )
+else:
+    skip_test(current_test, "dlmopen() is not available")
+
 current_test += 1
 
 current_test += 1
 
-print_test_result(build_id_event_found > 0, current_test, "lttng_ust_dl:build_id event found in resulting trace")
+print_test_result(
+    build_id_event_found > 0,
+    current_test,
+    "lttng_ust_dl:build_id event found in resulting trace",
+)
 current_test += 1
 
 current_test += 1
 
-print_test_result(debug_link_event_found > 0, current_test, "lttng_ust_dl:debug_link event found in resulting trace")
+print_test_result(
+    debug_link_event_found > 0,
+    current_test,
+    "lttng_ust_dl:debug_link event found in resulting trace",
+)
 current_test += 1
 
 current_test += 1
 
-print_test_result(dlclose_event_found > 0, current_test, "lttng_ust_dl:dlclose event found in resulting trace")
+print_test_result(
+    dlclose_event_found > 0,
+    current_test,
+    "lttng_ust_dl:dlclose event found in resulting trace",
+)
 current_test += 1
 
 current_test += 1
 
-print_test_result(load_event_found > 0, current_test, "lttng_ust_lib:load event found in resulting trace")
+print_test_result(
+    load_event_found > 0,
+    current_test,
+    "lttng_ust_lib:load event found in resulting trace",
+)
 current_test += 1
 
 current_test += 1
 
-print_test_result(load_build_id_event_found > 0, current_test, "lttng_ust_lib:build_id event found in resulting trace")
+print_test_result(
+    load_build_id_event_found > 0,
+    current_test,
+    "lttng_ust_lib:build_id event found in resulting trace",
+)
 current_test += 1
 
 current_test += 1
 
-print_test_result(load_debug_link_event_found > 0, current_test, "lttng_ust_lib:debug_link event found in resulting trace")
+print_test_result(
+    load_debug_link_event_found > 0,
+    current_test,
+    "lttng_ust_lib:debug_link event found in resulting trace",
+)
 current_test += 1
 
 current_test += 1
 
-print_test_result(unload_event_found == 3, current_test, "lttng_ust_lib:unload event found 3 times in resulting trace")
+print_test_result(
+    unload_event_found == 3,
+    current_test,
+    "lttng_ust_lib:unload event found 3 times in resulting trace",
+)
 current_test += 1
 
 current_test += 1
 
-print_test_result(load_libfoo_found == 1, current_test, "lttng_ust_lib:load libfoo.so event found once in resulting trace")
+print_test_result(
+    load_libfoo_found == 1,
+    current_test,
+    "lttng_ust_lib:load libfoo.so event found once in resulting trace",
+)
 current_test += 1
 
 current_test += 1
 
-print_test_result(load_libbar_found == 1, current_test, "lttng_ust_lib:load libbar.so event found once in resulting trace")
+print_test_result(
+    load_libbar_found == 1,
+    current_test,
+    "lttng_ust_lib:load libbar.so event found once in resulting trace",
+)
 current_test += 1
 
 current_test += 1
 
-print_test_result(load_libzzz_found == 1, current_test, "lttng_ust_lib:load libzzz.so event found once in resulting trace")
+print_test_result(
+    load_libzzz_found == 1,
+    current_test,
+    "lttng_ust_lib:load libzzz.so event found once in resulting trace",
+)
 current_test += 1
 
 shutil.rmtree(session_info.tmp_directory)
 current_test += 1
 
 shutil.rmtree(session_info.tmp_directory)
This page took 0.025455 seconds and 4 git commands to generate.