File: test_rotation_destroy_flush

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 (141 lines) | stat: -rwxr-xr-x 3,217 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
135
136
137
138
139
140
141
#!/bin/bash
#
# SPDX-FileCopyrightText: 2013 Christian Babeux <christian.babeux@efficios.com>
# Copyright (C) 2014, 2016 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
#
# SPDX-License-Identifier: GPL-2.0-only
#

TEST_DESC="Kernel tracer - Rotation destroy flush"

CURDIR=$(dirname $0)/
TESTDIR=$CURDIR/../..
SESSION_NAME="rotation_destroy_flush"

NR_ITER=10
NUM_TESTS=$((15*$NR_ITER))
EVENT_NAME="lttng_test_filter_event"
CHANNEL_NAME="testchan"
PAGE_SIZE=$(getconf PAGE_SIZE)
SIZE_LIMIT=$PAGE_SIZE

TESTCMD="echo -n 10000 > /proc/lttng-test-filter-event"

# Ensure the daemons invoke abort on error.
export LTTNG_ABORT_ON_ERROR=1

source $TESTDIR/utils/utils.sh

function signal_cleanup()
{
	diag "*** Exiting ***"
	modprobe --remove lttng-test
	full_cleanup
}

function enable_kernel_lttng_channel_size_limit ()
{
	sess_name="$1"
	channel_name="$2"
	tracefile_size_limit="$3"

	test_name="Enable channel $channel_name "
	test_name+="for session $sess_name: "
	test_name+="$tracefile_size_limit bytes tracefile limit"

	_run_lttng_cmd "$(lttng_client_log_file)" "$(lttng_client_err_file)" \
		enable-channel \
		--kernel "$channel_name" --session "$sess_name" \
		--tracefile-size $tracefile_size_limit

	ok $? "$test_name"
}

function enable_kernel_lttng_event_per_channel ()
{
	sess_name="$1"
	event_name="$2"
	channel_name="$3"

	test_name="Enable event $event_name "
	test_name+="for session $sess_name "
	test_name+="in channel $channel_name"

	_run_lttng_cmd "$(lttng_client_log_file)" "$(lttng_client_err_file)" \
		enable-event "$event_name" \
		--session "$sess_name" --kernel --channel "$channel_name"

	ok $? "$test_name"
}

function test_rotation_destroy_flush_single()
{
	lttng_modules_loaded_fail
	start_lttng_sessiond
	modprobe lttng-test

	create_lttng_session_ok $SESSION_NAME $TRACE_PATH
	enable_kernel_lttng_channel_size_limit \
		$SESSION_NAME $CHANNEL_NAME $SIZE_LIMIT
	enable_kernel_lttng_event_per_channel \
		$SESSION_NAME $EVENT_NAME $CHANNEL_NAME
	start_lttng_tracing_ok $SESSION_NAME
	eval ${TESTCMD}
	# stop and destroy
	stop_lttng_tracing_ok $SESSION_NAME
	destroy_lttng_session_ok $SESSION_NAME

	rm -rf $TRACE_PATH

	create_lttng_session_ok $SESSION_NAME $TRACE_PATH
	enable_kernel_lttng_channel_size_limit \
		$SESSION_NAME $CHANNEL_NAME $SIZE_LIMIT
	enable_kernel_lttng_event_per_channel \
		$SESSION_NAME $EVENT_NAME $CHANNEL_NAME
	start_lttng_tracing_ok $SESSION_NAME
	eval ${TESTCMD}
	# destroy only
	destroy_lttng_session_ok $SESSION_NAME

	rm -rf $TRACE_PATH

	modprobe --remove lttng-test
	stop_lttng_sessiond
	lttng_modules_loaded_fail
}

function test_rotation_destroy_flush()
{
	for a in $(seq 1 ${NR_ITER}); do
		diag "Iteration ${a}/${NR_ITER}"
		test_rotation_destroy_flush_single
	done
}

# MUST set TESTDIR before calling those functions
plan_tests $NUM_TESTS

print_test_banner "$TEST_DESC"

TESTS=(
	"test_rotation_destroy_flush"
)

TEST_COUNT=${#TESTS[@]}
i=0

check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
{
	validate_lttng_modules_present
	trap signal_cleanup SIGTERM SIGINT

	while [ "$i" -lt "$TEST_COUNT" ]; do

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

		# Execute test
		${TESTS[$i]}

		let "i++"
	done
}