Tests: add kernel test into the `make check` test suite.
[lttng-tools.git] / tests / regression / kernel / test_lttng_logger
CommitLineData
ab95d85d
JD
1#!/bin/bash
2#
9d16b343 3# Copyright (C) 2017 Julien Desfossez <jdesfossez@efficios.com>
ab95d85d 4#
9d16b343 5# SPDX-License-Identifier: GPL-2.0-only
ab95d85d 6#
ab95d85d
JD
7
8TEST_DESC="Kernel tracer - lttng-logger"
9
10CURDIR=$(dirname $0)/
11TESTDIR=$CURDIR/../..
12NUM_TESTS=30
13PAYLOAD="test_logger"
14SESSION_NAME="kernel_event_basic"
15
16source $TESTDIR/utils/utils.sh
17
18function test_proc_logger()
19{
20 diag "Test /proc/lttng-logger"
21
7539dcec 22 local TRACE_PATH=$(mktemp --tmpdir -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
ab95d85d
JD
23
24 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
25
26 lttng_enable_kernel_event $SESSION_NAME "lttng_logger"
27
28 start_lttng_tracing_ok
29
30 test -e /proc/lttng-logger
31 if test $? = 0; then
32 pass "/proc/lttng-logger exists"
33 echo -n "$PAYLOAD proc" > /proc/lttng-logger
34 ok $? "Write in /proc/lttng-logger"
35 else
36 fail "No /proc/lttng-logger"
37 fi
38
39 stop_lttng_tracing_ok
40
41 validate_trace_count "lttng_logger" $TRACE_PATH 1
42 validate_trace_only_exp "$PAYLOAD" $TRACE_PATH
43
44 destroy_lttng_session_ok $SESSION_NAME
45
46 rm -rf $TRACE_PATH
47}
48
49function test_dev_logger()
50{
51 diag "Test /dev/lttng-logger"
52
7539dcec 53 local TRACE_PATH=$(mktemp --tmpdir -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
ab95d85d
JD
54
55 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
56
57 lttng_enable_kernel_event $SESSION_NAME "lttng_logger"
58
59 start_lttng_tracing_ok
60
61 test -c /dev/lttng-logger
62 if test $? = 0; then
63 pass "/dev/lttng-logger is a character device"
64 echo -n "$PAYLOAD dev" > /dev/lttng-logger
65 ok $? "Write in /dev/lttng-logger"
66 else
67 fail "No /dev/lttng-logger"
68 fi
69
70 stop_lttng_tracing_ok
71
72 validate_trace_count "lttng_logger" $TRACE_PATH 1
73 validate_trace_only_exp "$PAYLOAD" $TRACE_PATH
74
75 destroy_lttng_session_ok $SESSION_NAME
76
77 rm -rf $TRACE_PATH
78}
79
80function test_payload_limit()
81{
82 diag "Test lttng-logger payload limit"
83
7539dcec 84 local TRACE_PATH=$(mktemp --tmpdir -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
ab95d85d
JD
85
86 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
87
88 lttng_enable_kernel_event $SESSION_NAME "lttng_logger"
89
90 start_lttng_tracing_ok
91
92 # Write 100 times "test_logger", which generates 1200 characters, we expect
93 # the tracer to write 2 events from that string because it limits the
94 # input to 1024 strings.
95 printf "%.s $PAYLOAD" {1..100} > /proc/lttng-logger
96 printf "%.s $PAYLOAD" {1..100} > /dev/lttng-logger
97
98 stop_lttng_tracing_ok
99
100 validate_trace_count "lttng_logger" $TRACE_PATH 4
101 validate_trace_only_exp "$PAYLOAD" $TRACE_PATH
102
103 destroy_lttng_session_ok $SESSION_NAME
104
105 rm -rf $TRACE_PATH
106}
107
108# MUST set TESTDIR before calling those functions
109plan_tests $NUM_TESTS
110
111print_test_banner "$TEST_DESC"
112
113if [ "$(id -u)" == "0" ]; then
114 isroot=1
115else
116 isroot=0
117fi
118
119skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS ||
120{
ebdd11df 121 validate_lttng_modules_present
ab95d85d
JD
122 start_lttng_sessiond
123
124 test_proc_logger
125 test_dev_logger
126 test_payload_limit
127
128 stop_lttng_sessiond
129}
This page took 0.037445 seconds and 4 git commands to generate.