Tests: lttng-ust-getcpu-override-test cache and error-check sysconf()
[lttng-tools.git] / tests / regression / ust / getcpu-override / test_getcpu_override
... / ...
CommitLineData
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
28EVENT_NAME="tp:tptest"
29
30NUM_TESTS=20
31
32SEQUENCE_SEED=(
33100 57 232 236 42 193 224 184 216 150 92 91 108 118 55 243 65 101 209 0 147 36
3429 34 49 188 174 105 253 245 227 238 112 20 222 201 102 175 119 19 132 41 78 90
35114 64 138 14 48 18 162 85 204 124 133 73 172 106 241 126 28 104 111 21 127 219
369 244 237 189 59 214 52 141 107 26 25 199 3 157 117 234 33 44 46 84 69 155 122
37250 231 86 239 76 190 120 1 94 206 8 148 159 167 215 164 31 217 61 71 125 68 109
38195 177 95 82 142 182 129 87 37 140 134 186 173 39 116 143 254 229 131 67 121
39192 240 15 221 30 242 185 80 170 135 51 187 194 246 12 225 181 137 211 228 88
40218 27 233 161 77 252 123 93 220 248 205 223 144 128 196 70 247 210 178 203 154
4124 169 149 163 35 7 151 103 197 139 165 158 207 72 113 145 45 183 11 198 43 81
42230 97 96 2 66 213 146 179 22 58 54 38 160 200 235 226 156 56 208 249 32 176 168
43110 191 79 152 115 10 74 60 251 17 83 180 171 202 40 166 255 53 212 98 5 50 99 4
4489 13 63 6 136 153 23 16 47 130 75 62
45)
46
47# Equivalent to the syconf(_SC_NPROCESSORS_CONF) call.
48NPROC=`nproc --all`
49
50source $TESTDIR/utils/utils.sh
51
52if [ ! -x "$CURDIR/.libs/lttng-ust-getcpu-override-test.so" ]; then
53 BAIL_OUT "No shared object generated"
54fi
55
56# MUST set TESTDIR before calling those functions
57
58run_app()
59{
60 diag "Launching app without getcpu-plugin wrapper"
61 $TESTAPP_BIN $NUM_EVENT
62 ok $? "Application without wrapper done"
63}
64
65run_getcpu_plugin_app()
66{
67 diag "Launching app with getcpu-plugin wrapper"
68 $CURDIR/$TESTAPP_WRAPPER $TESTAPP_BIN $NUM_EVENT
69 ok $? "Application with wrapper done"
70}
71
72compare_ok()
73{
74 compare 0 "$@"
75}
76
77compare_fail()
78{
79 compare 1 "$@"
80}
81
82compare()
83{
84 local expected_to_fail=$1
85 declare -a array_to_compare=("${!2}")
86 local valid=0
87
88 test ${#array_to_compare[*]} -eq ${#SEQUENCE_SEED[*]}
89 ok $? "Sequence seed and cpuid sequence are equal ${#SEQUENCE_SEED[*]}/${#array_to_compare[*]}"
90
91 for (( i = 0; i < ${#SEQUENCE_SEED[*]}; i++ )); do
92 if [ "${array_to_compare[$i]}" -ne "$(( ${SEQUENCE_SEED[$i]} % $NPROC))" ]; then
93 valid=1
94 break
95 fi
96 done
97
98 if [[ $expected_to_fail -eq "1" ]]; then
99 test $valid -ne "0"
100 ok $? "Cpuid extraction and seed sequence comparison fail as expected"
101 else
102 ok $valid "Cpuid extraction and seed sequence comparison"
103 fi
104}
105
106test_getcpu_override()
107{
108 diag "Getcpu plugin"
109
110 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
111 enable_ust_lttng_event_ok $SESSION_NAME "$EVENT_NAME"
112 start_lttng_tracing_ok $SESSION_NAME
113 run_app
114 stop_lttng_tracing_ok $SESSION_NAME
115 destroy_lttng_session_ok $SESSION_NAME
116
117 # Move output to an array by using =($())
118 cpuid_events=($($BABELTRACE_BIN $TRACE_PATH | sed -n 's/.*cpu_id = \([0-9]*\).*/\1/p'))
119 num_events=${#cpuid_events[*]}
120 test $num_events -eq $NUM_EVENT
121 ok $? "Extraction without getcpu plugin have $num_events/$NUM_EVENT"
122 compare_fail cpuid_events[@]
123
124 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
125 enable_ust_lttng_event_ok $SESSION_NAME "$EVENT_NAME"
126 start_lttng_tracing_ok $SESSION_NAME
127 run_getcpu_plugin_app
128 stop_lttng_tracing_ok $SESSION_NAME
129 destroy_lttng_session_ok $SESSION_NAME
130
131 cpuid_events=($($BABELTRACE_BIN $TRACE_PATH | sed -n 's/.*cpu_id = \([0-9]*\).*/\1/p'))
132 num_events=${#cpuid_events[*]}
133 test $num_events -eq $NUM_EVENT
134 ok $? "Extraction without getcpu plugin have $num_events/$NUM_EVENT"
135
136 compare_ok cpuid_events[@]
137
138 return $?
139}
140
141plan_tests $NUM_TESTS
142
143print_test_banner "$TEST_DESC"
144
145TESTS=(
146 "test_getcpu_override"
147)
148
149TEST_COUNT=${#TESTS[@]}
150i=0
151
152start_lttng_sessiond
153
154while [ "$i" -lt "$TEST_COUNT" ]; do
155
156 TRACE_PATH=$(mktemp -d)
157
158 # Execute test
159 ${TESTS[$i]}
160
161 rm -rf $TRACE_PATH
162
163 let "i++"
164done
165
166stop_lttng_sessiond
This page took 0.022432 seconds and 4 git commands to generate.