]> git.ipfire.org Git - thirdparty/pdns.git/blame - regression-tests/runtests
dnsdist doc typo fix
[thirdparty/pdns.git] / regression-tests / runtests
CommitLineData
cf4d037d 1#!/usr/bin/env bash
fc132a05 2PATH=.:$PATH:/usr/sbin
04aaf527 3MAKE=${MAKE:-make}
d4886eb4 4
d9c6538e
PL
5export PDNS=${PDNS:-${PWD}/../pdns/pdns_server}
6export PDNS2=${PDNS2:-${PWD}/../pdns/pdns_server}
1cedb848
PL
7export PDNSRECURSOR=${PDNSRECURSOR:-${PWD}/../pdns/recursordist/pdns_recursor}
8export RECCONTROL=${RECCONTROL:-${PWD}/../pdns/recursordist/rec_control}
d9c6538e 9export SDIG=${SDIG:-${PWD}/../pdns/sdig}
a4437033 10export NOTIFY=${NOTIFY:-${PWD}/../pdns/pdns_notify}
d9c6538e
PL
11export NSEC3DIG=${NSEC3DIG:-${PWD}/../pdns/nsec3dig}
12export SAXFR=${SAXFR:-${PWD}/../pdns/saxfr}
13export ZONE2SQL=${ZONE2SQL:-${PWD}/../pdns/zone2sql}
7fd6c67e 14export ZONE2JSON=${ZONE2JSON:-${PWD}/../pdns/zone2json}
8c907653 15export ZONE2LDAP=${ZONE2LDAP:-${PWD}/../pdns/zone2ldap}
fd5076c8 16export PDNSUTIL=${PDNSUTIL:-${PWD}/../pdns/pdnsutil}
d9c6538e
PL
17export PDNSCONTROL=${PDNSCONTROL:-${PWD}/../pdns/pdns_control}
18
a20029ad
RG
19unset _JAVA_OPTIONS
20
388cdf7a
RA
21spectest=$1
22[ -z $spectest ] && spectest=""
23
6e038794 24for prog in $SDIG $SAXFR $NOTIFY $NSEC3DIG; do
de15d483 25 if `echo $prog | grep -q '\.\./pdns'`; then
e55a07c9 26 ${MAKE} -C ../pdns ${prog##*../pdns/} || exit
d9c6538e
PL
27 fi
28done
388cdf7a 29
5f1e3267
AT
30export SDIG="timeout 5 $SDIG"
31export NSEC3DIG="timeout 5 $NSEC3DIG"
32export SAXFR="timeout 30 $SAXFR"
33export PDNSCONTROL="timeout 5 $PDNSCONTROL"
34
ff83f2ff 35rm -f test-results failed_tests passed_tests skipped_tests ${testsdir}/*/real_result ${testsdir}/*/diff ${testsdir}/*/*.out ${testsdir}/*/start ${testsdir}/*/step.*
d4886eb4
BH
36
37passed=0
38failed=0
e87e682b 39skipped=0
d4886eb4 40
7dbdd1e7
PD
41touch passed_tests failed_tests skipped_tests
42
53f66707 43for a in $(find $testsdir -type d | grep -v ^.$ | grep -v .svn | grep -v ^confdir | LC_ALL=C sort)
d4886eb4 44do
7241f22f
PD
45 if [ ! -x $a/command ]
46 then
47 continue
48 fi
53f66707 49 testname=$(basename $a)
d3625be4 50 export testname
c823f41c 51 echo "$testname: "
42f1f726 52 if [ "${PDNS_DEBUG}" = "YES" ]; then
53 cat $a/description
54 fi
d4886eb4 55
53f66707 56 echo "$testname: " >> test-results
d4886eb4
BH
57 cat $a/description >> test-results
58
1bccd246 59 SKIPIT=0
e87e682b 60 if [ -e $a/skip ]
d4886eb4 61 then
1bccd246 62 SKIPIT=1
e87e682b 63 result=" Skipped test $a"
1bccd246 64 else
388cdf7a 65 for reason in $skipreasons $context
1bccd246
PD
66 do
67 if [ -e $a/skip.$reason ]
68 then
69 SKIPIT=1
70 result=" Skipped test $a for reason $reason"
71 break
72 fi
73 done
74 fi
388cdf7a 75
fe2b08f4 76 FAIL=0
d6fbf4e2
KM
77 for reason in $skipreasons $context
78 do
fe2b08f4 79 if [ -e $a/fail.$reason ]
d6fbf4e2 80 then
fe2b08f4 81 FAIL=1
d6fbf4e2
KM
82 break
83 fi
84 done
85
388cdf7a
RA
86 if [ "$spectest" != "" ] && [ "$spectest" != "$testname" ] && [ "$testname" != "00dnssec-grabkeys" ]
87 then
88 SKIPIT=1
89 result=" Skipped test $a because it's not the specified single test"
90 fi
91
1bccd246
PD
92
93 if [ $SKIPIT = 1 ]
94 then
53f66707 95 echo $testname >> skipped_tests
e87e682b 96 skipped=$[$skipped+1]
914353ca 97 else
e87e682b 98 $a/command > $a/real_result
dff80aa2 99 expected=$a/expected_result
8a4a3c5c 100
a9330594
MS
101 diffopts="-u"
102 if [ -e $a/expected_result.i ]; then
103 expected=$a/expected_result.i
104 diffopts="${diffopts} -i"
105 fi
8a4a3c5c 106
9eb3131a 107 for extracontext in $extracontexts
1bccd246
PD
108 do
109 [ -e "$a/expected_result.$extracontext" ] && expected=$a/expected_result.$extracontext
110 done
dff80aa2 111 [ -n "$context" ] && [ -e "$a/expected_result.$context" ] && expected=$a/expected_result.$context
8a4a3c5c 112 diff ${diffopts} $expected $a/real_result > $a/diff 2>&1
e87e682b
BH
113 if [ -s $a/diff ]
114 then
fe2b08f4 115 if [ $FAIL = 0 ]
d6fbf4e2
KM
116 then
117 result=" Failed test $a"
118 echo $testname >> failed_tests
119 failed=$[$failed+1]
de5841b9
KM
120 if [ "$FIX_TESTS" == "YES" ]
121 then
122 mv -f $a/real_result $expected
123 result="$result (fixed)"
124 fi
d6fbf4e2
KM
125 else
126 result=" Expected failure for reason $reason, test passed $a"
127 echo $testname >> passed_tests
128 passed=$[$passed+1]
129 fi
e87e682b 130 else
fe2b08f4 131 if [ $FAIL = 0 ]
d6fbf4e2
KM
132 then
133 result=" Passed test $a"
134 echo $testname >> passed_tests
135 passed=$[$passed+1]
136 else
137 result=" Unexpected pass for reason $reason, test failed $a"
138 echo $testname >> failed_tests
139 failed=$[$failed+1]
140 fi
e87e682b
BH
141 fi
142 fi
c823f41c 143 echo "$result"
d4886eb4
BH
144 echo
145 echo "$result" >> test-results
146 echo >> test-results
147done
148
e87e682b 149echo -n $passed out of $[$passed+$failed]
d4886eb4
BH
150echo -n " ("
151res=$((echo scale=2; echo 100*$passed/\($passed+$failed\)) | bc )
152echo -n "$res%) "
c823f41c 153echo tests passed, $skipped were skipped