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

. $TS_TOPDIR/functions.sh

ts_init "$*"

ts_check_test_command "$TS_HELPER_LOGGER"

# Create --file option input files.
echo {a..c}{1..5}	 > $TS_OUTDIR/input_simple
echo {a..c}{1..5}	 > $TS_OUTDIR/input_empty_line
echo ""			>> $TS_OUTDIR/input_empty_line
echo {5..1}{c..1}	>> $TS_OUTDIR/input_empty_line
echo "<66>" prio_prefix	 > $TS_OUTDIR/input_prio_prefix

# bash 4 might not be available, use go-around hash
tests_array=(
	"simple:test"
	"log_pid:-i test"
	"log_pid_long:--id test"
	"log_pid_define:--id=12345 test"
	"log_pid_no_arg:-is test"
	"input_file_simple:-f $TS_OUTDIR/input_simple"
	"input_file_empty_line:-f $TS_OUTDIR/input_empty_line"
	"input_file_skip_empty:--file $TS_OUTDIR/input_empty_line -e"
	"input_file_prio_prefix:--file $TS_OUTDIR/input_prio_prefix --skip-empty --prio-prefix"
)

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 --stderr --no-act "$@" >> "$TS_OUTPUT" 2>&1
	echo "ret: $?" >> "$TS_OUTPUT"
}

for i in "${tests_array[@]}"; do
	name="${i%%:*}"
	options="${i##*:}"

	ts_init_subtest "$name"
	logger_fun -t "test_tag" $options
	ts_finalize_subtest
done

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
