#!/bin/sh
# Copyright (C) 2011  Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.

failcount=0
localmes=@abs_builddir@/localdef_mes_$$
tempfile=@abs_builddir@/run_time_init_test_tempfile_$$

passfail() {
    if [ $1 -eq 0 ]; then
        echo "pass"
    else
        echo "FAIL"
    fi
    failcount=`expr $failcount + $1`
}

# Create the local message file for testing

cat > $localmes << .
\$PREFIX MSG_
% NOTHERE     this message is not in the global dictionary
% READERR     replacement read error, parameters: '%1' and '%2'
% RDLOCMES    replacement read local message file, parameter is '%1'
.

echo -n "1. runInitTest default parameters: "
cat > $tempfile << .
FATAL [alpha.example] MSG_WRITERR, error writing to test1: 42
ERROR [alpha.example] MSG_RDLOCMES, reading local message file dummy/file
WARN  [alpha.dlm] MSG_READERR, error reading from message file a.txt: dummy reason
INFO  [alpha.dlm] MSG_OPENIN, unable to open message file example.msg for input: dummy reason
.
./logger_support_test | cut -d' ' -f3- | diff $tempfile -
passfail $?

echo -n "2. Severity filter: "
cat > $tempfile << .
FATAL [alpha.example] MSG_WRITERR, error writing to test1: 42
ERROR [alpha.example] MSG_RDLOCMES, reading local message file dummy/file
.
./logger_support_test -s error | cut -d' ' -f3- | diff $tempfile -
passfail $?

echo -n "3. Debug level: "
cat > $tempfile << .
FATAL [alpha.example] MSG_WRITERR, error writing to test1: 42
ERROR [alpha.example] MSG_RDLOCMES, reading local message file dummy/file
WARN  [alpha.dlm] MSG_READERR, error reading from message file a.txt: dummy reason
INFO  [alpha.dlm] MSG_OPENIN, unable to open message file example.msg for input: dummy reason
DEBUG [alpha.example] MSG_RDLOCMES, reading local message file dummy/0
DEBUG [alpha.example] MSG_RDLOCMES, reading local message file dummy/24
DEBUG [alpha.example] MSG_RDLOCMES, reading local message file dummy/25
.
./logger_support_test -s debug -d 25 | cut -d' ' -f3- | diff $tempfile -
passfail $?

echo -n "4. Local message replacement: "
cat > $tempfile << .
WARN  [alpha.log] MSG_IDNOTFND, could not replace message text for 'MSG_NOTHERE': no such message
FATAL [alpha.example] MSG_WRITERR, error writing to test1: 42
ERROR [alpha.example] MSG_RDLOCMES, replacement read local message file, parameter is 'dummy/file'
WARN  [alpha.dlm] MSG_READERR, replacement read error, parameters: 'a.txt' and 'dummy reason'
.
./logger_support_test -s warn $localmes | cut -d' ' -f3- | diff $tempfile -
passfail $?

rm -f $localmes
rm -f $tempfile

if [ $failcount -eq 0 ]; then
    echo "PASS: run_time_init_test"
elif [ $failcount -eq 1 ]; then
    echo "FAIL: run_time_init_test - 1 test failed"
else
    echo "FAIL: run_time_init_test - $failcount tests failed"
fi

exit $failcount
