#!/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="formats"

. $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 {
	$TS_HELPER_LOGGER -u $DEVLOG -s --no-act "$@" >> "$TS_OUTPUT" 2>&1
	echo "ret: $?" >> "$TS_OUTPUT"
}

ts_init_subtest "rfc3164"
logger_fun -t "rfc3164" --rfc3164 "message"
ts_finalize_subtest

ts_init_subtest "rfc5424_simple"
logger_fun -t "rfc5424" --rfc5424 "message"
ts_finalize_subtest

ts_init_subtest "rfc5424_notime"
logger_fun -t "rfc5424" --rfc5424=notime "message"
ts_finalize_subtest

ts_init_subtest "rfc5424_nohost"
logger_fun -t "rfc5424" --rfc5424=nohost "message"
ts_finalize_subtest

ts_init_subtest "rfc5424_msgid"
logger_fun -t "rfc5424" --rfc5424 --msgid "MSGID" "message"
ts_finalize_subtest

ts_init_subtest "octet_counting"
logger_fun -t "octen" --octet-count "message"
ts_finalize_subtest

ts_init_subtest "priorities"
for facility in auth authpriv cron daemon ftp lpr mail news syslog user uucp local{0..7}; do
	for level in emerg alert crit err warning notice info debug; do
		logger_fun -t "prio" -p "$facility.$level" "$facility.$level"
	done
done
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
