Commit | Line | Data |
---|---|---|
d3765576 FD |
1 | #!/bin/bash |
2 | # | |
3 | # Copyright (C) 2019 Philippe Proulx <pproulx@efficios.com> | |
4 | # Copyright (C) 2019 Francis Deslauriers <francis.deslauriers@efficios.com> | |
5 | # | |
6 | # This program is free software; you can redistribute it and/or | |
7 | # modify it under the terms of the GNU General Public License | |
8 | # as published by the Free Software Foundation; only version 2 | |
9 | # of the License. | |
10 | # | |
11 | # This program is distributed in the hope that it will be useful, | |
12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | # GNU General Public License for more details. | |
15 | # | |
16 | # You should have received a copy of the GNU General Public License | |
17 | # along with this program; if not, write to the Free Software | |
18 | # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
19 | ||
20 | # This test validates that a `src.ctf.fs` component successfully reads | |
21 | # specific CTF traces and creates the expected messages. | |
22 | # | |
23 | # Such CTF traces to open either exist (in `tests/ctf-traces/succeed`) | |
24 | # or are generated by this test using local trace generators. | |
25 | ||
26 | SH_TAP=1 | |
27 | ||
28 | if [ "x${BT_TESTS_SRCDIR:-}" != "x" ]; then | |
29 | UTILSSH="$BT_TESTS_SRCDIR/utils/utils.sh" | |
30 | else | |
31 | UTILSSH="$(dirname "$0")/../../utils/utils.sh" | |
32 | fi | |
33 | ||
34 | # shellcheck source=../../../utils/utils.sh | |
35 | source "$UTILSSH" | |
36 | ||
37 | this_dir_relative="plugins/flt.lttng-utils.debug-info" | |
38 | this_dir_build="$BT_TESTS_BUILDDIR/$this_dir_relative" | |
39 | succeed_trace_dir="$BT_CTF_TRACES_PATH/succeed" | |
40 | expect_dir="$BT_TESTS_DATADIR/$this_dir_relative" | |
41 | binary_artefact_dir="$BT_TESTS_DATADIR/$this_dir_relative" | |
8cca03c6 | 42 | data_dir="$BT_TESTS_DATADIR/$this_dir_relative" |
d3765576 FD |
43 | |
44 | test_debug_info() { | |
45 | local name="$1" | |
46 | local local_args=( | |
47 | "-c" "flt.lttng-utils.debug-info" | |
48 | "-p" "target-prefix=\"$binary_artefact_dir/x86_64-linux-gnu/dwarf_full\"" | |
49 | "-c" "sink.text.details" | |
50 | "-p" "with-trace-name=no,with-stream-name=no" | |
51 | ) | |
52 | ||
53 | bt_diff_cli "$expect_dir/trace-$name.expect" "/dev/null" \ | |
54 | "$succeed_trace_dir/$name" "${local_args[@]}" | |
55 | ok $? "Trace '$name' gives the expected output" | |
56 | } | |
57 | ||
140f7e02 FD |
58 | test_compare_to_ctf_fs() { |
59 | # Compare the `sink.text.details` output of a graph with and without a | |
60 | # `flt.lttng-utils.debug-info` component. Both should be identical for | |
61 | # traces without LTTng debugging fields. | |
62 | local test_name=$1 | |
63 | shift 1 | |
64 | local cli_args=("$@") | |
65 | local debug_info_cli_args=("-c" "flt.lttng-utils.debug-info") | |
66 | local details_cli_args=( | |
67 | "-c" "sink.text.details" | |
68 | "--params" "with-trace-name=false,with-stream-name=false,with-uuid=false" | |
69 | ) | |
70 | local actual_stdout=$(mktemp -t test_debug_info_stdout_actual.XXXXXX) | |
71 | local actual_stderr=$(mktemp -t test_debug_info_stderr_actual.XXXXXX) | |
72 | local expected_stdout=$(mktemp -t test_debug_info_stdout_expected.XXXXXX) | |
73 | local expected_stderr=$(mktemp -t test_debug_info_stderr_expected.XXXXXX) | |
74 | local ret=0 | |
75 | ||
76 | # Create expected files using a graph without a `debug-info` component. | |
77 | bt_cli "$expected_stdout" "$expected_stderr" "${cli_args[@]}" \ | |
78 | "${details_cli_args[@]}" | |
79 | ||
80 | # Read the same trace with a `debug-info` component in the graph. | |
81 | bt_cli "$actual_stdout" "$actual_stderr" "${cli_args[@]}" \ | |
82 | "${details_cli_args[@]}" "${debug_info_cli_args[@]}" | |
83 | ||
84 | bt_diff "$expected_stdout" "$actual_stdout" | |
85 | ok $? "Input '$test_name' gives the expected stdout" | |
86 | ||
87 | bt_diff "$expected_stderr" "$actual_stderr" | |
88 | ok $? "Input '$test_name' gives the expected stderr" | |
89 | ||
90 | rm -f "$actual_stdout" | |
91 | rm -f "$actual_stderr" | |
92 | rm -f "$expected_stdout" | |
93 | rm -f "$expected_stderr" | |
94 | } | |
95 | ||
96 | test_compare_ctf_src_trace() { | |
97 | local trace_name=$1 | |
98 | local trace_path="$succeed_trace_dir/$trace_name" | |
99 | local cli_args=("$trace_path") | |
100 | ||
101 | diag "Comparing output with and without 'flt.lttng-utils.debug-info' on '$trace_name'" | |
102 | test_compare_to_ctf_fs "src.ctf.fs with $trace_name trace" "${cli_args[@]}" | |
103 | } | |
104 | ||
8cca03c6 FD |
105 | test_compare_complete_src_trace() { |
106 | ||
107 | local source_name="src.test_debug_info.CompleteSrc" | |
108 | local cli_args=("--plugin-path=$data_dir" "-c" "$source_name") | |
109 | test_compare_to_ctf_fs "$source_name" "${cli_args[@]}" | |
110 | } | |
111 | ||
112 | plan_tests 9 | |
d3765576 FD |
113 | |
114 | test_debug_info debug-info | |
140f7e02 FD |
115 | |
116 | test_compare_ctf_src_trace smalltrace | |
117 | test_compare_ctf_src_trace 2packets | |
118 | test_compare_ctf_src_trace session-rotation | |
8cca03c6 FD |
119 | |
120 | test_compare_complete_src_trace |