xref: /minix3/external/bsd/bind/dist/bin/tests/system/logfileconfig/tests.sh (revision 00b67f09dd46474d133c95011a48590a8e8f94c7)
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