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 (139 lines) | stat: -rwxr-xr-x 3,059 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
#!/bin/bash
#
# SPDX-FileCopyrightText: 2015 Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
# SPDX-FileCopyrightText: 2016 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
#
# SPDX-License-Identifier: LGPL-2.1-only

TEST_DESC="UST - Rotation destroy flush"

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

TESTAPP_PATH="$TESTDIR/utils/testapp"
TESTAPP_NAME="gen-ust-events"
TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
NUM_EVENT=1000000
EVENT_NAME="tp:tptest"
CHANNEL_NAME="testchan"
PAGE_SIZE=$(getconf PAGE_SIZE)
SIZE_LIMIT=$PAGE_SIZE

NR_ITER=10
NUM_TESTS=$((15*$NR_ITER))

source $TESTDIR/utils/utils.sh

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

# MUST set TESTDIR before calling those functions
function run_app()
{
	$TESTAPP_BIN -i $NUM_EVENT
	ok $? "Application done"
}

function signal_cleanup()
{
	diag "*** Exiting ***"
	full_cleanup
}

function enable_ust_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"

	$TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel \
	    -u $channel_name -s $sess_name --buffer-ownership=process \
	    -C $tracefile_size_limit >/dev/null 2>&1

	ok $? "$test_name"
}

function enable_ust_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"

	$TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" \
	    -s $sess_name -u -c $channel_name >/dev/null 2>&1

	ok $? "$test_name"
}

function test_rotation_destroy_flush_single()
{
	start_lttng_sessiond

	create_lttng_session_ok $SESSION_NAME $TRACE_PATH
	enable_ust_lttng_channel_size_limit \
		$SESSION_NAME $CHANNEL_NAME $SIZE_LIMIT
	enable_ust_lttng_event_per_channel \
		$SESSION_NAME $EVENT_NAME $CHANNEL_NAME
	start_lttng_tracing_ok $SESSION_NAME
	run_app
	# 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_ust_lttng_channel_size_limit \
		$SESSION_NAME $CHANNEL_NAME $SIZE_LIMIT
	enable_ust_lttng_event_per_channel \
		$SESSION_NAME $EVENT_NAME $CHANNEL_NAME
	start_lttng_tracing_ok $SESSION_NAME
	run_app
	# destroy only
	destroy_lttng_session_ok $SESSION_NAME

	rm -rf $TRACE_PATH

	stop_lttng_sessiond
}

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


plan_tests $NUM_TESTS

print_test_banner "$TEST_DESC"

TESTS=(
	"test_rotation_destroy_flush"
)

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

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

	trap signal_cleanup SIGTERM SIGINT

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

	# Execute test
	${TESTS[$i]}

	let "i++"
done