Fix: syscall event rule: emission sites not compared in is_equal
[lttng-tools.git] / tests / regression / tools / metadata / test_ust
CommitLineData
01654d69
JR
1#!/bin/bash
2#
4942c256 3# Copyright (C) 2019 Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
01654d69 4#
9d16b343
MJ
5# SPDX-License-Identifier: LGPL-2.1-only
6
01654d69
JR
7TEST_DESC="Metadata env - User space tracing"
8
9CURDIR=$(dirname "$0")/
10TESTDIR=$CURDIR/../../..
11TESTAPP_PATH="$TESTDIR/utils/testapp"
12TESTAPP_NAME="gen-ust-events"
13TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
14EVENT_NAME="tp:tptest"
15
8d5a3312 16TRACE_PATH=$(mktemp -d -t tmp.test_metadata_env_ust_trace_path.XXXXXX)
01654d69
JR
17
18NUM_TESTS=37
19
20NR_ITER=10
21NR_USEC_WAIT=0
22
23source "$TESTDIR/utils/utils.sh"
24
25# Fetch utils functions common to ust and kernel tests.
26source "$CURDIR/utils.sh"
27
28if [ ! -x "$TESTAPP_BIN" ]; then
29 BAIL_OUT "No UST events binary detected."
30fi
31
32function test_per_uid ()
33{
01654d69 34 local metadata_path
b7a2f86d
MJ
35 local metadata
36 local metadata_env
01654d69
JR
37
38 local expected_path="${TRACE_PATH}/lttng-traces"
39 local session_name="per-uid"
b7a2f86d
MJ
40
41 metadata=$(mktemp -t tmp.test_per_uid_metadata.XXXXXX)
42 metadata_env=$(mktemp -t tmp.test_per_uid_metadata_env.XXXXXX)
01654d69
JR
43
44 diag "Test UST metadata env field in per-uid mode"
45 create_lttng_session_ok "$session_name"
46 enable_ust_lttng_event_ok "$session_name" $EVENT_NAME
47 start_lttng_tracing_ok "$session_name"
48
6c4a91d6 49 $TESTAPP_BIN -i $NR_ITER
01654d69
JR
50
51 stop_lttng_tracing_ok "$session_name"
52 destroy_lttng_session_ok "$session_name"
53
54 # bt1 accepts only a directory while bt2 accepts either the metadata
55 # file directly or a directory with an immediate metadata file.
56 # Settle for the common denominator.
fc2dd19e 57 metadata_path=$(find "${expected_path}/${session_name}"* -name "metadata")
01654d69
JR
58 metadata_path=$(dirname "$metadata_path")
59
60 $BABELTRACE_BIN --output-format=ctf-metadata "${metadata_path}" > "$metadata"
61
62 # Extract "env" scope
63 awk '/env {/,/};/' < "$metadata" > "$metadata_env"
64
65 # Construct the expected path from the env metadata and use it to
66 # validate that all information make sense. This information is present
67 # to allow trace viewer to recreate the same directory hierarchy.
68
69 # Trace name
b7a2f86d
MJ
70 local trace_name
71 trace_name=$(get_env_value "$metadata_env" trace_name)
72 ok $? "Extracting trace_name from env metadata: \`$trace_name\`"
73 expected_path="${expected_path}/${trace_name}"
01654d69
JR
74
75 # Session creation time
b7a2f86d
MJ
76 local trace_creation_datetime
77 trace_creation_datetime=$(get_env_value "$metadata_env" trace_creation_datetime)
78 ok $? "Extracting trace_creation_datetime from env metadata: \`$trace_creation_datetime\`"
79 trace_creation_datetime=$(iso8601_to_lttng_dir_datetime "$trace_creation_datetime")
80 expected_path="${expected_path}-${trace_creation_datetime}"
01654d69
JR
81
82 # Domain
b7a2f86d
MJ
83 local domain
84 domain=$(get_env_value "$metadata_env" domain)
85 ok $? "Extracting domain from env metadata: \`$domain\`"
86 expected_path="${expected_path}/${domain}"
01654d69
JR
87
88 # Buffering scheme
b7a2f86d
MJ
89 local tracer_buffering_scheme
90 tracer_buffering_scheme=$(get_env_value "$metadata_env" tracer_buffering_scheme)
91 ok $? "Extracting tracer_buffering_scheme from env metadata: \`$tracer_buffering_scheme\`"
92 expected_path="${expected_path}/${tracer_buffering_scheme}"
01654d69
JR
93
94 # tracer_buffering_id
b7a2f86d
MJ
95 local tracer_buffering_id
96 tracer_buffering_id=$(get_env_value "$metadata_env" tracer_buffering_id)
97 ok $? "Extracting tracer_buffering_id from env metadata: \`$tracer_buffering_id\`"
98 expected_path="${expected_path}/${tracer_buffering_id}"
01654d69
JR
99
100 # Check that the uid is the one we expect from the current user
b7a2f86d 101 is "$tracer_buffering_id" "$(id -u)" "tracer_buffering_id match current user uid: \`$tracer_buffering_id\`"
01654d69
JR
102
103 # Architecture_bit_width
b7a2f86d
MJ
104 local architecture_bit_width
105 architecture_bit_width=$(get_env_value "$metadata_env" architecture_bit_width)
106 ok $? "Extracting architecture_bit_width from env metadata: \`$architecture_bit_width\`"
107 expected_path="${expected_path}/${architecture_bit_width}-bit"
01654d69
JR
108
109 # Append "metadata" and test that we find the file.
110 expected_path="${expected_path}/metadata"
111
b7a2f86d
MJ
112 test -f "$expected_path"
113 ok $? "Reconstructed path from metadata is an existing file: \`$expected_path\`"
01654d69
JR
114
115 # Hostname
116 # The hostname is not part of the lttng hierarchy still we can test for
117 # its validity here.
b7a2f86d
MJ
118 local hostname
119 hostname=$(get_env_value "$metadata_env" hostname)
120 ok $? "Extracting hostname from env metadata: \`$hostname\`"
121 is "$hostname" "$(hostname)" "Extracted hostname matches current hostname"
01654d69
JR
122
123 rm -f "$metadata"
124 rm -f "$metadata_env"
125}
126
127function test_per_pid ()
128{
01654d69 129 local metadata_path
b7a2f86d
MJ
130 local metadata
131 local metadata_env
01654d69 132 local testapp_pid
01654d69
JR
133
134 local expected_path="${TRACE_PATH}/lttng-traces"
135 local session_name="per-pid"
b7a2f86d
MJ
136
137 metadata=$(mktemp -t tmp.test_per_pid_metadata.XXXXXX)
138 metadata_env=$(mktemp -t tmp.test_per_pid_metadata_env.XXXXXX)
01654d69
JR
139
140 diag "Test UST metadata env field in per-pid mode"
141 create_lttng_session_ok "$session_name"
142 enable_ust_lttng_channel_ok "$session_name" channel "--buffers-pid"
143 enable_ust_lttng_event_ok "$session_name" $EVENT_NAME channel
144 start_lttng_tracing_ok "$session_name"
145
6c4a91d6 146 $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT &
01654d69
JR
147 testapp_pid=$!
148 wait $testapp_pid
149
150 stop_lttng_tracing_ok "$session_name"
151 destroy_lttng_session_ok "$session_name"
152
153 # bt1 accepts only a directory while bt2 accepts either the metadata
154 # file directly or a directory with an immediate metadata file.
155 # Settle for the common denominator.
fc2dd19e 156 metadata_path=$(find "${expected_path}/${session_name}"* -name "metadata")
01654d69
JR
157 metadata_path=$(dirname "$metadata_path")
158
159 $BABELTRACE_BIN --output-format=ctf-metadata "${metadata_path}" 1> "$metadata"
160
161 # Extract "env" scope
162 awk '/env {/,/};/' < "$metadata" > "$metadata_env"
163
164 # Construct the expected path from the env metadata and use it to
165 # validate that all information make sense. This information is present
166 # to allow trace viewer to recreate the same directory hierarchy.
167
168 # Trace name
b7a2f86d
MJ
169 local trace_name
170 trace_name=$(get_env_value "$metadata_env" trace_name)
171 ok $? "Extracting trace_name from env metadata: \`$trace_name\`"
172 expected_path="${expected_path}/${trace_name}"
01654d69
JR
173
174 # Session creation time
b7a2f86d
MJ
175 local trace_creation_datetime
176 trace_creation_datetime=$(get_env_value "$metadata_env" trace_creation_datetime)
177 ok $? "Extracting trace_creation_datetime from env metadata: \`$trace_creation_datetime\`"
178 trace_creation_datetime=$(iso8601_to_lttng_dir_datetime "$trace_creation_datetime")
179 expected_path="${expected_path}-${trace_creation_datetime}"
01654d69
JR
180
181 # Domain
b7a2f86d
MJ
182 local domain
183 domain=$(get_env_value "$metadata_env" domain)
184 ok $? "Extracting domain from env metadata: \`$domain\`"
185 expected_path="${expected_path}/${domain}"
01654d69
JR
186
187 # Buffering scheme
b7a2f86d
MJ
188 local tracer_buffering_scheme
189 tracer_buffering_scheme=$(get_env_value "$metadata_env" tracer_buffering_scheme)
190 ok $? "Extracting tracer_buffering_scheme from env metadata: \`$tracer_buffering_scheme\`"
191 expected_path="${expected_path}/${tracer_buffering_scheme}"
01654d69
JR
192
193 # Procname
b7a2f86d
MJ
194 local procname
195 procname=$(get_env_value "$metadata_env" procname)
196 ok $? "Extracting procname from env metadata: \`$procname\`"
197 expected_path="${expected_path}/${procname}"
01654d69
JR
198
199 # vpid and tracer_buffering_id should be the same here.
b7a2f86d
MJ
200 local vpid
201 vpid=$(get_env_value "$metadata_env" "vpid")
202 ok $? "Extracting vpid from env metadata: \`$vpid\`"
01654d69 203
b7a2f86d
MJ
204 local tracer_buffering_id
205 tracer_buffering_id=$(get_env_value "$metadata_env" tracer_buffering_id)
206 ok $? "Extracting tracer_buffering_id from env metadata: \`$tracer_buffering_id\`"
207 expected_path="${expected_path}-${tracer_buffering_id}"
01654d69 208
b7a2f86d
MJ
209 is "$vpid" "$tracer_buffering_id" "vpid and tracer_buffering_id are identical"
210 is "$testapp_pid" "$vpid" "vpid and known testapp pid are identical"
211 is "$testapp_pid" "$tracer_buffering_id" "tracer_buffering_id and known testapp pid are identical"
01654d69
JR
212
213 # vpid_datetime
b7a2f86d
MJ
214 local vpid_datetime
215 vpid_datetime=$(get_env_value "$metadata_env" vpid_datetime)
216 ok $? "Extracting vpid_datetime from env metadata: \`$vpid_datetime\`"
217 vpid_datetime=$(iso8601_to_lttng_dir_datetime "$vpid_datetime")
218 expected_path="${expected_path}-${vpid_datetime}"
01654d69
JR
219
220 # Append "metadata" and test that we find the file.
221 expected_path="${expected_path}/metadata"
222
b7a2f86d
MJ
223 test -f "$expected_path"
224 ok $? "Reconstructed path from metadata is an existing file: \`$expected_path\`"
01654d69
JR
225
226 # Hostname
227 # The hostname is not part of the lttng hierarchy still we can test for
228 # its validity here.
b7a2f86d
MJ
229 local hostname
230 hostname=$(get_env_value "$metadata_env" hostname)
231 ok $? "Extracting hostname from env metadata: \`$hostname\`"
232 is "$hostname" "$(hostname)" "Extracted hostname matches current hostname"
01654d69
JR
233
234 rm -f "$metadata"
235 rm -f "$metadata_env"
236}
237
238plan_tests $NUM_TESTS
239
240print_test_banner "$TEST_DESC"
241
c125de8f
FD
242bail_out_if_no_babeltrace
243
01654d69
JR
244# Use LTTNG_HOME since we want the complete "default" lttng directory hierarchy
245# with "<session_name>-<datetime>/...".
b7a2f86d 246export LTTNG_HOME="$TRACE_PATH"
01654d69 247
01654d69
JR
248start_lttng_sessiond
249
250tests=( test_per_uid test_per_pid )
251
252for fct_test in "${tests[@]}";
253do
254 ${fct_test}
255done
256
257stop_lttng_sessiond
258unset LTTNG_HOME
259
260rm -rf "$TRACE_PATH"
This page took 0.060593 seconds and 5 git commands to generate.