blob: e87d8acaaad45e0961c6ed77d5ef1e3f6e851fc3 [file] [log] [blame]
#! /bin/sh
# Copyright (c) International Business Machines Corp., 2002
#
# This program 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 program 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.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# 12/05/02 Port to bash -Robbie Williamson <robbiew@us.ibm.com>
# 02/05/03 Modified - Manoj Iyer <manjo@mail.utexas.edu> use USCTEST macros
# fixed bugs.
##################################################################
# case 9: Test setlogmask() with LOG_UPTO macro. #
# #
# o Use setlogmask() with LOG_UPTO macro to set some #
# priority level. #
# o Send message which is lower priority than the one #
# set above, which should not be logged. #
##################################################################
DEBIAN=0
#number of seconds to wait for another syslog test to complete
wait_count=60
if ! [ -e /etc/init.d/syslog ]
then
tst_resm TINFO "/etc/init.d/syslog is not installed"
exit 0
fi
cleanup()
{
if [ $status_flag -eq 0 ]
then
tst_resm TPASS "lower priority message not logged."
else
tst_resm TFAIL "lower priority message is logged."
fi
#Restore syslog.conf
mv /etc/syslog.conf.ltpbak /etc/syslog.conf
#Restart syslog
tst_resm TINFO "Restart syslog"
/etc/init.d/syslog restart 2>&1 1>/dev/null
sleep 2
if [ $DEBIAN -eq 1 ];then
rm -f /etc/init.d/syslog
fi
exit $status_flag
}
syslog_case9()
{
#set the trap to handle signals.
trap '
tst_resm TBROK "Testing is terminating due to a signal"
status_flag=1
cleanup
' 1 2 3 6 11 15
tst_resm TINFO "syslog: Testing setlogmask() with LOG_UPTO macro"
echo
# check if syslogd command exits.
if [ -z $(which syslogd) ]
then
tst_resm TBROK "syslogd no such command"
status_flag=1
cleanup
fi
#Create symlink to /etc/init.d/sysklogd for Debian
find /etc/init.d/ |grep sysklogd 2>&1 1>/dev/null
RC=$?
if [ $RC -eq 0 ]
then
ln -s /etc/init.d/sysklogd /etc/init.d/syslog
DEBIAN=1
fi
# check if /etc/init/syslog script exists
find /etc/init.d/ |grep syslog 2>&1 1>/dev/null
RC=$?
if [ $RC -ne 0 ]
then
tst_resm TBROK "/etc/init.d/syslog no such script"
status_flag=1
cleanup
fi
# Create the configuration file specific to this test case.
echo "user.debug /var/log/messages" > /etc/syslog.conf
#Restart syslog
tst_resm TINFO "Restart syslog"
/etc/init.d/syslog restart 2>&1 1>/dev/null
sleep 2
# check if /var/log/messages script exists
find /var/log/ |grep messages 2>&1 1>/dev/null
RC=$?
if [ $RC -ne 0 ]
then
tst_resm TBROK "/var/log/messages no such log file"
status_flag=1
cleanup
fi
allow1=`grep -c "syslogtst: error level is logged" /var/log/messages`
donot_allow1=`grep -c "syslogtst: warning level not to be logged" /var/log/messages`
syslogtst 9 2>/dev/null
if [ $? -ne 0 ]; then
status_flag=1
return
fi
sleep 2
# check if /var/log/messages script exists
find /var/log/ |grep messages 2>&1 1>/dev/null
RC=$?
if [ $RC -ne 0 ]
then
tst_resm TBROK "/var/log/messages no such log file"
status_flag=1
cleanup
fi
allow2=`grep -c "syslogtst: error level is logged" /var/log/messages`
donot_allow2=`grep -c "syslogtst: warning level not to be logged" /var/log/messages`
diff1=$(( $allow2 - $allow1 ))
if [ $diff1 -ne 1 ]; then
tst_resm TBROK "Expected message is not logged...."
status_flag=1
return
fi
diff2=$(( $donot_allow2 - $donot_allow1 ))
if [ $diff2 -ne 0 ]; then
tst_resm TBROK "Unexpected message is logged..."
status_flag=1
fi
}
export TST_TOTAL=1
export TST_COUNT=1
export TCID=$(basename $0)
RC=0
status_flag=0
tst_resm TINFO " Test setlogmask() with LOG_UPTO macro."
tst_resm TINFO " o Use setlogmask() with LOG_UPTO macro to set some priority"
tst_resm TINFO " level."
tst_resm TINFO " o Send message which is lower priority than the one"
tst_resm TINFO " set above, which should not be logged"
#Back up /etc/syslog.conf
if ! [ -a /etc/syslog.conf ]
then
tst_resm TBROK "/etc/syslog.conf not found!"
else
while [ -a /etc/syslog.conf.ltpbak ] #Pause if another LTP syslog test is running
do
if [ $(( wait_count-- )) -gt 0 ]
then
sleep 1
else
tst_resm TBROK "Another syslog test appears to be stuck, could not run"
status_flag=1
exit $status_flag
fi
done
cp /etc/syslog.conf /etc/syslog.conf.ltpbak
fi
syslog_case9
cleanup