vscode: Add configurations to run the executables under the debugger
[lttng-tools.git] / tests / regression / tools / snapshots / test_kernel
CommitLineData
07b86b52
JD
1#!/bin/bash
2#
9d16b343 3# Copyright (C) 2013 Julien Desfossez <jdesfossez@efficios.com>
07b86b52 4#
9d16b343
MJ
5# SPDX-License-Identifier: LGPL-2.1-only
6
07b86b52
JD
7TEST_DESC="Snapshots - Kernel tracing"
8
9CURDIR=$(dirname $0)/
10TESTDIR=$CURDIR/../../..
11EVENT_NAME="sched_switch"
07b86b52
JD
12SESSION_NAME=""
13CHANNEL_NAME="snapchan"
14
8d5a3312 15TRACE_PATH=$(mktemp -d -t tmp.test_snapshots_kernel_trace_path.XXXXXX)
07b86b52 16
bd666153 17NUM_TESTS=2061
07b86b52
JD
18
19source $TESTDIR/utils/utils.sh
20
07b86b52
JD
21function test_kernel_local_snapshot ()
22{
23 diag "Test local kernel snapshots"
24 create_lttng_session_no_output $SESSION_NAME
25 enable_lttng_mmap_overwrite_kernel_channel $SESSION_NAME $CHANNEL_NAME
26 lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
e563bbdb 27 start_lttng_tracing_ok $SESSION_NAME
9f0e230a 28 lttng_snapshot_add_output_ok $SESSION_NAME file://$TRACE_PATH
07b86b52 29 lttng_snapshot_record $SESSION_NAME
96340a01 30 stop_lttng_tracing_ok $SESSION_NAME
67b4c664 31 destroy_lttng_session_ok $SESSION_NAME
07b86b52
JD
32
33 # Validate test
bd666153 34 validate_trace_path_kernel_snapshot "$TRACE_PATH" "" "snapshot-1" 0 ""
78435723 35 validate_trace $EVENT_NAME $TRACE_PATH/
07b86b52
JD
36 if [ $? -eq 0 ]; then
37 # Only delete if successful
38 rm -rf $TRACE_PATH
07b86b52
JD
39 fi
40}
41
42function test_kernel_local_snapshot_after_stop ()
43{
44 diag "Test local kernel snapshots after stop"
45 create_lttng_session_no_output $SESSION_NAME
46 enable_lttng_mmap_overwrite_kernel_channel $SESSION_NAME $CHANNEL_NAME
47 lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
e563bbdb 48 start_lttng_tracing_ok $SESSION_NAME
96340a01 49 stop_lttng_tracing_ok $SESSION_NAME
9f0e230a 50 lttng_snapshot_add_output_ok $SESSION_NAME file://$TRACE_PATH
07b86b52 51 lttng_snapshot_record $SESSION_NAME
67b4c664 52 destroy_lttng_session_ok $SESSION_NAME
07b86b52
JD
53
54 # Validate test
78435723 55 validate_trace $EVENT_NAME $TRACE_PATH/
07b86b52
JD
56 if [ $? -eq 0 ]; then
57 # Only delete if successful
58 rm -rf $TRACE_PATH
07b86b52
JD
59 fi
60}
61
62function test_kernel_local_snapshot_append_to_metadata ()
63{
78435723
JD
64 local EVENT1=sched_switch
65 local EVENT2=sched_process_exit
07b86b52
JD
66
67 diag "Test local kernel snapshots with one event $EVENT1"
68 create_lttng_session_no_output $SESSION_NAME
69 enable_lttng_mmap_overwrite_kernel_channel $SESSION_NAME $CHANNEL_NAME
70 lttng_enable_kernel_event $SESSION_NAME $EVENT1 $CHANNEL_NAME
e563bbdb 71 start_lttng_tracing_ok $SESSION_NAME
9f0e230a 72 lttng_snapshot_add_output_ok $SESSION_NAME file://$TRACE_PATH
07b86b52
JD
73
74 # first snapshot with only 1 event
75 lttng_snapshot_record $SESSION_NAME
78435723 76 validate_trace $EVENT_NAME $TRACE_PATH/
07b86b52
JD
77 if [ $? -eq 0 ]; then
78 # Only delete if successful
79 rm -rf $TRACE_PATH
07b86b52
JD
80 fi
81
82 diag "Adding event $EVENT2"
83 # second snapshot with 2 events
84 lttng_enable_kernel_event $SESSION_NAME $EVENT2 $CHANNEL_NAME
85 rm -rf $TRACE_PATH/snapshot/* 2>/dev/null
86 lttng_snapshot_record $SESSION_NAME
78435723 87 validate_trace "${EVENT1},${EVENT2}" $TRACE_PATH/
07b86b52
JD
88 if [ $? -eq 0 ]; then
89 # Only delete if successful
90 rm -rf $TRACE_PATH
07b86b52
JD
91 fi
92
96340a01 93 stop_lttng_tracing_ok $SESSION_NAME
67b4c664 94 destroy_lttng_session_ok $SESSION_NAME
07b86b52
JD
95}
96
0cb9c473 97function generate_filter_events_cpu0()
086e6add 98{
2a05e025
OD
99 # Generate many events (fill buffers) on a single CPU
100 taskset --cpu-list "$(get_any_available_cpu)" /bin/echo -n "$1" > /proc/lttng-test-filter-event 2> /dev/null
086e6add
MD
101}
102
103function test_kernel_local_snapshot_discard ()
104{
105 diag "Test local kernel snapshots with small discard buffers"
0cb9c473
MD
106
107 local event_name="lttng_test_filter_event"
108
109 modprobe lttng-test
086e6add
MD
110 create_lttng_session_no_output $SESSION_NAME
111 enable_lttng_mmap_discard_small_kernel_channel $SESSION_NAME \
112 $CHANNEL_NAME
0cb9c473 113 enable_kernel_lttng_event_ok $SESSION_NAME $event_name $CHANNEL_NAME
086e6add 114 start_lttng_tracing_ok $SESSION_NAME
9f0e230a 115 lttng_snapshot_add_output_ok $SESSION_NAME file://$TRACE_PATH
086e6add 116
0cb9c473 117 generate_filter_events_cpu0 10000
086e6add
MD
118
119 # Take first snapshot, remember first line.
120 lttng_snapshot_record $SESSION_NAME
121 FIRST_LINE="$(trace_first_line $TRACE_PATH/)"
122 diag "First line (1st snapshot): $FIRST_LINE"
123
124 rm -rf $TRACE_PATH
125
dcab3877 126 # Fill CPU 0's buffer and overwrite previous contents
0cb9c473 127 generate_filter_events_cpu0 10000
086e6add
MD
128
129 # Take 2nd snapshot, compare first line. In discard mode, they
130 # should still be the same.
131 lttng_snapshot_record $SESSION_NAME
132 FIRST_LINE_2="$(trace_first_line $TRACE_PATH/)"
133 diag "First line (2nd snapshot): $FIRST_LINE"
134 rm -rf $TRACE_PATH
135
136 if [ x"$FIRST_LINE" != x"$FIRST_LINE_2" ]; then
ce83431d 137 fail "First snapshot event do not match"
086e6add 138 else
ce83431d 139 pass "First snapshot event match"
086e6add
MD
140 fi
141
142 stop_lttng_tracing_ok $SESSION_NAME
143 destroy_lttng_session_ok $SESSION_NAME
0cb9c473 144 modprobe --remove lttng-test
086e6add
MD
145}
146
147function test_kernel_local_snapshot_overwrite_small_buffers ()
148{
149 diag "Test local kernel snapshot with small overwrite buffers"
0cb9c473
MD
150
151 local event_name="lttng_test_filter_event"
152
153 modprobe lttng-test
086e6add
MD
154 create_lttng_session_no_output $SESSION_NAME
155 enable_lttng_mmap_overwrite_small_kernel_channel $SESSION_NAME \
156 $CHANNEL_NAME
0cb9c473 157 enable_kernel_lttng_event_ok $SESSION_NAME $event_name $CHANNEL_NAME
086e6add 158 start_lttng_tracing_ok $SESSION_NAME
9f0e230a 159 lttng_snapshot_add_output_ok $SESSION_NAME file://$TRACE_PATH
086e6add 160
0cb9c473 161 generate_filter_events_cpu0 10000
086e6add
MD
162
163 # Take first snapshot, remember first line.
164 lttng_snapshot_record $SESSION_NAME
165 FIRST_LINE="$(trace_first_line $TRACE_PATH/)"
166 diag "First line (1st snapshot): $FIRST_LINE"
167
168 rm -rf $TRACE_PATH
169
dcab3877 170 # Fill CPU 0's buffer and overwrite previous contents
0cb9c473 171 generate_filter_events_cpu0 10000
086e6add
MD
172
173 # Take 2nd snapshot, compare first line. In overwrite mode, they
174 # WILL be different.
175 lttng_snapshot_record $SESSION_NAME
176 FIRST_LINE_2="$(trace_first_line $TRACE_PATH/)"
177 diag "First line (2nd snapshot): $FIRST_LINE_2"
178 rm -rf $TRACE_PATH
179
180 if [ x"$FIRST_LINE" != x"$FIRST_LINE_2" ]; then
ce83431d 181 pass "First snapshot event do not match"
086e6add 182 else
ce83431d 183 fail "First snapshot event match"
086e6add
MD
184 fi
185
186 stop_lttng_tracing_ok $SESSION_NAME
187 destroy_lttng_session_ok $SESSION_NAME
0cb9c473 188 modprobe --remove lttng-test
086e6add
MD
189}
190
07b86b52
JD
191function test_kernel_1000_local_snapshots ()
192{
193 NB_SNAP=1000
194
195 diag "Test local kernel snapshots"
196 create_lttng_session_no_output $SESSION_NAME
197 enable_lttng_mmap_overwrite_kernel_channel $SESSION_NAME $CHANNEL_NAME
198 lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
e563bbdb 199 start_lttng_tracing_ok $SESSION_NAME
9f0e230a 200 lttng_snapshot_add_output_ok $SESSION_NAME file://$TRACE_PATH
07b86b52
JD
201 for i in $(seq 1 $NB_SNAP); do
202 diag "Snapshot $i/$NB_SNAP"
203 rm -rf $TRACE_PATH/snapshot/* 2>/dev/null
204 lttng_snapshot_record $SESSION_NAME
205 # Validate test
78435723 206 validate_trace $EVENT_NAME $TRACE_PATH/
07b86b52
JD
207 if [ $? -eq 0 ]; then
208 # Only delete if successful
209 rm -rf $TRACE_PATH
210 else
211 break
212 fi
213 done
96340a01 214 stop_lttng_tracing_ok $SESSION_NAME
67b4c664 215 destroy_lttng_session_ok $SESSION_NAME
07b86b52
JD
216}
217
218plan_tests $NUM_TESTS
219
220print_test_banner "$TEST_DESC"
221
c125de8f
FD
222bail_out_if_no_babeltrace
223
3a174400 224check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
07b86b52 225{
9c8a3964
JR
226
227 validate_lttng_modules_present
228
07b86b52
JD
229 start_lttng_sessiond
230
231 #tests=( test_kernel_1000_local_snapshots )
086e6add
MD
232 tests=( test_kernel_local_snapshot
233 test_kernel_local_snapshot_after_stop
234 test_kernel_local_snapshot_append_to_metadata
235 test_kernel_local_snapshot_discard
236 test_kernel_local_snapshot_overwrite_small_buffers
237 test_kernel_1000_local_snapshots
238 )
07b86b52
JD
239
240 for fct_test in ${tests[@]};
241 do
242 SESSION_NAME=$(randstring 16 0)
243 ${fct_test}
244
245 done
246
247 stop_lttng_sessiond
248}
This page took 0.096817 seconds and 5 git commands to generate.