#!/bin/sh
-# check if add-delete.test.dyndns exists. It should not.
-cleandig add-delete.test.dyndns ANY hidesoadetails
+mysqldiff
# add a record
cleannsupdate <<!
answer
!
-# query if the record now exists
-cleandig add-delete.test.dyndns ANY
+# check if the record was added
+mysqldiff 1 "Check if add-delete.test.dyndns. 3600 A 127.0.0.108 exists"
# delete the just added record
cleannsupdate <<!
answer
!
-# check if the record was deleted.
-cleandig add-delete.test.dyndns ANY hidesoadetails
+# check if the record was deleted
+mysqldiff 2 "Check if record is gone" 1
-1 test.dyndns. IN SOA 3600 ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
-Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
-Reply to question for qname='add-delete.test.dyndns.', qtype=ANY
Answer:
;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id: [id]
;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
;; ZONE SECTION:
;test.dyndns. IN SOA
-0 add-delete.test.dyndns. IN A 3600 127.0.0.108
-Rcode: 0, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
-Reply to question for qname='add-delete.test.dyndns.', qtype=ANY
+Check if add-delete.test.dyndns. 3600 A 127.0.0.108 exists
+--- Start: diff start step.1 ---
+> add-delete.test.dyndns A 127.0.0.108 3600 0
+--- End: diff start step.1 ---
+
Answer:
;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id: [id]
;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
;; ZONE SECTION:
;test.dyndns. IN SOA
-1 test.dyndns. IN SOA 3600 ns1.test.dyndns. ahu.example.dyndns. [serial] 28800 7200 604800 86400
-Rcode: 3, RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
-Reply to question for qname='add-delete.test.dyndns.', qtype=ANY
+Check if record is gone
+--- Start: diff step.1 step.2 ---
+< add-delete.test.dyndns A 127.0.0.108 3600 0
+--- End: diff step.1 step.2 ---
+
--- /dev/null
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id: [id]
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns. IN SOA
+
+Check if add-delete.test.dyndns. 3600 A 127.0.0.108 exists
+--- Start: diff start step.1 ---
+> add-delete.test.dyndns A 127.0.0.108 3600 0 add-delete 1
+--- End: diff start step.1 ---
+
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id: [id]
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns. IN SOA
+
+Check if record is gone
+--- Start: diff step.1 step.2 ---
+< add-delete.test.dyndns A 127.0.0.108 3600 0 add-delete 1
+--- End: diff step.1 step.2 ---
+
--- /dev/null
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id: [id]
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns. IN SOA
+
+Check if add-delete.test.dyndns. 3600 A 127.0.0.108 exists
+--- Start: diff start step.1 ---
+> add-delete.test.dyndns A 127.0.0.108 3600 0 1
+--- End: diff start step.1 ---
+
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id: [id]
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns. IN SOA
+
+Check if record is gone
+--- Start: diff step.1 step.2 ---
+< add-delete.test.dyndns A 127.0.0.108 3600 0 1
+--- End: diff step.1 step.2 ---
+
--- /dev/null
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id: [id]
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns. IN SOA
+
+Check if add-delete.test.dyndns. 3600 A 127.0.0.108 exists
+--- Start: diff start step.1 ---
+> add-delete.test.dyndns A 127.0.0.108 3600 0 gkhs0ms64101fs1dj19h7no8vn2tp4fk 1
+--- End: diff start step.1 ---
+
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id: [id]
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns. IN SOA
+
+Check if record is gone
+--- Start: diff step.1 step.2 ---
+< add-delete.test.dyndns A 127.0.0.108 3600 0 gkhs0ms64101fs1dj19h7no8vn2tp4fk 1
+--- End: diff step.1 step.2 ---
+
--- /dev/null
+#!/bin/bash -x
+
+[ -z "$GMYSQLDB" ] && GMYSQLDB=pdnstest
+[ -z "$GMYSQLUSER" ] && GMYSQLUSER=root
+[ -z "$GMYSQLHOST" ] && GMYSQLHOST=localhost
+[ -z "$GMYSQLPASSWD" ] && GMYSQLPASSWD=''
+
+step="step.$1"
+[ -z "$1" ] && step="start"
+comment=$2
+[ -z "$comment" ] && comment="No comment"
+diffto="step.$3"
+[ -z "$3" ] && diffto="start"
+
+if [ "${context: -9}" = "-nodnssec" ]
+then
+ mysql --user="$GMYSQLUSER" --password="$GMYSQLPASSWD" --host="$GMYSQLHOST" \
+ "$GMYSQLDB" \
+ -e "SELECT r.name, r.type, r.content, r.ttl, r.prio FROM domains d JOIN records r ON d.id=r.domain_id WHERE d.name='test.dyndns' AND r.type != 'SOA' ORDER BY r.name, r.type, r.content, r.ttl, r.prio" > ${testsdir}/${testname}/$step
+else
+ mysql --user="$GMYSQLUSER" --password="$GMYSQLPASSWD" --host="$GMYSQLHOST" \
+ "$GMYSQLDB" \
+ -e "SELECT r.name, r.type, r.content, r.ttl, r.prio, r.ordername, r.auth FROM domains d JOIN records r ON d.id=r.domain_id WHERE d.name='test.dyndns' AND r.type != 'SOA' ORDER BY r.name, r.type, r.content, r.ttl, r.prio" > ${testsdir}/${testname}/$step
+fi
+
+if [ ! "$step" == "start" ]
+then
+ echo -e "$comment\n--- Start: diff $diffto $step ---"
+ diff ${testsdir}/${testname}/$diffto ${testsdir}/${testname}/$step | sed '/^[0-9a-z,/-]*$/d' | sort -V
+ if [ ${PIPESTATUS[0]} -eq 0 ]
+ then
+ echo "is equal"
+ fi
+ echo -e "--- End: diff $diffto $step ---\n"
+fi
make -C ../pdns sdig nsec3dig || exit 1
-rm -f test-results failed_tests passed_tests skipped_tests ${testsdir}/*/real_result ${testsdir}/*/diff ${testsdir}/*/*.out
+rm -f test-results failed_tests passed_tests skipped_tests ${testsdir}/*/real_result ${testsdir}/*/diff ${testsdir}/*/*.out ${testsdir}/*/start ${testsdir}/*/step.*
passed=0
failed=0