SoW-2020-0002: Trace Hit Counters: trigger error reporting integration
[lttng-tools.git] / tests / regression / tools / tracefile-limits / test_tracefile_size
... / ...
CommitLineData
1#!/bin/bash
2#
3# Copyright (C) 2013 Christian Babeux <christian.babeux@efficios.com>
4#
5# SPDX-License-Identifier: LGPL-2.1-only
6
7TEST_DESC="Tracefile size limits"
8
9CURDIR=$(dirname $0)/
10TESTDIR=$CURDIR/../../..
11
12NR_ITER=1000
13
14PAGE_SIZE=$(getconf PAGE_SIZE)
15
16TESTAPP_PATH="$TESTDIR/utils/testapp"
17TESTAPP_NAME="gen-ust-events"
18TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
19
20NUM_TESTS=66
21
22source $TESTDIR/utils/utils.sh
23
24if [ ! -x "$TESTAPP_BIN" ]; then
25 BAIL_OUT "No UST events binary detected."
26fi
27
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 \
39 -u $channel_name -s $sess_name --buffers-pid \
40 --subbuf-size=$PAGE_SIZE \
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{
87 size_limit="$1"
88 trace_path=$(mktemp -d)
89 session_name=$(randstring 16 0)
90 channel_name="channel"
91 event_name="tp:tptest"
92
93 diag "Test tracefile size limit : $size_limit bytes"
94
95 create_lttng_session_ok $session_name $trace_path
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
103 start_lttng_tracing_ok $session_name
104
105 $TESTAPP_BIN -i $NR_ITER >/dev/null 2>&1
106
107 stop_lttng_tracing_ok $session_name
108
109 destroy_lttng_session_ok $session_name
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
118 validate_trace $event_name $trace_path
119
120 rm -rf $trace_path
121}
122
123function test_tracefile_size_limit_pagesize ()
124{
125 # Set a size limit lower than the page_size
126 size_limit="$(($PAGE_SIZE-2))"
127 trace_path=$(mktemp -d)
128 session_name=$(randstring 16 0)
129 channel_name="channel"
130 event_name="tp:tptest"
131
132 diag "Test tracefile size limit lower than PAGE_SIZE : $size_limit bytes"
133
134 create_lttng_session_ok $session_name $trace_path
135
136 enable_lttng_channel_size_limit \
137 $session_name $channel_name $size_limit
138
139 enable_ust_lttng_event_per_channel \
140 $session_name $event_name $channel_name
141
142 start_lttng_tracing_ok $session_name
143
144 $TESTAPP_BIN -i $NR_ITER >/dev/null 2>&1
145
146 stop_lttng_tracing_ok $session_name
147
148 destroy_lttng_session_ok $session_name
149
150 # Validate file size, expect file size to be equal to the page size
151
152 check_file_size $trace_path "${channel_name}_*" $PAGE_SIZE
153
154 # Validate tracing data, we should at least have some events
155
156 validate_trace $event_name $trace_path
157
158 rm -rf $trace_path
159}
160
161plan_tests $NUM_TESTS
162
163print_test_banner "$TEST_DESC"
164
165start_lttng_sessiond
166
167# Test with multiples of PAGE_SIZE
168LIMITS=("$(($PAGE_SIZE))"
169 "$(($PAGE_SIZE*2))"
170 "$(($PAGE_SIZE*4))"
171 "$(($PAGE_SIZE*8))"
172 "$(($PAGE_SIZE*16))"
173 "$(($PAGE_SIZE*32))")
174
175for limit in ${LIMITS[@]};
176do
177 test_tracefile_size_limit $limit
178done
179
180# Test with a value that is not a multiple of PAGE_SIZE
181test_tracefile_size_limit "$(($PAGE_SIZE+1024))"
182
183# Test that a value lower than the PAGE_SIZE is rounded to it
184test_tracefile_size_limit_pagesize
185
186stop_lttng_sessiond
This page took 0.023584 seconds and 5 git commands to generate.