]> git.ipfire.org Git - thirdparty/pdns.git/blob - regression-tests/recursor-test
1033bab66bb8f0299243f66d2cef9dd7ce6f9397
[thirdparty/pdns.git] / regression-tests / recursor-test
1 #!/bin/bash -e
2 port=$1
3 [ -z "$port" ] && port=5300
4 limit=$2
5 [ -z "$limit" ] && limit=100000
6 threads=$3
7 [ -z "$threads" ] && threads=2
8 mthreads=$4
9 [ -z "$mthreads" ] && mthreads=100
10
11 : ${RECURSOR:="../pdns/recursordist/pdns_recursor"}
12 : ${CSV:="top-1m.csv"}
13 : ${IPv6:="0"}
14 : ${TRACE:="fail"}
15 : ${DNSBULKTEST:="../pdns/dnsbulktest"}
16
17 if [ $IPv6 = 1 ]
18 then
19 QLA6="::"
20 else
21 QLA6=""
22 fi
23
24 rm -f recursor.pid pdns_recursor.pid
25 /usr/bin/time --format '%Uuser %Ssystem %Eelapsed %PCPU (%Xtext+%Ddata %Mmax)k
26 %Iinputs+%Ooutputs (%Fmajor+%Rminor)pagefaults %Wswaps
27 <measurement><name>user CPU seconds</name><value>%U</value></measurement>
28 <measurement><name>system CPU seconds</name><value>%S</value></measurement>
29 <measurement><name>wallclock seconds</name><value>%e</value></measurement>
30 <measurement><name>%% CPU used</name><value>%P</value></measurement>
31 ' ${RECURSOR} --daemon=no --local-port=$port --socket-dir=./ --trace=$TRACE --config-dir=. --max-mthreads=$mthreads --query-local-address6="${QLA6}" --threads=$threads --disable-packetcache > recursor.log 2>&1 &
32 sleep 3
33
34 # warm up the cache
35 echo
36 echo === First run with limit=$limit threads=$threads mthreads=$mthreads ===
37 ${DNSBULKTEST} --www=false -qe 127.0.0.1 $port $limit < ${CSV} > bulktest.results
38 # rerun 1 with hot cache
39 echo
40 echo === Second run with limit=$limit threads=$threads mthreads=$mthreads ===
41 ${DNSBULKTEST} --www=false -qe 127.0.0.1 $port $limit < ${CSV} > bulktest.results
42 # rerun 2 with hot cache
43 echo
44 echo === Third run with limit=$limit threads=$threads mthreads=$mthreads ===
45 ${DNSBULKTEST} --www=false -qe 127.0.0.1 $port $limit < ${CSV} > bulktest.results
46
47 echo
48 echo "=== RECURSOR LOG ==="
49 cat recursor.log
50 echo "=== END RECURSOR LOG ==="
51 kill $(cat pdns_recursor.pid)
52 sleep 5
53
54 . ./bulktest.results
55
56 mkdir -p recursor-bulktest
57 rm -f failed_tests passed_tests
58 touch failed_tests passed_tests
59 : ${THRESHOLD:="95"}
60
61 ANANSWER=$[(100*(${DBT_QUEUED}-${DBT_ERRORS}-${DBT_TIMEOUTS}) )/${DBT_QUEUED}]
62
63 if [ "$ANANSWER" -ge $THRESHOLD ]
64 then
65 echo recursor-bulktest >> passed_tests
66 RETVAL=0
67 else
68 echo recursor-bulktest >> failed_tests
69 RETVAL=1
70 fi
71
72 echo "$DBT_OKPERCENTAGE% of domains resolved" > recursor-bulktest/diff
73 egrep 'PowerDNS.COM|^<measurement' recursor.log > recursor-bulktest/stdout
74 echo "<measurement><name>% domains resolved</name><value>$DBT_OKPERCENTAGE</value></measurement>" >> recursor-bulktest/stdout
75
76 : ${context:="recursor-bulktest"}
77
78 export context
79 testsdir=. ./toxml
80
81 exit $RETVAL