File: test_kernel

package info (click to toggle)
ltt-control 2.14.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 21,860 kB
  • sloc: cpp: 192,012; sh: 28,777; ansic: 10,960; python: 7,108; makefile: 3,520; java: 109; xml: 46
file content (134 lines) | stat: -rwxr-xr-x 3,432 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#!/bin/bash
#
# SPDX-FileCopyrightText: 2017 Julien Desfossez <jdesfossez@efficios.com>
#
# SPDX-License-Identifier: LGPL-2.1-only

TEST_DESC="Rotation - Kernel tracing"

CURDIR=$(dirname $0)/
TESTDIR=$CURDIR/../../..
EVENT_NAME="lttng_test_filter_event"

TRACE_PATH=$(mktemp -d -t tmp.rotation_kernel_tracing.XXXXXX)

NUM_TESTS=68

source $TESTDIR/utils/utils.sh
source $CURDIR/rotate_utils.sh

function rotate_kernel_test ()
{
	local_path=$1

	lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME
	start_lttng_tracing_ok $SESSION_NAME

	today=$(date +%Y%m%d)
	# First chunk contains 10 events.
	echo -n "10" > /proc/lttng-test-filter-event
	rotate_session_ok $SESSION_NAME

	# Second chunk contains 20 events.
	echo -n "20" > /proc/lttng-test-filter-event
	stop_lttng_tracing_ok $SESSION_NAME

	# Third chunk contains no event (rotate after stop).
	rotate_session_ok $SESSION_NAME

	destroy_lttng_session_ok $SESSION_NAME

	validate_test_chunks $local_path $today kernel kernel
}

function test_kernel_streaming ()
{
	diag "Test kernel streaming with session rotation"
	create_lttng_session_uri $SESSION_NAME net://localhost
	rotate_kernel_test "${TRACE_PATH}/${HOSTNAME}/${SESSION_NAME}*/archives"
}

function test_kernel_local ()
{
	diag "Test kernel local with session rotation"
	create_lttng_session_ok $SESSION_NAME $TRACE_PATH

	rotate_kernel_test "${TRACE_PATH}/archives"
}

function test_kernel_local_timer ()
{
	diag "Test kernel local with session rotation timer"
	create_lttng_session_ok $SESSION_NAME $TRACE_PATH
	lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME
	lttng_enable_rotation_timer_ok $SESSION_NAME 500ms
	start_lttng_tracing_ok $SESSION_NAME

	rotate_timer_test "${TRACE_PATH}/archives" 0
}

function test_kernel_streaming_timer ()
{
	diag "Test kernel remote with session rotation timer"
	create_lttng_session_uri $SESSION_NAME net://localhost
	lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME
	lttng_enable_rotation_timer_ok $SESSION_NAME 500ms
	start_lttng_tracing_ok $SESSION_NAME

	rotate_timer_test "${TRACE_PATH}/${HOSTNAME}/${SESSION_NAME}*/archives" 0
}

function produce_n_events ()
{
	local event_count=$1

	echo -n $event_count > /proc/lttng-test-filter-event
}

function test_kernel_local_size ()
{
	diag "Rotate kernel local session every 2MiB"
	local size_threshold=$((2 * 1024 * 1024))

	diag "Test ust local with size-based session rotation per-uid"
	create_lttng_session_ok $SESSION_NAME $TRACE_PATH
	enable_kernel_lttng_event_ok $SESSION_NAME $EVENT_NAME "channel0"
	lttng_enable_rotation_size_ok $SESSION_NAME $size_threshold
	start_lttng_tracing_ok $SESSION_NAME

	# Cutoff at 100 times the expected size
	trace_until_n_archives produce_n_events "$TRACE_PATH" 5 $((5 * 100 * size_threshold))

	destroy_lttng_session_ok $SESSION_NAME
}

plan_tests $NUM_TESTS

print_test_banner "$TEST_DESC"
bail_out_if_no_babeltrace

check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
{
	lttng_modules_loaded_fail
	validate_lttng_modules_present

	start_lttng_relayd "-o $TRACE_PATH"
	start_lttng_sessiond
	modprobe lttng-test

	tests=( test_kernel_streaming test_kernel_local test_kernel_local_timer test_kernel_streaming_timer test_kernel_local_size )

	for fct_test in ${tests[@]};
	do
		SESSION_NAME=$(randstring 16 0)
		${fct_test}
		clean_path $TRACE_PATH
	done

	modprobe --remove lttng-test
	stop_lttng_sessiond
	stop_lttng_relayd
	lttng_modules_loaded_fail
}

rm -rf $TRACE_PATH