summaryrefslogtreecommitdiffstats
path: root/tests/ts/logger/errors
blob: f6d0d7b915100a55f18d99660a2dc3f43300be62 (plain)
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
#!/bin/bash

#
# Copyright (C) 2015 Sami Kerola <kerolasa@iki.fi>
#
# This file is part of util-linux.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This file is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#

TS_TOPDIR="${0%/*}/../.."
TS_DESC="errors"

. "$TS_TOPDIR"/functions.sh

ts_init "$*"

ts_check_test_command "$TS_HELPER_LOGGER"
ts_check_prog "socat"
ts_check_prog "mktemp"

export TZ="GMT"
export LOGGER_TEST_TIMEOFDAY="1234567890.123456"
export LOGGER_TEST_HOSTNAME="test-hostname"
export LOGGER_TEST_GETPID="98765"

DEVLOG="$(mktemp "/tmp/ultest-$TS_COMPONENT-$TS_TESTNAME-XXXXXX")" \
	|| ts_die "mktemp failed"
SOCKIN="${TS_OUTDIR}/${TS_TESTNAME}_socketin"
ts_init_socket_to_file $DEVLOG $SOCKIN
SOCAT_PID="$!"

function logger_fun {
	# logger without --no-act to write all data to the socket
	echo "socket data, ${TS_SUBNAME}:" |socat -u - UNIX-CONNECT:$DEVLOG
	$TS_HELPER_LOGGER -u $DEVLOG --stderr "$@" >> $TS_OUTPUT 2>> $TS_ERRLOG
	echo "ret: $?" >> "$TS_OUTPUT"
	echo |socat -u - UNIX-CONNECT:$DEVLOG
}

function logger_printf {
	# logger without --no-act to write all data to the socket
	local fmt="$1"
	shift
	echo "socket data, ${TS_SUBNAME}:" |socat -u - UNIX-CONNECT:$DEVLOG
	printf "$fmt" | $TS_HELPER_LOGGER -u $DEVLOG --stderr "$@" >> $TS_OUTPUT 2>> $TS_ERRLOG
	echo "ret: $?" >> "$TS_OUTPUT"
	echo |socat -u - UNIX-CONNECT:$DEVLOG
}

ts_init_subtest "kern_priority"
logger_fun -t "prio" -p kern.emerg "message"
ts_finalize_subtest

ts_init_subtest "kern_priority_numeric"
logger_fun -t "prio" -p 0 "message"
ts_finalize_subtest

ts_init_subtest "invalid_prio"
logger_fun -t "prio" -p 8 "message"
ts_finalize_subtest

# should truncate
ts_init_subtest "rfc5424_exceed_size"
logger_fun -t "rfc5424_exceed_size" --rfc5424 --size 3 "abcd"
ts_finalize_subtest

ts_init_subtest "id_with_space"
logger_fun -t "id_with_space" --id="A B" "message"
logger_fun -t "rfc5424_id_with_space" --rfc5424 --id="A B" "message"
logger_fun -t "id_with_space" --id="1 23" "message"
logger_fun -t "id_with_leading space" --id=" 123" "message"
logger_fun -t "id_with_trailing space" --id="123 " "message"

ts_finalize_subtest

# should not fail
ts_init_subtest "tag_with_space"
logger_fun -t "A B" "tag_with_space"
logger_fun -t "A B" --rfc5424 "tag_with_space_rfc5424"
ts_finalize_subtest

ts_init_subtest "tcp"
logger_fun --tcp -t "tcp" "message"
ts_finalize_subtest

ts_init_subtest "multi-line"
logger_printf "AAA\nBBB\nCCC\n" -t "multi"
ts_finalize_subtest

ts_init_subtest "rfc5424_msgid_with_space"
logger_fun -t "rfc5424_msgid_with_space" --rfc5424 --msgid="A B" "message"
ts_finalize_subtest

ts_init_subtest "invalid_socket"
logger_fun -u /bad/boy -t "invalid_socket" "message"
ts_finalize_subtest

ts_init_subtest "check_socket"
ts_log "Check written socket data of all subtests."
sleep 1
kill $SOCAT_PID
wait $SOCAT_PID &>/dev/null
cat "$SOCKIN" >> $TS_OUTPUT 2>> $TS_ERRLOG
rm -f "$DEVLOG" "$SOCKIN"
ts_finalize_subtest

ts_finalize