Fix: syscall event rule: emission sites not compared in is_equal
[lttng-tools.git] / tests / regression / kernel / test_lttng_logger
1 #!/bin/bash
2 #
3 # Copyright (C) 2017 Julien Desfossez <jdesfossez@efficios.com>
4 #
5 # SPDX-License-Identifier: GPL-2.0-only
6 #
7
8 TEST_DESC="Kernel tracer - lttng-logger"
9
10 CURDIR=$(dirname $0)/
11 TESTDIR=$CURDIR/../..
12 NUM_TESTS=30
13 PAYLOAD="test_logger"
14 SESSION_NAME="kernel_event_basic"
15
16 source $TESTDIR/utils/utils.sh
17
18 function test_proc_logger()
19 {
20 diag "Test /proc/lttng-logger"
21
22 local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
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
49 function test_dev_logger()
50 {
51 diag "Test /dev/lttng-logger"
52
53 local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
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
80 function test_payload_limit()
81 {
82 diag "Test lttng-logger payload limit"
83
84 local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
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
109 plan_tests $NUM_TESTS
110
111 print_test_banner "$TEST_DESC"
112
113 check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
114 {
115 validate_lttng_modules_present
116 start_lttng_sessiond
117
118 test_proc_logger
119 test_dev_logger
120 test_payload_limit
121
122 stop_lttng_sessiond
123 }
This page took 0.032095 seconds and 4 git commands to generate.