#!/bin/bash
cd pdns/pdns ; make sdig; cd ../..
cd pdns/regression-tests
-rm powerdns.sqlite3
-sqlite3 powerdns.sqlite3 < ../pdns/no-dnssec.schema.sqlite3.sql
-../pdns/backends/bind/zone2sql --gsqlite --named-conf=./named.conf --transactions | sqlite3 powerdns.sqlite3
-
-echo analyze\; | sqlite3 powerdns.sqlite3
-
-../pdns/pdns_server --no-config --daemon=no --local-port=5299 --socket-dir=./ \
---no-shuffle --launch=gsqlite3 --gsqlite3-database=./powerdns.sqlite3 \
---fancy-records --query-logging --send-root-referral --loglevel=9 \
---cache-ttl=0 &
-
-sleep 2
-export nameserver=127.0.0.1 port=5299
-./runtests > ../../without-dnssec
-
-kill %1
-sleep 1
+standardConfig()
+{
+ cat <<EOF
+daemon=no
+local-port=5299
+socket-dir=./
+no-shuffle
+fancy-records
+send-root-referral
+cache-ttl=0
+EOF
+}
+
+initSQLite3()
+{
+ rm powerdns.sqlite3
+ sqlite3 powerdns.sqlite3 < ../pdns/no-dnssec.schema.sqlite3.sql
+ ../pdns/backends/bind/zone2sql --gsqlite --named-conf=./named.conf --transactions | sqlite3 powerdns.sqlite3
+ echo analyze\; | sqlite3 powerdns.sqlite3
+
+ standardConfig > pdns.conf
+ (echo launch=gsqlite3
+ echo gsqlite3-database=./powerdns.sqlite3 ) >> pdns.conf
+}
+
+upgradeSQLite3()
+{
+ sqlite3 powerdns.sqlite3 < ../pdns/dnssec.schema.sqlite3.sql
+ echo analyze\; | sqlite3 powerdns.sqlite3
+ echo gsqlite3-dnssec >> pdns.conf
+}
+
+setDSSQLite3()
+{
+ echo "insert into records (domain_id, name, type, content, ttl, auth) select domains.id, 'delegated.dnssec-parent.com', 'DS', '$1', 3600, '1' from domains where domains.name='dnssec-parent.com';" | sqlite3 powerdns.sqlite3
+}
+
+
+initPostgreSQL()
+{
+ dropdb pdnsregress
+ createdb pdnsregress
+ psql pdnsregress < ../pdns/no-dnssec.schema.pgsql.sql
+ ../pdns/backends/bind/zone2sql --gpgsql --named-conf=./named.conf --transactions | psql -q pdnsregress
+ echo analyze | psql pdnsregress
+ standardConfig > pdns.conf
+ (echo launch=gpgsql
+ echo gpgsql-dbname=pdnsregress
+ echo gpgsql-user=ahu ) >> pdns.conf
+}
+
+upgradePostgreSQL()
+{
+ psql pdnsregress < ../pdns/dnssec.schema.pgsql.sql
+ echo analyze | psql pdnsregress
+ echo gpgsql-dnssec >> pdns.conf
+}
+
+setDSPostgreSQL()
+{
+ echo "insert into records (domain_id, name, type, content, ttl, auth) select domains.id, 'delegated.dnssec-parent.com', 'DS', '$1', 3600, 't' from domains where domains.name='dnssec-parent.com';" | psql pdnsregress
+}
+
+
+function doTests()
+{
+ DBTYPE=$1
+
+ init$DBTYPE
+ ../pdns/pdns_server --config-dir=./ --daemon=no &
-sqlite3 powerdns.sqlite3 < ../pdns/dnssec.schema.sqlite3.sql
-echo analyze\; | sqlite3 powerdns.sqlite3
+ sleep 2
+ export nameserver=127.0.0.1 port=5299
+ ./runtests > ../../without-dnssec-$DBTYPE
-(echo launch=gsqlite3
-echo gsqlite3-dnssec
-echo gsqlite3-database=./powerdns.sqlite3 ) > pdns.conf
+ kill %1
-../pdns/pdnssec --config-dir=./ rectify-zone example.com
-../pdns/pdnssec --config-dir=./ rectify-zone test.com
-../pdns/pdnssec --config-dir=./ rectify-zone wtest.com
+ upgrade$DBTYPE
+ PDNSSEC="../pdns/pdnssec --config-dir=./"
-../pdns/pdns_server --no-config --daemon=no --local-port=5299 --socket-dir=./ \
---no-shuffle --launch=gsqlite3 --gsqlite3-database=./powerdns.sqlite3 \
---fancy-records --query-logging --send-root-referral --loglevel=9 \
---gsqlite3-dnssec --cache-ttl=0 &
+ $PDNSSEC rectify-zone example.com
+ $PDNSSEC rectify-zone test.com
+ $PDNSSEC rectify-zone wtest.com
-sleep 2
-PDNSSEC="../pdns/pdnssec --config-dir=./"
+ wait
+ ../pdns/pdns_server --config-dir=./ --daemon=no &
+ sleep 2
-(../pdns/pdnssec --config-dir=./ check-zone test.com
-../pdns/pdnssec --config-dir=./ check-zone wtest.com
-../pdns/pdnssec --config-dir=./ check-zone example.com) > ../../with-dnssec
-./runtests >> ../../with-dnssec
+ ($PDNSSEC check-zone test.com
+ $PDNSSEC check-zone wtest.com
+ $PDNSSEC check-zone example.com) > ../../with-dnssec-$DBTYPE
-../pdns/pdnssec --config-dir=./ secure-zone dnssec-parent.com
-../pdns/pdnssec --config-dir=./ show-zone dnssec-parent.com
+ ./runtests >> ../../with-dnssec-$DBTYPE
-../pdns/pdnssec --config-dir=./ secure-zone delegated.dnssec-parent.com
-../pdns/pdnssec --config-dir=./ show-zone delegated.dnssec-parent.com
+ $PDNSSEC secure-zone dnssec-parent.com
+ $PDNSSEC show-zone dnssec-parent.com
-kill %1
-sleep 1
+ $PDNSSEC secure-zone delegated.dnssec-parent.com
+ $PDNSSEC show-zone delegated.dnssec-parent.com
-# now add the DS
-../pdns/pdnssec --config-dir=./ show-zone delegated.dnssec-parent.com | grep "^DS = " | cut -f6- -d" " |
- while read a
- do
- echo "insert into records (domain_id, name, type, content, ttl, auth) select domains.id, 'delegated.dnssec-parent.com', 'DS', '$a', 3600, '1' from domains where domains.name='dnssec-parent.com';"
- done | sqlite3 powerdns.sqlite3
+ kill %1
-../pdns/pdns_server --no-config --daemon=no --local-port=5299 --socket-dir=./ \
---no-shuffle --launch=gsqlite3 --gsqlite3-database=./powerdns.sqlite3 \
---fancy-records --query-logging --send-root-referral --loglevel=9 \
---gsqlite3-dnssec --cache-ttl=0 &
+ # now add the DS
+ $PDNSSEC show-zone delegated.dnssec-parent.com | grep "^DS = " | cut -f6- -d" " |
+ while read a
+ do
+ setDS$DBTYPE $a
+ done
-KEYID=$(../pdns/pdnssec --config-dir=./ show-zone dnssec-parent.com | grep '(ZSK)' |
- grep 'Active: 1$' | awk '{print $3}')
-
-../pdns/pdnssec --config-dir=./ export-zone-dnskey dnssec-parent.com $KEYID > trusted
+ KEYID=$($PDNSSEC show-zone dnssec-parent.com | grep '(ZSK)' |
+ grep 'Active: 1$' | awk '{print $3}')
-sleep 1
-drill -t soa -D dnssec-parent.com @127.0.0.1 -p 5299 -k trusted
+ $PDNSSEC export-zone-dnskey dnssec-parent.com $KEYID > trusted
+ sleep 1
+ wait
+ ../pdns/pdns_server --config-dir=./ --daemon=no &
+ sleep 2
+ drill -t soa -D dnssec-parent.com @127.0.0.1 -p 5299 -k trusted
+ kill %1
+ wait
+}
+doTests SQLite3
+doTests PostgreSQL
+
\ No newline at end of file