273bcdd04d00222a25adc0e5c811273b455cec29
[lttng-tools.git] / tests / regression / tools / snapshots / test_kernel_streaming
1 #!/bin/bash
2 #
3 # Copyright (C) 2013 David Goulet <dgoulet@efficios.com>
4 #
5 # SPDX-License-Identifier: LGPL-2.1-only
6
7 TEST_DESC="Streaming - Snapshot Kernel tracing"
8
9 CURDIR=$(dirname $0)/
10 TESTDIR=$CURDIR/../../..
11 EVENT_NAME="sched_switch"
12 SESSION_NAME=""
13 CHANNEL_NAME="chan1"
14
15 TRACE_PATH=$(mktemp -d)
16
17 NUM_TESTS=66
18
19 source $TESTDIR/utils/utils.sh
20
21 function snapshot_add_output ()
22 {
23 local sess_name=$1
24 local trace_path=$2
25 local name=$3
26 local extra_opt=""
27
28 if [ ! -z $name ]; then
29 extra_opt="-n $name"
30 fi
31
32 $TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot add-output -s $sess_name $extra_opt $trace_path >/dev/null 2>&1
33 ok $? "Added snapshot output $trace_path"
34 }
35
36 # Test a snapshot using a default name for the output destination.
37 function test_kernel_default_name_with_del()
38 {
39 diag "Test kernel snapshot streaming with default name with delete output"
40 create_lttng_session_no_output $SESSION_NAME
41 enable_lttng_mmap_overwrite_kernel_channel $SESSION_NAME $CHANNEL_NAME
42 lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
43 start_lttng_tracing_ok $SESSION_NAME
44 snapshot_add_output $SESSION_NAME "net://localhost"
45 lttng_snapshot_record $SESSION_NAME
46
47 # Validate test
48 validate_trace $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/snapshot-1*
49 if [ $? -ne 0 ]; then
50 return $?
51 fi
52
53 lttng_snapshot_del_output_ok $SESSION_NAME 1
54 snapshot_add_output $SESSION_NAME "net://localhost"
55 lttng_snapshot_record $SESSION_NAME
56
57 # Validate test with the next ID since a del output was done prior.
58 validate_trace $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/snapshot-2*
59 if [ $? -ne 0 ]; then
60 return $?
61 fi
62
63 stop_lttng_tracing_ok $SESSION_NAME
64 destroy_lttng_session_ok $SESSION_NAME
65
66 return 0
67 }
68
69 # Test a snapshot using a default name for the output destination.
70 function test_kernel_default_name()
71 {
72 diag "Test kernel snapshot streaming with default name"
73 create_lttng_session_no_output $SESSION_NAME
74 enable_lttng_mmap_overwrite_kernel_channel $SESSION_NAME $CHANNEL_NAME
75 lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
76 start_lttng_tracing_ok $SESSION_NAME
77 snapshot_add_output $SESSION_NAME "net://localhost"
78 lttng_snapshot_record $SESSION_NAME
79 stop_lttng_tracing_ok $SESSION_NAME
80 destroy_lttng_session_ok $SESSION_NAME
81 # Validate test
82 validate_trace $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/snapshot-1*
83 out=$?
84
85 return $out
86 }
87
88 # Test a snapshot using a custom name for the output destination.
89 function test_kernel_custom_name()
90 {
91 local out
92 local name="asnapshotname"
93
94 diag "Test kernel snapshot streaming with custom name"
95 create_lttng_session_no_output $SESSION_NAME
96 enable_lttng_mmap_overwrite_kernel_channel $SESSION_NAME $CHANNEL_NAME
97 lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
98 start_lttng_tracing_ok $SESSION_NAME
99 snapshot_add_output $SESSION_NAME "net://localhost" $name
100 lttng_snapshot_record $SESSION_NAME
101 stop_lttng_tracing_ok $SESSION_NAME
102 destroy_lttng_session_ok $SESSION_NAME
103
104 if ls $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/$name* &> /dev/null; then
105 ok 0 "Custom name snapshot exists"
106 # Validate test
107 validate_trace $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/$name-*
108 out=$?
109 else
110 fail "No custom name snapshot found"
111 out=1
112 fi
113
114 return $out
115 }
116
117 function test_kernel_n_snapshot()
118 {
119 diag "Test kernel snapshot streaming multiple consecutive snapshot"
120 create_lttng_session_no_output $SESSION_NAME
121 enable_lttng_mmap_overwrite_kernel_channel $SESSION_NAME $CHANNEL_NAME
122 lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
123 snapshot_add_output $SESSION_NAME "net://localhost"
124
125 for i in {1..5};
126 do
127 start_lttng_tracing_ok $SESSION_NAME
128 lttng_snapshot_record $SESSION_NAME
129 stop_lttng_tracing_ok $SESSION_NAME
130 validate_trace_path_kernel_snapshot_network "$TRACE_PATH" "$SESSION_NAME" "snapshot-1" $(( i - 1 )) ""
131 validate_trace $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/snapshot-1*
132 if [ $? -ne 0 ]; then
133 return 1
134 fi
135 set -u
136 rm -rf $TRACE_PATH/$HOSTNAME
137 set +u
138 done
139
140 destroy_lttng_session_ok $SESSION_NAME
141 return 0
142 }
143
144 plan_tests $NUM_TESTS
145
146 print_test_banner "$TEST_DESC"
147
148 if [ "$(id -u)" == "0" ]; then
149 isroot=1
150 else
151 isroot=0
152 fi
153
154 skip $isroot "Root access is needed. Skipping all kernel streaming tests" $NUM_TESTS ||
155 {
156 validate_lttng_modules_present
157
158 start_lttng_relayd "-o $TRACE_PATH"
159 start_lttng_sessiond
160
161 tests=( test_kernel_default_name
162 test_kernel_custom_name
163 test_kernel_default_name_with_del
164 test_kernel_n_snapshot
165 )
166
167 for fct_test in ${tests[@]};
168 do
169 SESSION_NAME=$(randstring 16 0)
170 ${fct_test}
171 if [ $? -eq 0 ]; then
172 # Only delete if successful
173 rm -rf $TRACE_PATH
174 else
175 break
176 fi
177 done
178
179 stop_lttng_sessiond
180 stop_lttng_relayd
181 }
This page took 0.032417 seconds and 3 git commands to generate.