File: test_lttng_logger

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 (125 lines) | stat: -rwxr-xr-x 2,775 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
#!/bin/bash
#
# SPDX-FileCopyrightText: 2017 Julien Desfossez <jdesfossez@efficios.com>
#
# SPDX-License-Identifier: GPL-2.0-only
#

TEST_DESC="Kernel tracer - lttng-logger"

CURDIR=$(dirname $0)/
TESTDIR=$CURDIR/../..
NUM_TESTS=32
PAYLOAD="test_logger"
SESSION_NAME="kernel_event_basic"

source $TESTDIR/utils/utils.sh

function test_proc_logger()
{
	diag "Test /proc/lttng-logger"

	local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")

	create_lttng_session_ok $SESSION_NAME $TRACE_PATH

	lttng_enable_kernel_event $SESSION_NAME "lttng_logger"

	start_lttng_tracing_ok

	test -e /proc/lttng-logger
	if test $? = 0; then
		pass "/proc/lttng-logger exists"
		echo -n "$PAYLOAD proc" > /proc/lttng-logger
		ok $? "Write in /proc/lttng-logger"
	else
		fail "No /proc/lttng-logger"
	fi

	stop_lttng_tracing_ok

	validate_trace_count "lttng_logger" $TRACE_PATH 1
	validate_trace_only_exp "$PAYLOAD" $TRACE_PATH

	destroy_lttng_session_ok $SESSION_NAME

	rm -rf $TRACE_PATH
}

function test_dev_logger()
{
	diag "Test /dev/lttng-logger"

	local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")

	create_lttng_session_ok $SESSION_NAME $TRACE_PATH

	lttng_enable_kernel_event $SESSION_NAME "lttng_logger"

	start_lttng_tracing_ok

	test -c /dev/lttng-logger
	if test $? = 0; then
		pass "/dev/lttng-logger is a character device"
		echo -n "$PAYLOAD dev" > /dev/lttng-logger
		ok $? "Write in /dev/lttng-logger"
	else
		fail "No /dev/lttng-logger"
	fi

	stop_lttng_tracing_ok

	validate_trace_count "lttng_logger" $TRACE_PATH 1
	validate_trace_only_exp "$PAYLOAD" $TRACE_PATH

	destroy_lttng_session_ok $SESSION_NAME

	rm -rf $TRACE_PATH
}

function test_payload_limit()
{
	diag "Test lttng-logger payload limit"

	local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")

	create_lttng_session_ok $SESSION_NAME $TRACE_PATH

	lttng_enable_kernel_event $SESSION_NAME "lttng_logger"

	start_lttng_tracing_ok

	# Write 100 times "test_logger", which generates 1200 characters, we expect
	# the tracer to write 2 events from that string because it limits the
	# input to 1024 strings.
	printf "%.s $PAYLOAD" {1..100} > /proc/lttng-logger
	printf "%.s $PAYLOAD" {1..100} > /dev/lttng-logger

	stop_lttng_tracing_ok

	validate_trace_count "lttng_logger" $TRACE_PATH 4
	validate_trace_only_exp "$PAYLOAD" $TRACE_PATH

	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"

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

	test_proc_logger
	test_dev_logger
	test_payload_limit

	stop_lttng_sessiond
	lttng_modules_loaded_fail
}