docs: Add supported versions and fix-backport policy
[lttng-tools.git] / tests / regression / ust / getcpu-override / test_getcpu_override
CommitLineData
568d7e2d
JR
1#!/bin/bash
2#
9d16b343 3# Copyright (C) 2015 Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
568d7e2d 4#
9d16b343
MJ
5# SPDX-License-Identifier: LGPL-2.1-only
6
568d7e2d
JR
7TEST_DESC="UST - Getcpu override plugin"
8
9CURDIR=$(dirname $0)/
10TESTDIR=$CURDIR/../../..
11SESSION_NAME="sequence-cpu"
12
13TESTAPP_PATH="$TESTDIR/utils/testapp"
14TESTAPP_NAME="gen-ust-events"
15TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
16TESTAPP_WRAPPER="run-getcpu-override"
17NUM_EVENT=256
ce14b22b 18EVENT_WAIT_USEC=1
568d7e2d
JR
19EVENT_NAME="tp:tptest"
20
21NUM_TESTS=20
22
23SEQUENCE_SEED=(
24100 57 232 236 42 193 224 184 216 150 92 91 108 118 55 243 65 101 209 0 147 36
2529 34 49 188 174 105 253 245 227 238 112 20 222 201 102 175 119 19 132 41 78 90
26114 64 138 14 48 18 162 85 204 124 133 73 172 106 241 126 28 104 111 21 127 219
279 244 237 189 59 214 52 141 107 26 25 199 3 157 117 234 33 44 46 84 69 155 122
28250 231 86 239 76 190 120 1 94 206 8 148 159 167 215 164 31 217 61 71 125 68 109
29195 177 95 82 142 182 129 87 37 140 134 186 173 39 116 143 254 229 131 67 121
30192 240 15 221 30 242 185 80 170 135 51 187 194 246 12 225 181 137 211 228 88
31218 27 233 161 77 252 123 93 220 248 205 223 144 128 196 70 247 210 178 203 154
3224 169 149 163 35 7 151 103 197 139 165 158 207 72 113 145 45 183 11 198 43 81
33230 97 96 2 66 213 146 179 22 58 54 38 160 200 235 226 156 56 208 249 32 176 168
34110 191 79 152 115 10 74 60 251 17 83 180 171 202 40 166 255 53 212 98 5 50 99 4
3589 13 63 6 136 153 23 16 47 130 75 62
36)
37
fb7767e0
JG
38source $TESTDIR/utils/utils.sh
39
568d7e2d 40# Equivalent to the syconf(_SC_NPROCESSORS_CONF) call.
75da093a 41num_cpus=$(conf_proc_count)
568d7e2d 42
568d7e2d
JR
43# MUST set TESTDIR before calling those functions
44
45run_app()
46{
47 diag "Launching app without getcpu-plugin wrapper"
6c4a91d6 48 $TESTAPP_BIN -i $NUM_EVENT -w $EVENT_WAIT_USEC
568d7e2d
JR
49 ok $? "Application without wrapper done"
50}
51
52run_getcpu_plugin_app()
53{
54 diag "Launching app with getcpu-plugin wrapper"
6c4a91d6 55 $CURDIR/$TESTAPP_WRAPPER $TESTAPP_BIN -i $NUM_EVENT -w $EVENT_WAIT_USEC
568d7e2d
JR
56 ok $? "Application with wrapper done"
57}
58
59compare_ok()
60{
61 compare 0 "$@"
62}
63
64compare_fail()
65{
66 compare 1 "$@"
67}
68
69compare()
70{
71 local expected_to_fail=$1
72 declare -a array_to_compare=("${!2}")
73 local valid=0
74
75 test ${#array_to_compare[*]} -eq ${#SEQUENCE_SEED[*]}
0a44ce80 76 ok $? "Sequence seed and cpuid sequence have the same size ${#SEQUENCE_SEED[*]}/${#array_to_compare[*]}"
568d7e2d
JR
77
78 for (( i = 0; i < ${#SEQUENCE_SEED[*]}; i++ )); do
75da093a 79 if [ "${array_to_compare[$i]}" -ne "$(( ${SEQUENCE_SEED[$i]} % $num_cpus))" ]; then
568d7e2d
JR
80 valid=1
81 break
82 fi
83 done
84
85 if [[ $expected_to_fail -eq "1" ]]; then
86 test $valid -ne "0"
0a44ce80 87 ok $? "Cpuid extraction and seed sequence comparison fails as expected"
568d7e2d
JR
88 else
89 ok $valid "Cpuid extraction and seed sequence comparison"
0a44ce80
JG
90 if [[ $valid -ne "0" ]]; then
91 diag "Dumping arrays after failed comparison"
92 for (( i = 0; i < ${#SEQUENCE_SEED[*]}; i++ )); do
93 echo -n "# array value is "
94 echo -n "${array_to_compare[$i]}"
95 echo -n " expected "
75da093a 96 echo "$(( ${SEQUENCE_SEED[$i]} % $num_cpus))"
0a44ce80
JG
97 done
98 diag "Dumping trace"
99 $BABELTRACE_BIN $TRACE_PATH | awk '{print "# " $0}'
100 fi
568d7e2d
JR
101 fi
102}
103
0a44ce80 104test_getcpu_override_fail()
568d7e2d 105{
0a44ce80 106 diag "Getcpu plugin - no preloaded plugin"
568d7e2d
JR
107
108 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
109 enable_ust_lttng_event_ok $SESSION_NAME "$EVENT_NAME"
110 start_lttng_tracing_ok $SESSION_NAME
111 run_app
112 stop_lttng_tracing_ok $SESSION_NAME
113 destroy_lttng_session_ok $SESSION_NAME
114
115 # Move output to an array by using =($())
0a44ce80
JG
116 local cpuid_events=($($BABELTRACE_BIN $TRACE_PATH | sed -n 's/.*cpu_id = \([0-9]*\).*/\1/p'))
117 local num_events=${#cpuid_events[*]}
568d7e2d
JR
118 test $num_events -eq $NUM_EVENT
119 ok $? "Extraction without getcpu plugin have $num_events/$NUM_EVENT"
120 compare_fail cpuid_events[@]
121
0a44ce80
JG
122 return $?
123}
124
125test_getcpu_override()
126{
127 diag "Getcpu plugin - with plugin preloaded"
128
568d7e2d
JR
129 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
130 enable_ust_lttng_event_ok $SESSION_NAME "$EVENT_NAME"
131 start_lttng_tracing_ok $SESSION_NAME
132 run_getcpu_plugin_app
133 stop_lttng_tracing_ok $SESSION_NAME
134 destroy_lttng_session_ok $SESSION_NAME
135
0a44ce80
JG
136 local cpuid_events=($($BABELTRACE_BIN $TRACE_PATH | sed -n 's/.*cpu_id = \([0-9]*\).*/\1/p'))
137 local num_events=${#cpuid_events[*]}
568d7e2d 138 test $num_events -eq $NUM_EVENT
0a44ce80 139 ok $? "Extraction with getcpu plugin have $num_events/$NUM_EVENT"
568d7e2d
JR
140
141 compare_ok cpuid_events[@]
142
143 return $?
144}
145
146plan_tests $NUM_TESTS
147
148print_test_banner "$TEST_DESC"
149
c125de8f
FD
150bail_out_if_no_babeltrace
151
f87d0ca3
JR
152if [ ! -x "$CURDIR/.libs/lttng-ust-getcpu-override-test.so" ]; then
153 skip 0 "No shared object generated. Skipping all tests." $NUM_TESTS && exit 0
154fi
155
156if [ "$num_cpus" -eq "1" ]; then
157 # Skip the test since we cannot perform it as designed since N mod 1
158 # is always equals to zero. There is no point testing this on a system
159 # with a single configured core. LTTng-UST limits the get_cpu function
160 # to return value inside the [0, NUM_CPU - 1] range for a valid event
161 # (present in trace).
162 skip 0 "Test system only have a single thread. Skipping all tests." $NUM_TESTS && exit 0
f37e092d
MD
163fi
164
f37e092d 165
568d7e2d 166TESTS=(
0a44ce80
JG
167 test_getcpu_override_fail
168 test_getcpu_override
568d7e2d
JR
169)
170
171TEST_COUNT=${#TESTS[@]}
172i=0
173
174start_lttng_sessiond
175
0a44ce80
JG
176for fct_test in ${TESTS[@]};
177do
8d5a3312 178 TRACE_PATH=$(mktemp -d -t tmp.test_getcpu_override_trace_path.XXXXXX)
568d7e2d 179
0a44ce80
JG
180 ${fct_test}
181 if [ $? -ne 0 ]; then
182 break;
183 fi
568d7e2d
JR
184
185 rm -rf $TRACE_PATH
568d7e2d
JR
186done
187
188stop_lttng_sessiond
This page took 0.062192 seconds and 5 git commands to generate.