| #! /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 |