Tests: clean-up: remove trailing dot in snapshot test statements
[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=61
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 $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/snapshot-1*
131 if [ $? -ne 0 ]; then
132 return 1
133 fi
134 set -u
135 rm -rf $TRACE_PATH/$HOSTNAME
136 set +u
137 done
138
139 destroy_lttng_session_ok $SESSION_NAME
140 return 0
141 }
142
143 plan_tests $NUM_TESTS
144
145 print_test_banner "$TEST_DESC"
146
147 if [ "$(id -u)" == "0" ]; then
148 isroot=1
149 else
150 isroot=0
151 fi
152
153 skip $isroot "Root access is needed. Skipping all kernel streaming tests" $NUM_TESTS ||
154 {
155 validate_lttng_modules_present
156
157 start_lttng_relayd "-o $TRACE_PATH"
158 start_lttng_sessiond
159
160 tests=( test_kernel_default_name
161 test_kernel_custom_name
162 test_kernel_default_name_with_del
163 test_kernel_n_snapshot
164 )
165
166 for fct_test in ${tests[@]};
167 do
168 SESSION_NAME=$(randstring 16 0)
169 ${fct_test}
170 if [ $? -eq 0 ]; then
171 # Only delete if successful
172 rm -rf $TRACE_PATH
173 else
174 break
175 fi
176 done
177
178 stop_lttng_sessiond
179 stop_lttng_relayd
180 }
This page took 0.032561 seconds and 4 git commands to generate.