docs: Add supported versions and fix-backport policy
[lttng-tools.git] / tests / regression / tools / tracefile-limits / test_tracefile_size
CommitLineData
34497a63
CB
1#!/bin/bash
2#
9d16b343 3# Copyright (C) 2013 Christian Babeux <christian.babeux@efficios.com>
34497a63 4#
9d16b343 5# SPDX-License-Identifier: LGPL-2.1-only
34497a63
CB
6
7TEST_DESC="Tracefile size limits"
8
9CURDIR=$(dirname $0)/
10TESTDIR=$CURDIR/../../..
11
12NR_ITER=1000
13
034a7848
MJ
14PAGE_SIZE=$(getconf PAGE_SIZE)
15
34497a63
CB
16TESTAPP_PATH="$TESTDIR/utils/testapp"
17TESTAPP_NAME="gen-ust-events"
18TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
19
bd666153 20NUM_TESTS=74
34497a63
CB
21
22source $TESTDIR/utils/utils.sh
23
24if [ ! -x "$TESTAPP_BIN" ]; then
25 BAIL_OUT "No UST events binary detected."
26fi
27
34497a63
CB
28function enable_lttng_channel_size_limit ()
29{
30 sess_name="$1"
31 channel_name="$2"
32 tracefile_size_limit="$3"
33
34 test_name="Enable channel $channel_name "
35 test_name+="for session $sess_name: "
36 test_name+="$tracefile_size_limit bytes tracefile limit"
37
38 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel \
c1b8e6f8 39 -u $channel_name -s $sess_name --buffers-pid \
88ec6b80 40 --subbuf-size=$PAGE_SIZE \
34497a63
CB
41 -C $tracefile_size_limit >/dev/null 2>&1
42
43 ok $? "$test_name"
44}
45
46function enable_ust_lttng_event_per_channel ()
47{
48 sess_name="$1"
49 event_name="$2"
50 channel_name="$3"
51
52 test_name="Enable event $event_name "
53 test_name+="for session $sess_name "
54 test_name+="in channel $channel_name"
55
56 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" \
57 -s $sess_name -u -c $channel_name >/dev/null 2>&1
58
59 ok $? "$test_name"
60}
61
62function check_file_size ()
63{
64 path="$1"
65 file_pattern="$2"
66 expected_max_size="$3"
67
68 find $path -name "$file_pattern" -exec stat -c '%n %s' {} \; \
69 | while read file_info;
70 do
71 name=$(echo $file_info | cut -f1 -d ' ')
72 size=$(echo $file_info | cut -f2 -d ' ')
73
74 if [ "$size" -gt "$expected_max_size" ]; then
75 diag_msg="file: $name size: $size"
76 diag_msg+="expected maximum size: $expected_max_size"
77 diag "$diag_msg"
78 exit 1
79 fi
80 done
81
82 ok $? "File size validation"
83}
84
85function test_tracefile_size_limit ()
86{
33e55711 87 local size_limit="$1"
8d5a3312 88 local trace_path=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
33e55711
FD
89 local session_name=$(randstring 16 0)
90 local channel_name="channel"
91 local event_name="tp:tptest"
34497a63
CB
92
93 diag "Test tracefile size limit : $size_limit bytes"
94
bf6ae429 95 create_lttng_session_ok $session_name $trace_path
34497a63
CB
96
97 enable_lttng_channel_size_limit \
98 $session_name $channel_name $size_limit
99
100 enable_ust_lttng_event_per_channel \
101 $session_name $event_name $channel_name
102
e563bbdb 103 start_lttng_tracing_ok $session_name
34497a63 104
6c4a91d6 105 $TESTAPP_BIN -i $NR_ITER >/dev/null 2>&1
34497a63 106
96340a01 107 stop_lttng_tracing_ok $session_name
34497a63 108
67b4c664 109 destroy_lttng_session_ok $session_name
34497a63
CB
110
111 # Validate file size, each one shall be no larger than the
112 # specified size limit
113
114 check_file_size $trace_path "${channel_name}_*" $size_limit
115
116 # Validate tracing data, we should at least have some events
117
cad725b1 118 validate_trace_path_ust_pid "$trace_path" "" "gen-ust-events"
34497a63
CB
119 validate_trace $event_name $trace_path
120
121 rm -rf $trace_path
122}
123
034a7848
MJ
124function test_tracefile_size_limit_pagesize ()
125{
126 # Set a size limit lower than the page_size
33e55711 127 local size_limit="$(($PAGE_SIZE-2))"
8d5a3312 128 local trace_path=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
33e55711
FD
129 local session_name=$(randstring 16 0)
130 local channel_name="channel"
131 local event_name="tp:tptest"
034a7848
MJ
132
133 diag "Test tracefile size limit lower than PAGE_SIZE : $size_limit bytes"
134
135 create_lttng_session_ok $session_name $trace_path
136
137 enable_lttng_channel_size_limit \
138 $session_name $channel_name $size_limit
139
140 enable_ust_lttng_event_per_channel \
141 $session_name $event_name $channel_name
142
143 start_lttng_tracing_ok $session_name
144
6c4a91d6 145 $TESTAPP_BIN -i $NR_ITER >/dev/null 2>&1
034a7848
MJ
146
147 stop_lttng_tracing_ok $session_name
148
149 destroy_lttng_session_ok $session_name
150
151 # Validate file size, expect file size to be equal to the page size
152
153 check_file_size $trace_path "${channel_name}_*" $PAGE_SIZE
154
155 # Validate tracing data, we should at least have some events
156
cad725b1 157 validate_trace_path_ust_pid "$trace_path" "" "gen-ust-events"
034a7848
MJ
158 validate_trace $event_name $trace_path
159
160 rm -rf $trace_path
161}
162
34497a63
CB
163plan_tests $NUM_TESTS
164
165print_test_banner "$TEST_DESC"
166
c125de8f
FD
167bail_out_if_no_babeltrace
168
34497a63
CB
169start_lttng_sessiond
170
034a7848
MJ
171# Test with multiples of PAGE_SIZE
172LIMITS=("$(($PAGE_SIZE))"
173 "$(($PAGE_SIZE*2))"
174 "$(($PAGE_SIZE*4))"
175 "$(($PAGE_SIZE*8))"
176 "$(($PAGE_SIZE*16))"
177 "$(($PAGE_SIZE*32))")
34497a63
CB
178
179for limit in ${LIMITS[@]};
180do
181 test_tracefile_size_limit $limit
182done
183
034a7848
MJ
184# Test with a value that is not a multiple of PAGE_SIZE
185test_tracefile_size_limit "$(($PAGE_SIZE+1024))"
186
187# Test that a value lower than the PAGE_SIZE is rounded to it
188test_tracefile_size_limit_pagesize
189
34497a63 190stop_lttng_sessiond
This page took 0.067015 seconds and 5 git commands to generate.