| #!/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" | |
| 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>&1 | |
| 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>&1 | |
| 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>&1 | |
| rm -f "$DEVLOG" "$SOCKIN" | |
| ts_finalize_subtest | |
| ts_finalize |