File: test_event_perf

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 (133 lines) | stat: -rwxr-xr-x 3,454 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
#!/bin/bash
#
# SPDX-FileCopyrightText: 2013 Christian Babeux <christian.babeux@efficios.com>
# SPDX-FileCopyrightText: 2014 Julien Desfossez <jdesfossez@efficios.com>
#
# SPDX-License-Identifier: GPL-2.0-only

TEST_DESC="UST tracer - Perf counters"

CURDIR=$(dirname $0)/
TESTDIR=$CURDIR/../..
SESSION_NAME="perf_counters"
EVENT_NAME="tp:tptest"
NUM_TESTS=24
NR_ITER=1
NR_USEC_WAIT=1
TESTAPP_PATH="$TESTDIR/utils/testapp"
TESTAPP_NAME="gen-ust-events"
TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"

source $TESTDIR/utils/utils.sh

function enable_ust_lttng_event_per_chan()
{
	sess_name="$1"
	event_name="$2"
	chan_name="$3"

	$TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" -s $sess_name -c $chan_name -u >/dev/null 2>&1
	ok $? "Enable event $event_name for session $sess_name in channel $chan_name"
}

function add_context_ust_skip_ok()
{
	local session_name=$1
	local channel_name=$2
	local context_name=$3
	local skip_num=$4

	local ret

	_run_lttng_cmd "$(lttng_client_log_file)" "$(lttng_client_err_file)" \
		add-context -u -s "$session_name" -c "$channel_name" \
		-t "$context_name"
	ret=$?

	if [ "$ret" == "4" ]; then
		skip 0 "Current UST lib doesn't implement '$context_name' context" "$skip_num"
	else
		ok $ret "Add context command for type: $context_name"
	fi

	return $ret
}

# Only test parsing of the enabling by raw ID
function test_parsing_raw()
{
	TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
	SESSION_NAME="ust_event_basic"
	CHAN_NAME="mychan"

	create_lttng_session_ok $SESSION_NAME $TRACE_PATH

	enable_ust_lttng_channel_ok $SESSION_NAME $CHAN_NAME

	enable_ust_lttng_event_per_chan $SESSION_NAME $EVENT_NAME $CHAN_NAME

	add_context_ust_skip_ok $SESSION_NAME $CHAN_NAME "perf:thread:raw:r0110:test" 1
	add_context_ust_fail $SESSION_NAME $CHAN_NAME "perf:thread:raw:rZZZ:test"
	add_context_ust_fail $SESSION_NAME $CHAN_NAME "perf:thread:raw:b0110:test"
	add_context_ust_fail $SESSION_NAME $CHAN_NAME "perf:thread:raw:r0110:"
	add_context_ust_fail $SESSION_NAME $CHAN_NAME "perf:thread:raw:r0110::"
	add_context_ust_fail $SESSION_NAME $CHAN_NAME "perf:thread:raw:r:test"
	add_context_ust_fail $SESSION_NAME $CHAN_NAME "perf:thread:raw:r::"
	add_context_ust_fail $SESSION_NAME $CHAN_NAME "perf:thread:raw::"
	add_context_ust_fail $SESSION_NAME $CHAN_NAME "perf:thread:raw"
	add_context_ust_fail $SESSION_NAME $CHAN_NAME "perf:thread:raw:r0110:test:wrong"

	destroy_lttng_session_ok $SESSION_NAME

	rm -rf $TRACE_PATH
}

function test_event_basic()
{
	TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
	SESSION_NAME="ust_event_basic"
	CHAN_NAME="mychan"

	local ret

	create_lttng_session_ok $SESSION_NAME $TRACE_PATH

	enable_ust_lttng_channel_ok $SESSION_NAME $CHAN_NAME

	enable_ust_lttng_event_per_chan $SESSION_NAME $EVENT_NAME $CHAN_NAME

	add_context_ust_skip_ok $SESSION_NAME $CHAN_NAME "perf:thread:page-fault" 4
	ret=$?

	if [ "$ret" != "4" ]; then
		start_lttng_tracing_ok

		$TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT >/dev/null 2>&1

		stop_lttng_tracing_ok

		validate_trace "perf_thread_page_fault" "$TRACE_PATH"
	fi

	destroy_lttng_session_ok $SESSION_NAME

	rm -rf "$TRACE_PATH"
}

# MUST set TESTDIR before calling those functions
plan_tests $NUM_TESTS

print_test_banner "$TEST_DESC"

bail_out_if_no_babeltrace

start_lttng_sessiond

test_parsing_raw

check_skip_kernel_test 8 "Skipping UST perf tests." ||
{
	test_event_basic
}

stop_lttng_sessiond