1*00b67f09SDavid van Moolenbroek#!/bin/sh 2*00b67f09SDavid van Moolenbroek# 3*00b67f09SDavid van Moolenbroek# Copyright (C) 2011-2013 Internet Systems Consortium, Inc. ("ISC") 4*00b67f09SDavid van Moolenbroek# 5*00b67f09SDavid van Moolenbroek# Permission to use, copy, modify, and/or distribute this software for any 6*00b67f09SDavid van Moolenbroek# purpose with or without fee is hereby granted, provided that the above 7*00b67f09SDavid van Moolenbroek# copyright notice and this permission notice appear in all copies. 8*00b67f09SDavid van Moolenbroek# 9*00b67f09SDavid van Moolenbroek# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH 10*00b67f09SDavid van Moolenbroek# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 11*00b67f09SDavid van Moolenbroek# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, 12*00b67f09SDavid van Moolenbroek# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 13*00b67f09SDavid van Moolenbroek# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 14*00b67f09SDavid van Moolenbroek# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 15*00b67f09SDavid van Moolenbroek# PERFORMANCE OF THIS SOFTWARE. 16*00b67f09SDavid van Moolenbroek 17*00b67f09SDavid van Moolenbroek# Id: tests.sh,v 1.4 2011/03/22 16:51:50 smann Exp 18*00b67f09SDavid van Moolenbroek 19*00b67f09SDavid van MoolenbroekSYSTEMTESTTOP=.. 20*00b67f09SDavid van Moolenbroek. $SYSTEMTESTTOP/conf.sh 21*00b67f09SDavid van MoolenbroekTHISDIR=`pwd` 22*00b67f09SDavid van MoolenbroekCONFDIR="ns1" 23*00b67f09SDavid van MoolenbroekPLAINCONF="${THISDIR}/${CONFDIR}/named.plain" 24*00b67f09SDavid van MoolenbroekDIRCONF="${THISDIR}/${CONFDIR}/named.dirconf" 25*00b67f09SDavid van MoolenbroekPIPECONF="${THISDIR}/${CONFDIR}/named.pipeconf" 26*00b67f09SDavid van MoolenbroekSYMCONF="${THISDIR}/${CONFDIR}/named.symconf" 27*00b67f09SDavid van MoolenbroekPLAINFILE="named_log" 28*00b67f09SDavid van MoolenbroekDIRFILE="named_dir" 29*00b67f09SDavid van MoolenbroekPIPEFILE="named_pipe" 30*00b67f09SDavid van MoolenbroekSYMFILE="named_sym" 31*00b67f09SDavid van MoolenbroekPIDFILE="${THISDIR}/${CONFDIR}/named.pid" 32*00b67f09SDavid van MoolenbroekmyRNDC="$RNDC -c ${THISDIR}/${CONFDIR}/rndc.conf" 33*00b67f09SDavid van MoolenbroekmyNAMED="$NAMED -c ${THISDIR}/${CONFDIR}/named.conf -m record,size,mctx -T clienttest -T nosyslog -d 99 -U 4" 34*00b67f09SDavid van Moolenbroek 35*00b67f09SDavid van Moolenbroekstatus=0 36*00b67f09SDavid van Moolenbroek 37*00b67f09SDavid van Moolenbroekcd $CONFDIR 38*00b67f09SDavid van Moolenbroek 39*00b67f09SDavid van Moolenbroekecho "I:testing log file validity (named -g + only plain files allowed)" 40*00b67f09SDavid van Moolenbroek 41*00b67f09SDavid van Moolenbroek# First run with a known good config. 42*00b67f09SDavid van Moolenbroekecho > $PLAINFILE 43*00b67f09SDavid van Moolenbroekcp $PLAINCONF named.conf 44*00b67f09SDavid van Moolenbroek$myRNDC reconfig 45*00b67f09SDavid van Moolenbroekgrep "reloading configuration failed" named.run > /dev/null 2>&1 46*00b67f09SDavid van Moolenbroekif [ $? -ne 0 ] 47*00b67f09SDavid van Moolenbroekthen 48*00b67f09SDavid van Moolenbroek echo "I: testing plain file succeeded" 49*00b67f09SDavid van Moolenbroekelse 50*00b67f09SDavid van Moolenbroek echo "I: testing plain file failed (unexpected)" 51*00b67f09SDavid van Moolenbroek echo "I:exit status: 1" 52*00b67f09SDavid van Moolenbroek exit 1 53*00b67f09SDavid van Moolenbroekfi 54*00b67f09SDavid van Moolenbroek 55*00b67f09SDavid van Moolenbroek# Now try directory, expect failure 56*00b67f09SDavid van Moolenbroekecho "I: testing directory as log file (named -g)" 57*00b67f09SDavid van Moolenbroekecho > named.run 58*00b67f09SDavid van Moolenbroekrm -rf $DIRFILE 59*00b67f09SDavid van Moolenbroekmkdir -p $DIRFILE >/dev/null 2>&1 60*00b67f09SDavid van Moolenbroekif [ $? -eq 0 ] 61*00b67f09SDavid van Moolenbroekthen 62*00b67f09SDavid van Moolenbroek cp $DIRCONF named.conf 63*00b67f09SDavid van Moolenbroek echo > named.run 64*00b67f09SDavid van Moolenbroek $myRNDC reconfig 65*00b67f09SDavid van Moolenbroek grep "checking logging configuration failed: invalid file" named.run > /dev/null 2>&1 66*00b67f09SDavid van Moolenbroek if [ $? -ne 0 ] 67*00b67f09SDavid van Moolenbroek then 68*00b67f09SDavid van Moolenbroek echo "I: testing directory as file succeeded (UNEXPECTED)" 69*00b67f09SDavid van Moolenbroek echo "I:exit status: 1" 70*00b67f09SDavid van Moolenbroek exit 1 71*00b67f09SDavid van Moolenbroek else 72*00b67f09SDavid van Moolenbroek echo "I: testing directory as log file failed (expected)" 73*00b67f09SDavid van Moolenbroek fi 74*00b67f09SDavid van Moolenbroekelse 75*00b67f09SDavid van Moolenbroek echo "I: skipping directory test (unable to create directory)" 76*00b67f09SDavid van Moolenbroekfi 77*00b67f09SDavid van Moolenbroek 78*00b67f09SDavid van Moolenbroek# Now try pipe file, expect failure 79*00b67f09SDavid van Moolenbroekecho "I: testing pipe file as log file (named -g)" 80*00b67f09SDavid van Moolenbroekecho > named.run 81*00b67f09SDavid van Moolenbroekrm -f $PIPEFILE 82*00b67f09SDavid van Moolenbroekmkfifo $PIPEFILE >/dev/null 2>&1 83*00b67f09SDavid van Moolenbroekif [ $? -eq 0 ] 84*00b67f09SDavid van Moolenbroekthen 85*00b67f09SDavid van Moolenbroek cp $PIPECONF named.conf 86*00b67f09SDavid van Moolenbroek echo > named.run 87*00b67f09SDavid van Moolenbroek $myRNDC reconfig 88*00b67f09SDavid van Moolenbroek grep "checking logging configuration failed: invalid file" named.run > /dev/null 2>&1 89*00b67f09SDavid van Moolenbroek if [ $? -ne 0 ] 90*00b67f09SDavid van Moolenbroek then 91*00b67f09SDavid van Moolenbroek echo "I: testing pipe file as log file succeeded (UNEXPECTED)" 92*00b67f09SDavid van Moolenbroek echo "I:exit status: 1" 93*00b67f09SDavid van Moolenbroek exit 1 94*00b67f09SDavid van Moolenbroek else 95*00b67f09SDavid van Moolenbroek echo "I: testing pipe file as log file failed (expected)" 96*00b67f09SDavid van Moolenbroek fi 97*00b67f09SDavid van Moolenbroekelse 98*00b67f09SDavid van Moolenbroek echo "I: skipping pipe test (unable to create pipe)" 99*00b67f09SDavid van Moolenbroekfi 100*00b67f09SDavid van Moolenbroek 101*00b67f09SDavid van Moolenbroek# Now try symlink file to plain file, expect success 102*00b67f09SDavid van Moolenbroekecho "I: testing symlink to plain file as log file (named -g)" 103*00b67f09SDavid van Moolenbroek# Assume success 104*00b67f09SDavid van Moolenbroekecho > named.run 105*00b67f09SDavid van Moolenbroekecho > $PLAINFILE 106*00b67f09SDavid van Moolenbroekrm -f $SYMFILE $SYMFILE 107*00b67f09SDavid van Moolenbroekln -s $PLAINFILE $SYMFILE >/dev/null 2>&1 108*00b67f09SDavid van Moolenbroekif [ $? -eq 0 ] 109*00b67f09SDavid van Moolenbroekthen 110*00b67f09SDavid van Moolenbroek cp $SYMCONF named.conf 111*00b67f09SDavid van Moolenbroek $myRNDC reconfig 112*00b67f09SDavid van Moolenbroek echo > named.run 113*00b67f09SDavid van Moolenbroek grep "reloading configuration failed" named.run > /dev/null 2>&1 114*00b67f09SDavid van Moolenbroek if [ $? -ne 0 ] 115*00b67f09SDavid van Moolenbroek then 116*00b67f09SDavid van Moolenbroek echo "I: testing symlink to plain file succeeded" 117*00b67f09SDavid van Moolenbroek else 118*00b67f09SDavid van Moolenbroek echo "I: testing symlink to plain file failed (unexpected)" 119*00b67f09SDavid van Moolenbroek echo "I:exit status: 1" 120*00b67f09SDavid van Moolenbroek exit 1 121*00b67f09SDavid van Moolenbroek fi 122*00b67f09SDavid van Moolenbroekelse 123*00b67f09SDavid van Moolenbroek echo "I: skipping symlink test (unable to create symlink)" 124*00b67f09SDavid van Moolenbroekfi 125*00b67f09SDavid van Moolenbroek# Stop the server and run through a series of tests with various config 126*00b67f09SDavid van Moolenbroek# files while controlling the stop/start of the server. 127*00b67f09SDavid van Moolenbroek# Have to stop the stock server because it uses "-g" 128*00b67f09SDavid van Moolenbroek# 129*00b67f09SDavid van Moolenbroek$PERL ../../stop.pl .. ns1 130*00b67f09SDavid van Moolenbroek 131*00b67f09SDavid van Moolenbroek$myNAMED > /dev/null 2>&1 132*00b67f09SDavid van Moolenbroek 133*00b67f09SDavid van Moolenbroekif [ $? -ne 0 ] 134*00b67f09SDavid van Moolenbroekthen 135*00b67f09SDavid van Moolenbroek echo "I:failed to start $myNAMED" 136*00b67f09SDavid van Moolenbroek echo "I:exit status: $status" 137*00b67f09SDavid van Moolenbroek exit $status 138*00b67f09SDavid van Moolenbroekfi 139*00b67f09SDavid van Moolenbroek 140*00b67f09SDavid van Moolenbroekstatus=0 141*00b67f09SDavid van Moolenbroek 142*00b67f09SDavid van Moolenbroekecho "I:testing log file validity (only plain files allowed)" 143*00b67f09SDavid van Moolenbroek 144*00b67f09SDavid van Moolenbroek# First run with a known good config. 145*00b67f09SDavid van Moolenbroekecho > $PLAINFILE 146*00b67f09SDavid van Moolenbroekcp $PLAINCONF named.conf 147*00b67f09SDavid van Moolenbroek$myRNDC reconfig 148*00b67f09SDavid van Moolenbroekgrep "reloading configuration failed" named.run > /dev/null 2>&1 149*00b67f09SDavid van Moolenbroekif [ $? -ne 0 ] 150*00b67f09SDavid van Moolenbroekthen 151*00b67f09SDavid van Moolenbroek echo "I: testing plain file succeeded" 152*00b67f09SDavid van Moolenbroekelse 153*00b67f09SDavid van Moolenbroek echo "I: testing plain file failed (unexpected)" 154*00b67f09SDavid van Moolenbroek echo "I:exit status: 1" 155*00b67f09SDavid van Moolenbroek exit 1 156*00b67f09SDavid van Moolenbroekfi 157*00b67f09SDavid van Moolenbroek 158*00b67f09SDavid van Moolenbroek# Now try directory, expect failure 159*00b67f09SDavid van Moolenbroekecho "I: testing directory as log file" 160*00b67f09SDavid van Moolenbroekecho > named.run 161*00b67f09SDavid van Moolenbroekrm -rf $DIRFILE 162*00b67f09SDavid van Moolenbroekmkdir -p $DIRFILE >/dev/null 2>&1 163*00b67f09SDavid van Moolenbroekif [ $? -eq 0 ] 164*00b67f09SDavid van Moolenbroekthen 165*00b67f09SDavid van Moolenbroek cp $DIRCONF named.conf 166*00b67f09SDavid van Moolenbroek echo > named.run 167*00b67f09SDavid van Moolenbroek $myRNDC reconfig 168*00b67f09SDavid van Moolenbroek grep "configuring logging: invalid file" named.run > /dev/null 2>&1 169*00b67f09SDavid van Moolenbroek if [ $? -ne 0 ] 170*00b67f09SDavid van Moolenbroek then 171*00b67f09SDavid van Moolenbroek echo "I: testing directory as file succeeded (UNEXPECTED)" 172*00b67f09SDavid van Moolenbroek echo "I:exit status: 1" 173*00b67f09SDavid van Moolenbroek exit 1 174*00b67f09SDavid van Moolenbroek else 175*00b67f09SDavid van Moolenbroek echo "I: testing directory as log file failed (expected)" 176*00b67f09SDavid van Moolenbroek fi 177*00b67f09SDavid van Moolenbroekelse 178*00b67f09SDavid van Moolenbroek echo "I: skipping directory test (unable to create directory)" 179*00b67f09SDavid van Moolenbroekfi 180*00b67f09SDavid van Moolenbroek 181*00b67f09SDavid van Moolenbroek# Now try pipe file, expect failure 182*00b67f09SDavid van Moolenbroekecho "I: testing pipe file as log file" 183*00b67f09SDavid van Moolenbroekecho > named.run 184*00b67f09SDavid van Moolenbroekrm -f $PIPEFILE 185*00b67f09SDavid van Moolenbroekmkfifo $PIPEFILE >/dev/null 2>&1 186*00b67f09SDavid van Moolenbroekif [ $? -eq 0 ] 187*00b67f09SDavid van Moolenbroekthen 188*00b67f09SDavid van Moolenbroek cp $PIPECONF named.conf 189*00b67f09SDavid van Moolenbroek echo > named.run 190*00b67f09SDavid van Moolenbroek $myRNDC reconfig 191*00b67f09SDavid van Moolenbroek grep "configuring logging: invalid file" named.run > /dev/null 2>&1 192*00b67f09SDavid van Moolenbroek if [ $? -ne 0 ] 193*00b67f09SDavid van Moolenbroek then 194*00b67f09SDavid van Moolenbroek echo "I: testing pipe file as log file succeeded (UNEXPECTED)" 195*00b67f09SDavid van Moolenbroek echo "I:exit status: 1" 196*00b67f09SDavid van Moolenbroek exit 1 197*00b67f09SDavid van Moolenbroek else 198*00b67f09SDavid van Moolenbroek echo "I: testing pipe file as log file failed (expected)" 199*00b67f09SDavid van Moolenbroek fi 200*00b67f09SDavid van Moolenbroekelse 201*00b67f09SDavid van Moolenbroek echo "I: skipping pipe test (unable to create pipe)" 202*00b67f09SDavid van Moolenbroekfi 203*00b67f09SDavid van Moolenbroek 204*00b67f09SDavid van Moolenbroek# Now try symlink file to plain file, expect success 205*00b67f09SDavid van Moolenbroekecho "I: testing symlink to plain file as log file" 206*00b67f09SDavid van Moolenbroek# Assume success 207*00b67f09SDavid van Moolenbroekstatus=0 208*00b67f09SDavid van Moolenbroekecho > named.run 209*00b67f09SDavid van Moolenbroekecho > $PLAINFILE 210*00b67f09SDavid van Moolenbroekrm -f $SYMFILE 211*00b67f09SDavid van Moolenbroekln -s $PLAINFILE $SYMFILE >/dev/null 2>&1 212*00b67f09SDavid van Moolenbroekif [ $? -eq 0 ] 213*00b67f09SDavid van Moolenbroekthen 214*00b67f09SDavid van Moolenbroek cp $SYMCONF named.conf 215*00b67f09SDavid van Moolenbroek $myRNDC reconfig 216*00b67f09SDavid van Moolenbroek echo > named.run 217*00b67f09SDavid van Moolenbroek grep "reloading configuration failed" named.run > /dev/null 2>&1 218*00b67f09SDavid van Moolenbroek if [ $? -ne 0 ] 219*00b67f09SDavid van Moolenbroek then 220*00b67f09SDavid van Moolenbroek echo "I: testing symlink to plain file succeeded" 221*00b67f09SDavid van Moolenbroek else 222*00b67f09SDavid van Moolenbroek echo "I: testing symlink to plain file failed (unexpected)" 223*00b67f09SDavid van Moolenbroek echo "I:exit status: 1" 224*00b67f09SDavid van Moolenbroek exit 1 225*00b67f09SDavid van Moolenbroek fi 226*00b67f09SDavid van Moolenbroekelse 227*00b67f09SDavid van Moolenbroek echo "I: skipping symlink test (unable to create symlink)" 228*00b67f09SDavid van Moolenbroekfi 229*00b67f09SDavid van Moolenbroek 230*00b67f09SDavid van Moolenbroekecho "I:exit status: $status" 231*00b67f09SDavid van Moolenbroekexit $status 232