X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=tests%2Fregression%2Fust%2Fust-dl%2Ftest_ust-dl.py;h=04903af260d02417a4814f1d964f807a966dbfb3;hb=HEAD;hp=d9bc60a75bc27dd1a22c84ce7802ea3526f49b1c;hpb=b6e2447a0a8d7fcd62c9c592082f5543eb10ade4;p=lttng-tools.git diff --git a/tests/regression/ust/ust-dl/test_ust-dl.py b/tests/regression/ust/ust-dl/test_ust-dl.py index d9bc60a75..660fb7b19 100644 --- a/tests/regression/ust/ust-dl/test_ust-dl.py +++ b/tests/regression/ust/ust-dl/test_ust-dl.py @@ -1,20 +1,9 @@ #!/usr/bin/env python3 # -# Copyright (C) - 2013 Jérémie Galarneau -# Copyright (C) - 2015 Antoine Busque +# Copyright (C) 2013 Jérémie Galarneau +# Copyright (C) 2015 Antoine Busque # -# 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 @@ -31,15 +20,20 @@ sys.path.append(test_utils_path) from test_utils import * -NR_TESTS = 6 +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: - 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 - properly installed.""") + properly installed.""" + ) session_info = create_session() enable_ust_tracepoint_event(session_info, "*") @@ -48,58 +42,168 @@ 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_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() -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: - 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: - bail("Could not open babeltrace. Please make sure it is installed.", session_info) - -dlopen_event_found = False -build_id_event_found = False -debug_link_event_found = False -dlclose_event_found = False + bail( + "Could not open {}. Please make sure it is installed.".format(BABELTRACE_BIN), + session_info, + ) + +dlopen_event_found = 0 +dlmopen_event_found = 0 +build_id_event_found = 0 +debug_link_event_found = 0 +dlclose_event_found = 0 +load_event_found = 0 +load_build_id_event_found = 0 +load_debug_link_event_found = 0 +unload_event_found = 0 +load_libfoo_found = 0 +load_libbar_found = 0 +load_libzzz_found = 0 for event_line in babeltrace_process.stdout: - # Let babeltrace finish to get the return code - if dlopen_event_found and build_id_event_found and \ - debug_link_event_found and dlclose_event_found: - continue - 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 = True + dlopen_event_found += 1 + elif re.search(r".*lttng_ust_dl:dlmopen.*", event_line) is not None: + dlmopen_event_found += 1 elif re.search(r".*lttng_ust_dl:build_id.*", event_line) is not None: - build_id_event_found = True + build_id_event_found += 1 elif re.search(r".*lttng_ust_dl:debug_link.*", event_line) is not None: - debug_link_event_found = True + debug_link_event_found += 1 elif re.search(r".*lttng_ust_dl:dlclose.*", event_line) is not None: - dlclose_event_found = True + dlclose_event_found += 1 + elif re.search(r".*lttng_ust_lib:build_id.*", event_line) is not None: + load_build_id_event_found += 1 + elif re.search(r".*lttng_ust_lib:debug_link.*", event_line) is not None: + load_debug_link_event_found += 1 + elif re.search(r".*lttng_ust_lib:unload.*", event_line) is not None: + unload_event_found += 1 + elif re.search(r".*lttng_ust_lib:load.*", event_line) is not None: + load_event_found += 1 + if re.search(r".*lttng_ust_lib:load.*libfoo.*", event_line) is not None: + load_libfoo_found += 1 + elif re.search(r".*lttng_ust_lib:load.*libbar.*", event_line) is not None: + load_libbar_found += 1 + elif re.search(r".*lttng_ust_lib:load.*libzzz.*", event_line) is not None: + load_libzzz_found += 1 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 + +print_test_result( + dlopen_event_found > 0, + current_test, + "lttng_ust_dl:dlopen event found in resulting trace", +) +current_test += 1 + +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 + +print_test_result( + build_id_event_found > 0, + current_test, + "lttng_ust_dl:build_id event found in resulting trace", +) +current_test += 1 + +print_test_result( + debug_link_event_found > 0, + current_test, + "lttng_ust_dl:debug_link event found in resulting trace", +) +current_test += 1 + +print_test_result( + dlclose_event_found > 0, + current_test, + "lttng_ust_dl:dlclose event found in resulting trace", +) +current_test += 1 + +print_test_result( + load_event_found > 0, + current_test, + "lttng_ust_lib:load event found in resulting trace", +) +current_test += 1 + +print_test_result( + load_build_id_event_found > 0, + current_test, + "lttng_ust_lib:build_id event found in resulting trace", +) +current_test += 1 + +print_test_result( + load_debug_link_event_found > 0, + current_test, + "lttng_ust_lib:debug_link event found in resulting trace", +) current_test += 1 -print_test_result(dlopen_event_found, current_test, "lttng_ust_dl:dlopen event found 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 -print_test_result(build_id_event_found, current_test, "lttng_ust_dl:build_id event found 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 -print_test_result(debug_link_event_found, current_test, "lttng_ust_dl:debug_link event found 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 -print_test_result(dlclose_event_found, current_test, "lttng_ust_dl:dlclose event found 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)