From 8a917ae8818ca1c1b9b300b2da65b1abbd9dbc30 Mon Sep 17 00:00:00 2001 From: Francis Deslauriers Date: Wed, 14 Apr 2021 17:25:27 -0400 Subject: [PATCH] lttng: list-triggers: implement listing of SDT userspace-probe MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Francis Deslauriers Signed-off-by: Jérémie Galarneau Change-Id: Id57c265dcdb3b324ffbb274ca97ead9364275cf0 --- src/bin/lttng/commands/list_triggers.c | 16 +++++-- .../tools/trigger/test_list_triggers_cli | 43 +++++++++++++++++-- 2 files changed, 52 insertions(+), 7 deletions(-) diff --git a/src/bin/lttng/commands/list_triggers.c b/src/bin/lttng/commands/list_triggers.c index 70ab4c4e5..1590bbc79 100644 --- a/src/bin/lttng/commands/list_triggers.c +++ b/src/bin/lttng/commands/list_triggers.c @@ -266,7 +266,7 @@ void print_event_rule_userspace_probe(const struct lttng_event_rule *event_rule) goto end; } - _MSG(" rule: %s (type: userspace probe, location: ", name); + _MSG(" rule: %s (type: userspace probe, ", name); userspace_probe_location_type = lttng_userspace_probe_location_get_type(location); @@ -281,12 +281,22 @@ void print_event_rule_userspace_probe(const struct lttng_event_rule *event_rule) function_name = lttng_userspace_probe_location_function_get_function_name( location); - _MSG("%s:%s", binary_path, function_name); + _MSG("location type: ELF, location: %s:%s", binary_path, function_name); break; } case LTTNG_USERSPACE_PROBE_LOCATION_TYPE_TRACEPOINT: - _MSG("SDT not implemented yet"); + { + const char *binary_path, *provider_name, *probe_name; + + binary_path = lttng_userspace_probe_location_tracepoint_get_binary_path( + location); + provider_name = lttng_userspace_probe_location_tracepoint_get_provider_name( + location); + probe_name = lttng_userspace_probe_location_tracepoint_get_probe_name( + location); + _MSG("location type: SDT, location: %s:%s:%s", binary_path, provider_name, probe_name); break; + } default: abort(); } diff --git a/tests/regression/tools/trigger/test_list_triggers_cli b/tests/regression/tools/trigger/test_list_triggers_cli index 60221a2b5..9c85838b3 100755 --- a/tests/regression/tools/trigger/test_list_triggers_cli +++ b/tests/regression/tools/trigger/test_list_triggers_cli @@ -24,7 +24,7 @@ TESTDIR="$CURDIR/../../.." source "$TESTDIR/utils/utils.sh" -NUM_TESTS=67 +NUM_TESTS=72 FULL_LTTNG_BIN="${TESTDIR}/../src/bin/lttng/${LTTNG_BIN}" @@ -32,14 +32,22 @@ tmp_stdout=$(mktemp -t test_list_triggers_cli_stdout.XXXXXX) tmp_stderr=$(mktemp -t test_list_triggers_cli_stderr.XXXXXX) tmp_expected_stdout=$(mktemp -t test_list_triggers_cli_expected_stdout.XXXXXX) uprobe_elf_binary=$(realpath "${TESTDIR}/utils/testapp/userspace-probe-elf-binary/.libs/userspace-probe-elf-binary") +uprobe_sdt_binary=$(realpath "${TESTDIR}/utils/testapp/userspace-probe-sdt-binary/.libs/userspace-probe-sdt-binary") uid=$(id --user) gid=$(id --group) if [ "$uid" == "0" ]; then ist_root=1 + ls "$uprobe_sdt_binary" >/dev/null 2>&1 + if test $? == 0; then + hast_sdt_binary=1 + else + hast_sdt_binary=0 + fi else ist_root=0 + hast_sdt_binary=0 fi @@ -253,7 +261,7 @@ test_on_event_probe () lttng_remove_trigger_ok "T2" } -test_on_event_userspace_probe () +test_on_event_userspace_probe_elf () { local elf_function_name="test_function" @@ -265,7 +273,7 @@ test_on_event_userspace_probe () - id: T0 user id: ${uid} condition: event rule hit - rule: ma-probe-elf (type: userspace probe, location: ${uprobe_elf_binary}:${elf_function_name}) + rule: ma-probe-elf (type: userspace probe, location type: ELF, location: ${uprobe_elf_binary}:${elf_function_name}) actions: notify errors: none @@ -277,6 +285,32 @@ test_on_event_userspace_probe () lttng_remove_trigger_ok "T0" } +test_on_event_userspace_probe_sdt () +{ + + local sdt_provider_name="foobar" + local sdt_probe_name="tp1" + + diag "on-event userspace-probe sdt" + + lttng_add_trigger_ok "T0" --condition on-event -k --userspace-probe=sdt:${uprobe_sdt_binary}:${sdt_provider_name}:${sdt_probe_name} ma-probe-sdt --action notify + + cat > "${tmp_expected_stdout}" <<- EOF + - id: T0 + user id: 0 + condition: event rule hit + rule: ma-probe-sdt (type: userspace probe, location type: SDT, location: ${uprobe_sdt_binary}:${sdt_provider_name}:${sdt_probe_name}) + actions: + notify + errors: none + errors: none + EOF + + list_triggers_matches_ok "on-event, userspace-probe event rule SDT" "${tmp_expected_stdout}" + + lttng_remove_trigger_ok "T0" +} + test_on_event_syscall () { diag "Listing on-event syscall" @@ -454,7 +488,8 @@ start_lttng_sessiond_notap test_top_level_options test_on_event_tracepoint skip $ist_root "non-root user: skipping kprobe tests" 9 || test_on_event_probe -skip $ist_root "non-root user: skipping userspace probe elf tests" 5 || test_on_event_userspace_probe +skip $ist_root "non-root user: skipping userspace probe elf tests" 5 || test_on_event_userspace_probe_elf +skip $(($ist_root && $hast_sdt_binary)) "skipping userspace probe SDT tests" 5 || test_on_event_userspace_probe_sdt skip $ist_root "non-root user: skipping syscall tests" 7 || test_on_event_syscall test_snapshot_action test_notify_action -- 2.34.1