Gen-ust-events: use options instead of arguments
[lttng-tools.git] / tests / regression / ust / getcpu-override / test_getcpu_override
CommitLineData
568d7e2d
JR
1#!/bin/bash
2#
3# Copyright (C) - 2015 Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
4#
5# This library is free software; you can redistribute it and/or modify it under
6# the terms of the GNU Lesser General Public License as published by the Free
7# Software Foundation; version 2.1 of the License.
8#
9# This library is distributed in the hope that it will be useful, but WITHOUT
10# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12# details.
13#
14# You should have received a copy of the GNU Lesser General Public License
15# along with this library; if not, write to the Free Software Foundation, Inc.,
16# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17TEST_DESC="UST - Getcpu override plugin"
18
19CURDIR=$(dirname $0)/
20TESTDIR=$CURDIR/../../..
21SESSION_NAME="sequence-cpu"
22
23TESTAPP_PATH="$TESTDIR/utils/testapp"
24TESTAPP_NAME="gen-ust-events"
25TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
26TESTAPP_WRAPPER="run-getcpu-override"
27NUM_EVENT=256
ce14b22b 28EVENT_WAIT_USEC=1
568d7e2d
JR
29EVENT_NAME="tp:tptest"
30
31NUM_TESTS=20
32
33SEQUENCE_SEED=(
34100 57 232 236 42 193 224 184 216 150 92 91 108 118 55 243 65 101 209 0 147 36
3529 34 49 188 174 105 253 245 227 238 112 20 222 201 102 175 119 19 132 41 78 90
36114 64 138 14 48 18 162 85 204 124 133 73 172 106 241 126 28 104 111 21 127 219
379 244 237 189 59 214 52 141 107 26 25 199 3 157 117 234 33 44 46 84 69 155 122
38250 231 86 239 76 190 120 1 94 206 8 148 159 167 215 164 31 217 61 71 125 68 109
39195 177 95 82 142 182 129 87 37 140 134 186 173 39 116 143 254 229 131 67 121
40192 240 15 221 30 242 185 80 170 135 51 187 194 246 12 225 181 137 211 228 88
41218 27 233 161 77 252 123 93 220 248 205 223 144 128 196 70 247 210 178 203 154
4224 169 149 163 35 7 151 103 197 139 165 158 207 72 113 145 45 183 11 198 43 81
43230 97 96 2 66 213 146 179 22 58 54 38 160 200 235 226 156 56 208 249 32 176 168
44110 191 79 152 115 10 74 60 251 17 83 180 171 202 40 166 255 53 212 98 5 50 99 4
4589 13 63 6 136 153 23 16 47 130 75 62
46)
47
fb7767e0
JG
48source $TESTDIR/utils/utils.sh
49
568d7e2d 50# Equivalent to the syconf(_SC_NPROCESSORS_CONF) call.
75da093a 51num_cpus=$(conf_proc_count)
568d7e2d 52
568d7e2d
JR
53# MUST set TESTDIR before calling those functions
54
55run_app()
56{
57 diag "Launching app without getcpu-plugin wrapper"
a4c30524 58 $TESTAPP_BIN -i $NUM_EVENT -w $EVENT_WAIT_USEC
568d7e2d
JR
59 ok $? "Application without wrapper done"
60}
61
62run_getcpu_plugin_app()
63{
64 diag "Launching app with getcpu-plugin wrapper"
a4c30524 65 $CURDIR/$TESTAPP_WRAPPER $TESTAPP_BIN -i $NUM_EVENT -w $EVENT_WAIT_USEC
568d7e2d
JR
66 ok $? "Application with wrapper done"
67}
68
69compare_ok()
70{
71 compare 0 "$@"
72}
73
74compare_fail()
75{
76 compare 1 "$@"
77}
78
79compare()
80{
81 local expected_to_fail=$1
82 declare -a array_to_compare=("${!2}")
83 local valid=0
84
85 test ${#array_to_compare[*]} -eq ${#SEQUENCE_SEED[*]}
0a44ce80 86 ok $? "Sequence seed and cpuid sequence have the same size ${#SEQUENCE_SEED[*]}/${#array_to_compare[*]}"
568d7e2d
JR
87
88 for (( i = 0; i < ${#SEQUENCE_SEED[*]}; i++ )); do
75da093a 89 if [ "${array_to_compare[$i]}" -ne "$(( ${SEQUENCE_SEED[$i]} % $num_cpus))" ]; then
568d7e2d
JR
90 valid=1
91 break
92 fi
93 done
94
95 if [[ $expected_to_fail -eq "1" ]]; then
96 test $valid -ne "0"
0a44ce80 97 ok $? "Cpuid extraction and seed sequence comparison fails as expected"
568d7e2d
JR
98 else
99 ok $valid "Cpuid extraction and seed sequence comparison"
0a44ce80
JG
100 if [[ $valid -ne "0" ]]; then
101 diag "Dumping arrays after failed comparison"
102 for (( i = 0; i < ${#SEQUENCE_SEED[*]}; i++ )); do
103 echo -n "# array value is "
104 echo -n "${array_to_compare[$i]}"
105 echo -n " expected "
75da093a 106 echo "$(( ${SEQUENCE_SEED[$i]} % $num_cpus))"
0a44ce80
JG
107 done
108 diag "Dumping trace"
109 $BABELTRACE_BIN $TRACE_PATH | awk '{print "# " $0}'
110 fi
568d7e2d
JR
111 fi
112}
113
0a44ce80 114test_getcpu_override_fail()
568d7e2d 115{
0a44ce80 116 diag "Getcpu plugin - no preloaded plugin"
568d7e2d
JR
117
118 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
119 enable_ust_lttng_event_ok $SESSION_NAME "$EVENT_NAME"
120 start_lttng_tracing_ok $SESSION_NAME
121 run_app
122 stop_lttng_tracing_ok $SESSION_NAME
123 destroy_lttng_session_ok $SESSION_NAME
124
125 # Move output to an array by using =($())
0a44ce80
JG
126 local cpuid_events=($($BABELTRACE_BIN $TRACE_PATH | sed -n 's/.*cpu_id = \([0-9]*\).*/\1/p'))
127 local num_events=${#cpuid_events[*]}
568d7e2d
JR
128 test $num_events -eq $NUM_EVENT
129 ok $? "Extraction without getcpu plugin have $num_events/$NUM_EVENT"
130 compare_fail cpuid_events[@]
131
0a44ce80
JG
132 return $?
133}
134
135test_getcpu_override()
136{
137 diag "Getcpu plugin - with plugin preloaded"
138
568d7e2d
JR
139 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
140 enable_ust_lttng_event_ok $SESSION_NAME "$EVENT_NAME"
141 start_lttng_tracing_ok $SESSION_NAME
142 run_getcpu_plugin_app
143 stop_lttng_tracing_ok $SESSION_NAME
144 destroy_lttng_session_ok $SESSION_NAME
145
0a44ce80
JG
146 local cpuid_events=($($BABELTRACE_BIN $TRACE_PATH | sed -n 's/.*cpu_id = \([0-9]*\).*/\1/p'))
147 local num_events=${#cpuid_events[*]}
568d7e2d 148 test $num_events -eq $NUM_EVENT
0a44ce80 149 ok $? "Extraction with getcpu plugin have $num_events/$NUM_EVENT"
568d7e2d
JR
150
151 compare_ok cpuid_events[@]
152
153 return $?
154}
155
156plan_tests $NUM_TESTS
157
158print_test_banner "$TEST_DESC"
159
f37e092d
MD
160if [ -x "$CURDIR/.libs/lttng-ust-getcpu-override-test.so" ]; then
161 foundobj=1
162else
163 foundobj=0
164fi
165
166skip $foundobj "No shared object generated. Skipping all tests." $NUM_TESTS && exit 0
167
568d7e2d 168TESTS=(
0a44ce80
JG
169 test_getcpu_override_fail
170 test_getcpu_override
568d7e2d
JR
171)
172
173TEST_COUNT=${#TESTS[@]}
174i=0
175
176start_lttng_sessiond
177
0a44ce80
JG
178for fct_test in ${TESTS[@]};
179do
568d7e2d
JR
180 TRACE_PATH=$(mktemp -d)
181
0a44ce80
JG
182 ${fct_test}
183 if [ $? -ne 0 ]; then
184 break;
185 fi
568d7e2d
JR
186
187 rm -rf $TRACE_PATH
568d7e2d
JR
188done
189
190stop_lttng_sessiond
This page took 0.066221 seconds and 5 git commands to generate.