File: test_kernel_streaming

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 (175 lines) | stat: -rwxr-xr-x 4,742 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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
#!/bin/bash
#
# SPDX-FileCopyrightText: 2013 David Goulet <dgoulet@efficios.com>
#
# SPDX-License-Identifier: LGPL-2.1-only

TEST_DESC="Streaming - Snapshot Kernel tracing"

CURDIR=$(dirname $0)/
TESTDIR=$CURDIR/../../..
EVENT_NAME="sched_switch"
SESSION_NAME=""
CHANNEL_NAME="chan1"

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

NUM_TESTS=66

source $TESTDIR/utils/utils.sh

function snapshot_add_output ()
{
	local sess_name=$1
	local trace_path=$2
	local name=$3
	local extra_opt=""

	if [ ! -z $name ]; then
		extra_opt="-n $name"
	fi

	$TESTDIR/../src/bin/lttng/$LTTNG_BIN snapshot add-output -s $sess_name $extra_opt $trace_path >/dev/null 2>&1
	ok $? "Added snapshot output $trace_path"
}

# Test a snapshot using a default name for the output destination.
function test_kernel_default_name_with_del()
{
	diag "Test kernel snapshot streaming with default name with delete output"
	create_lttng_session_no_output $SESSION_NAME
	enable_lttng_mmap_overwrite_kernel_channel $SESSION_NAME $CHANNEL_NAME
	lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
	start_lttng_tracing_ok $SESSION_NAME
	snapshot_add_output $SESSION_NAME "net://localhost"
	lttng_snapshot_record $SESSION_NAME

	# Validate test
	retry_validate_trace $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/snapshot-1*
	if [ $? -ne 0 ]; then
		return $?
	fi

	lttng_snapshot_del_output_ok $SESSION_NAME 1
	snapshot_add_output $SESSION_NAME "net://localhost"
	lttng_snapshot_record $SESSION_NAME

	# Validate test with the next ID since a del output was done prior.
	retry_validate_trace $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/snapshot-2*
	if [ $? -ne 0 ]; then
		return $?
	fi

	stop_lttng_tracing_ok $SESSION_NAME
	destroy_lttng_session_ok $SESSION_NAME

	return 0
}

# Test a snapshot using a default name for the output destination.
function test_kernel_default_name()
{
	diag "Test kernel snapshot streaming with default name"
	create_lttng_session_no_output $SESSION_NAME
	enable_lttng_mmap_overwrite_kernel_channel $SESSION_NAME $CHANNEL_NAME
	lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
	start_lttng_tracing_ok $SESSION_NAME
	snapshot_add_output $SESSION_NAME "net://localhost"
	lttng_snapshot_record $SESSION_NAME
	stop_lttng_tracing_ok $SESSION_NAME
	destroy_lttng_session_ok $SESSION_NAME
	# Validate test
	retry_validate_trace $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/snapshot-1*
	out=$?

	return $out
}

# Test a snapshot using a custom name for the output destination.
function test_kernel_custom_name()
{
	local out
	local name="asnapshotname"

	diag "Test kernel snapshot streaming with custom name"
	create_lttng_session_no_output $SESSION_NAME
	enable_lttng_mmap_overwrite_kernel_channel $SESSION_NAME $CHANNEL_NAME
	lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
	start_lttng_tracing_ok $SESSION_NAME
	snapshot_add_output $SESSION_NAME "net://localhost" $name
	lttng_snapshot_record $SESSION_NAME
	stop_lttng_tracing_ok $SESSION_NAME
	destroy_lttng_session_ok $SESSION_NAME

	if ls $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/$name* &> /dev/null; then
		ok 0 "Custom name snapshot exists"
		# Validate test
		retry_validate_trace $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/$name-*
		out=$?
	else
		fail "No custom name snapshot found"
		out=1
	fi

	return $out
}

function test_kernel_n_snapshot()
{
	diag "Test kernel snapshot streaming multiple consecutive snapshot"
	create_lttng_session_no_output $SESSION_NAME
	enable_lttng_mmap_overwrite_kernel_channel $SESSION_NAME $CHANNEL_NAME
	lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
	snapshot_add_output $SESSION_NAME "net://localhost"

	for i in {1..5};
	do
		start_lttng_tracing_ok $SESSION_NAME
		lttng_snapshot_record $SESSION_NAME
		stop_lttng_tracing_ok $SESSION_NAME
		validate_trace_path_kernel_snapshot_network "$TRACE_PATH" "$SESSION_NAME" "snapshot-1" $(( i - 1 )) ""
		retry_validate_trace $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/snapshot-1*
		if [ $? -ne 0 ]; then
			return 1
		fi
		set -u
		rm -rf $TRACE_PATH/$HOSTNAME
		set +u
	done

	destroy_lttng_session_ok $SESSION_NAME
	return 0
}

plan_tests $NUM_TESTS

print_test_banner "$TEST_DESC"

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

	start_lttng_relayd "-o $TRACE_PATH"
	start_lttng_sessiond

	tests=( test_kernel_default_name
		test_kernel_custom_name
		test_kernel_default_name_with_del
		test_kernel_n_snapshot
	)

	for fct_test in ${tests[@]};
	do
		SESSION_NAME=$(randstring 16 0)
		${fct_test}
		if [ $? -eq 0 ]; then
			# Only delete if successful
			rm -rf $TRACE_PATH
		else
			break
		fi
	done

	stop_lttng_sessiond
	stop_lttng_relayd
}