From: Aki Tuomi Date: Mon, 17 Aug 2015 18:52:17 +0000 (+0300) Subject: Add test for EDNS handling X-Git-Tag: dnsdist-1.0.0-alpha1~248^2~62^2~11^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F2691%2Fhead;p=thirdparty%2Fpdns.git Add test for EDNS handling --- diff --git a/regression-tests.nobackend/edns1/command b/regression-tests.nobackend/edns1/command new file mode 100755 index 0000000000..32785eb9f9 --- /dev/null +++ b/regression-tests.nobackend/edns1/command @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +# run PowerDNS using random backend + +port=5501 +rm -f pdns*.pid + +bindwait () +{ + configname=$1 + domcount=1 + loopcount=0 + while [ $loopcount -lt 20 ]; do + sleep 1 + done=$( (../pdns/pdns_control --config-name=$configname --socket-dir=. --no-config bind-domain-status || true) | grep -c 'parsed into memory' || true ) + if [ $done = $domcount ] + then + return + fi + let loopcount=loopcount+1 + done + if [ $done != $domcount ]; then + echo "Domain parsing failed" >> failed_tests + fi +} + +$RUNWRAPPER ../pdns/pdns_server --daemon=no --local-port=$port --socket-dir=./ \ + --no-shuffle --launch=bind --bind-config=edns-packet-cache/named.conf \ + --send-root-referral --cache-ttl=60 --no-config --module-dir=../regression-tests/modules & +bindwait + +timeout 5 ./edns1/test-edns.py + +kill $(cat pdns*.pid) +rm pdns*.pid diff --git a/regression-tests.nobackend/edns1/description b/regression-tests.nobackend/edns1/description new file mode 100644 index 0000000000..c8aa0ac443 --- /dev/null +++ b/regression-tests.nobackend/edns1/description @@ -0,0 +1 @@ +Make sure PowerDNS replies correctly to unknown EDNS version diff --git a/regression-tests.nobackend/edns1/expected_result b/regression-tests.nobackend/edns1/expected_result new file mode 100644 index 0000000000..b0c76da971 --- /dev/null +++ b/regression-tests.nobackend/edns1/expected_result @@ -0,0 +1 @@ +EDNS response OK diff --git a/regression-tests.nobackend/edns1/test-edns.py b/regression-tests.nobackend/edns1/test-edns.py new file mode 100755 index 0000000000..d7ab3eb098 --- /dev/null +++ b/regression-tests.nobackend/edns1/test-edns.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python + +import socket + +MESSAGE="\xaf\x03\x00\x20\x00\x01\x00\x00\x00\x00\x00\x01\x04\x75\x6e\x69\x74\x04\x74\x65\x73\x74\x00\x00\x06\x00\x01\x00\x00\x29\x10\x00\x00\x64\x00\x00\x00\x10\x00\x0a\x00\x08\x39\x70\xad\xaf\xca\xa8\x96\xca\x00\x64\x00\x00" +sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + +sock.bind(("127.0.0.1",5502)) +sock.sendto(MESSAGE, ("127.0.0.1", 5501)) + +data, addr = sock.recvfrom(512) + +# make sure data is correct +EXPECT="\xaf\x03\x84\x00\x00\x01\x00\x00\x00\x00\x00\x01\x04\x75\x6e\x69\x74\x04\x74\x65\x73\x74\x00\x00\x06\x00\x01\x00\x00\x29\x06\x90\x01\x00\x00\x00\x00\x00" + +if (data != EXPECT): + print "Invalid EDNS response, expected extended RCODE=BADVERS, no SOA, and OPT version 0" +else: + print "EDNS response OK"