#!/bin/bash # # SPDX-License-Identifier: GPL-2.0-only # # Copyright (C) 2019 Philippe Proulx # Copyright (C) 2019 Francis Deslauriers # # This test validates that a `src.ctf.fs` component successfully reads # specific CTF traces and creates the expected messages. # # Such CTF traces to open either exist (in `tests/ctf-traces/succeed`) # or are generated by this test using local trace generators. SH_TAP=1 if [ -n "${BT_TESTS_SRCDIR:-}" ]; then UTILSSH="$BT_TESTS_SRCDIR/utils/utils.sh" else UTILSSH="$(dirname "$0")/../../utils/utils.sh" fi # shellcheck source=../../utils/utils.sh source "$UTILSSH" this_dir_relative="plugins/flt.lttng-utils.debug-info" succeed_trace_dir="$BT_CTF_TRACES_PATH/succeed" expect_dir="$BT_TESTS_DATADIR/$this_dir_relative" binary_artefact_dir="$BT_TESTS_DATADIR/$this_dir_relative" data_dir="$BT_TESTS_DATADIR/$this_dir_relative" test_debug_info() { local name="$1" local local_args=( "-c" "flt.lttng-utils.debug-info" "-p" "target-prefix=\"$binary_artefact_dir/x86_64-linux-gnu/dwarf_full\"" "-c" "sink.text.details" "-p" "with-trace-name=no,with-stream-name=no" ) bt_diff_cli "$expect_dir/trace-$name.expect" "/dev/null" \ "$succeed_trace_dir/$name" "${local_args[@]}" ok $? "Trace '$name' gives the expected output" } test_compare_to_ctf_fs() { # Compare the `sink.text.details` output of a graph with and without a # `flt.lttng-utils.debug-info` component. Both should be identical for # traces without LTTng debugging fields. local test_name=$1 shift 1 local cli_args=("$@") local debug_info_cli_args=("-c" "flt.lttng-utils.debug-info") local details_cli_args=( "-c" "sink.text.details" "--params" "with-trace-name=false,with-stream-name=false,with-uuid=false" ) local actual_stdout local actual_stderr local expected_stdout local expected_stderr local ret=0 actual_stdout=$(mktemp -t test_debug_info_stdout_actual.XXXXXX) actual_stderr=$(mktemp -t test_debug_info_stderr_actual.XXXXXX) expected_stdout=$(mktemp -t test_debug_info_stdout_expected.XXXXXX) expected_stderr=$(mktemp -t test_debug_info_stderr_expected.XXXXXX) # Create expected files using a graph without a `debug-info` component. bt_cli "$expected_stdout" "$expected_stderr" "${cli_args[@]}" \ "${details_cli_args[@]}" # Read the same trace with a `debug-info` component in the graph. bt_cli "$actual_stdout" "$actual_stderr" "${cli_args[@]}" \ "${details_cli_args[@]}" "${debug_info_cli_args[@]}" bt_diff "$expected_stdout" "$actual_stdout" ok $? "Input '$test_name' gives the expected stdout" bt_diff "$expected_stderr" "$actual_stderr" ok $? "Input '$test_name' gives the expected stderr" rm -f "$actual_stdout" rm -f "$actual_stderr" rm -f "$expected_stdout" rm -f "$expected_stderr" } test_compare_ctf_src_trace() { local trace_name=$1 local trace_path="$succeed_trace_dir/$trace_name" local cli_args=("$trace_path") diag "Comparing output with and without 'flt.lttng-utils.debug-info' on '$trace_name'" test_compare_to_ctf_fs "src.ctf.fs with $trace_name trace" "${cli_args[@]}" } test_compare_complete_src_trace() { local source_name="src.test_debug_info.CompleteSrc" local cli_args=("--plugin-path=$data_dir" "-c" "$source_name") test_compare_to_ctf_fs "$source_name" "${cli_args[@]}" } plan_tests 9 test_debug_info debug-info test_compare_ctf_src_trace smalltrace test_compare_ctf_src_trace 2packets test_compare_ctf_src_trace session-rotation test_compare_complete_src_trace