blob: 90d0680f7b873f7c9553310a22be16b1537a4513 [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.
# 07/27/05 Michael Reed <mreedltp@vnet.ibm.com>
# Made changes to account for the replacement of syslogd
# with syslog-ng on SLES
#
##################################################################
# case 6: Test the logging option: LOG_NDELAY #
# #
# o Do openlog() without LOG_NDELAY option. #
# o open a file and check the returned file descriptor #
# It should be 3. #
# o Now do openlog() with LOG_NDELAY option. #
# o open a file and check the returned file descriptor. #
# It should be greater than 3. #
##################################################################
#number of seconds to wait for another syslog test to complete
wait_count=60
#configuration file for syslog or syslog-ng
CONFIG_FILE=""
#Command for syslog or syslog-ng
syslog_cmd=""
cleanup()
{
if [ $status_flag -eq 0 ]
then
tst_resm TPASS "file descriptor is greater than 3"
else
tst_resm TFAIL "file descriptor is not greater than 3"
fi
#Restore syslog.conf
[ -f "$CONFIG_FILE.ltpback" ] && mv "$CONFIG_FILE.ltpback" "$CONFIG_FILE"
#Restart syslog
[ -x "$syslog_cmd" ] && {
tst_resm TINFO "restart $syslog_cmd"
"$syslog_cmd" restart 2>&1 1>/dev/null
}
sleep 2
exit $status_flag
}
syslog_case6()
{
RSYSLOG_CONFIG=""
#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 the log option: LOG_NDELAY..."
# check if syslogd command exits.
echo
#check to see if syslogd or syslog-ng exists
if [ -e /sbin/syslogd ]
then
CONFIG_FILE="/etc/syslog.conf"
syslog_cmd="/etc/init.d/sysklogd"
elif [ -e /sbin/syslog-ng ] || [ -e /usr/sbin/syslog-ng ]
then
CONFIG_FILE="/etc/syslog-ng/syslog-ng.conf"
syslog_cmd="/etc/init.d/syslog-ng"
elif [ -e /sbin/rsyslogd ] || [ -e /usr/sbin/rsyslogd ]
then
CONFIG_FILE="/etc/rsyslog.conf"
syslog_cmd="/etc/init.d/rsyslog"
RSYSLOG_CONFIG='$ModLoad imuxsock.so'
else
tst_resm TCONF "syslogd, syslog-ng or rsyslogd no such command"
status_flag=0
cleanup
fi
[ -x $syslog_cmd ] || syslog_cmd="/etc/init.d/syslog"
#Back up configuration file
if [ ! -e $CONFIG_FILE ]
then
tst_resm TBROK "$CONFIG_FILE not found!"
else
#Pause if another LTP syslog test is running
while [ -e $CONFIG_FILE.ltpback ]
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 $CONFIG_FILE $CONFIG_FILE.ltpback
fi
echo "Running tests"
# check if /etc/init/syslog script exists
if ! [ -e "$syslog_cmd" ]
then
tst_resm TBROK "$syslog_cmd no such script"
status_flag=1
cleanup
fi
# Create the configuration file specific to this test case.
# For this case, it's a dummy one. No use of it.
case "$CONFIG_FILE" in
"/etc/syslog.conf" |\
"/etc/rsyslog.conf")
echo "$RSYSLOG_CONFIG" > $CONFIG_FILE
echo "user.info /var/log/messages" >> $CONFIG_FILE;;
"/etc/syslog-ng/syslog-ng.conf")
echo "source src{ internal(); unix-dgram(\"/dev/log\"); \
udp(ip(\"0.0.0.0\") port(514)); };" > $CONFIG_FILE
echo "filter f_syslog_user { level(info) and facility(user)\
; };">> $CONFIG_FILE
echo "destination syslog-messages { file(\"/var/log/messages\");};"\
>> $CONFIG_FILE
echo "log { source(src); filter(f_syslog_user); \
destination(syslog-messages);};" >> $CONFIG_FILE;;
esac
#Restart syslog
tst_resm TINFO "Restart syslog daemon"
$syslog_cmd restart 2>&1 1>/dev/null
sleep 2
# Just call syslogtst. It will do everything.
# It will return 0 to indicate that test has passed.
syslogtst 6 2>/dev/null
if [ $? -ne 0 ]; then
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 the logging option: LOG_NDELAY"
tst_resm TINFO " o Do openlog() without LOG_NDELAY option."
tst_resm TINFO " o open a file and check the returned file descriptor"
tst_resm TINFO " It should be 3."
tst_resm TINFO " o Now do openlog() with LOG_NDELAY option."
tst_resm TINFO " o open a file and check the returned file descriptor."
tst_resm TINFO " It should be greater than 3."
syslog_case6
cleanup