tests: Move to kernel style SPDX license identifiers
[lttng-tools.git] / tests / regression / kernel / test_rotation_destroy_flush
CommitLineData
eae79fb9
MD
1#!/bin/bash
2#
9d16b343
MJ
3# Copyright (C) 2013 Christian Babeux <christian.babeux@efficios.com>
4# Copyright (C) 2014, 2016 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
eae79fb9 5#
9d16b343 6# SPDX-License-Identifier: GPL-2.0-only
eae79fb9 7#
eae79fb9
MD
8
9TEST_DESC="Kernel tracer - Rotation destroy flush"
10
11CURDIR=$(dirname $0)/
12TESTDIR=$CURDIR/../..
13SESSION_NAME="rotation_destroy_flush"
14
15NR_ITER=10
16NUM_TESTS=$((13*$NR_ITER))
17EVENT_NAME="lttng_test_filter_event"
18CHANNEL_NAME="testchan"
19PAGE_SIZE=$(getconf PAGE_SIZE)
20SIZE_LIMIT=$PAGE_SIZE
21
22TESTCMD="echo -n 10000 > /proc/lttng-test-filter-event"
23
24# Ensure the daemons invoke abort on error.
25export LTTNG_ABORT_ON_ERROR=1
26
27source $TESTDIR/utils/utils.sh
28
29function signal_cleanup()
30{
31 diag "*** Exiting ***"
3be453c9
MD
32 modprobe -r lttng-test
33 full_cleanup
eae79fb9
MD
34}
35
36function enable_kernel_lttng_channel_size_limit ()
37{
38 sess_name="$1"
39 channel_name="$2"
40 tracefile_size_limit="$3"
41
42 test_name="Enable channel $channel_name "
43 test_name+="for session $sess_name: "
44 test_name+="$tracefile_size_limit bytes tracefile limit"
45
46 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel \
47 -k $channel_name -s $sess_name \
48 -C $tracefile_size_limit >/dev/null 2>&1
49
50 ok $? "$test_name"
51}
52
53function enable_kernel_lttng_event_per_channel ()
54{
55 sess_name="$1"
56 event_name="$2"
57 channel_name="$3"
58
59 test_name="Enable event $event_name "
60 test_name+="for session $sess_name "
61 test_name+="in channel $channel_name"
62
63 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" \
64 -s $sess_name -k -c $channel_name >/dev/null 2>&1
65
66 ok $? "$test_name"
67}
68
69function test_rotation_destroy_flush_single()
70{
71 start_lttng_sessiond
72 modprobe lttng-test
73
74 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
75 enable_kernel_lttng_channel_size_limit \
76 $SESSION_NAME $CHANNEL_NAME $SIZE_LIMIT
77 enable_kernel_lttng_event_per_channel \
78 $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
79 start_lttng_tracing_ok $SESSION_NAME
80 eval ${TESTCMD}
81 # stop and destroy
82 stop_lttng_tracing_ok $SESSION_NAME
83 destroy_lttng_session_ok $SESSION_NAME
84
85 rm -rf $TRACE_PATH
86
87 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
88 enable_kernel_lttng_channel_size_limit \
89 $SESSION_NAME $CHANNEL_NAME $SIZE_LIMIT
90 enable_kernel_lttng_event_per_channel \
91 $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
92 start_lttng_tracing_ok $SESSION_NAME
93 eval ${TESTCMD}
94 # destroy only
95 destroy_lttng_session_ok $SESSION_NAME
96
97 rm -rf $TRACE_PATH
98
3be453c9 99 modprobe -r lttng-test
eae79fb9
MD
100 stop_lttng_sessiond
101}
102
103function test_rotation_destroy_flush()
104{
105 for a in $(seq 1 ${NR_ITER}); do
106 diag "Iteration ${a}/${NR_ITER}"
107 test_rotation_destroy_flush_single
108 done
109}
110
111# MUST set TESTDIR before calling those functions
112plan_tests $NUM_TESTS
113
114print_test_banner "$TEST_DESC"
115
116TESTS=(
117 "test_rotation_destroy_flush"
118)
119
120TEST_COUNT=${#TESTS[@]}
121i=0
122
123if [ "$(id -u)" == "0" ]; then
124 isroot=1
125else
126 isroot=0
127fi
128
129skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS ||
130{
131 trap signal_cleanup SIGTERM SIGINT
132
133 while [ "$i" -lt "$TEST_COUNT" ]; do
134
135 TRACE_PATH=$(mktemp -d)
136
137 # Execute test
138 ${TESTS[$i]}
139
140 let "i++"
141 done
142}
This page took 0.042232 seconds and 5 git commands to generate.