--- /dev/null
+create table domains (
+ id INT auto_increment,
+ name VARCHAR(255) NOT NULL,
+ master VARCHAR(128) DEFAULT NULL,
+ last_check INT DEFAULT NULL,
+ type VARCHAR(6) NOT NULL,
+ notified_serial INT DEFAULT NULL,
+ account VARCHAR(40) DEFAULT NULL,
+ primary key (id)
+) Engine=InnoDB;
+
+CREATE UNIQUE INDEX name_index ON domains(name);
+
+CREATE TABLE records (
+ id INT auto_increment,
+ domain_id INT DEFAULT NULL,
+ name VARCHAR(255) DEFAULT NULL,
+ type VARCHAR(10) DEFAULT NULL,
+ content VARCHAR(4096) DEFAULT NULL,
+ ttl INT DEFAULT NULL,
+ prio INT DEFAULT NULL,
+ change_date INT DEFAULT NULL,
+ primary key(id)
+) Engine=InnoDB;
+
+CREATE INDEX rec_name_index ON records(name);
+CREATE INDEX nametype_index ON records(name,type);
+CREATE INDEX domain_id ON records(domain_id);
+
+create table supermasters (
+ ip VARCHAR(25) NOT NULL,
+ nameserver VARCHAR(255) NOT NULL,
+ account VARCHAR(40) DEFAULT NULL
+) Engine=InnoDB;
#!/bin/sh -ex
+
+tosql ()
+{
+ make -C ../pdns/backends/bind zone2sql > /dev/null
+ ../pdns/backends/bind/zone2sql --transactions --$1 --named-conf=./named.conf
+
+}
+
port=$1
[ -z "$port" ] && port=5300
-./bind-gsqlite3-setup
-../pdns/pdns_server --daemon=no --local-port=5300 --socket-dir=./ \
---no-shuffle --launch=bind,gsqlite3 --bind-config=./named.conf \
---gsqlite3-database=./powerdns.sqlite3 --gsqlite3-dnssec \
---fancy-records --query-logging --send-root-referral --loglevel=9 \
---cache-ttl=0 --no-config &
+context=$2
+[ -z "$context" ] && context=bind-gsqlite3
+
+case $context in
+ bind)
+ ../pdns/pdns_server --daemon=no --local-port=$port --socket-dir=./ \
+ --no-shuffle --launch=bind --bind-config=./named.conf \
+ --fancy-records --query-logging --send-root-referral --loglevel=9 \
+ --cache-ttl=0 --no-config &
+ ;;
+ bind-gsqlite3)
+ ./bind-gsqlite3-setup
+ ../pdns/pdns_server --daemon=no --local-port=$port --socket-dir=./ \
+ --no-shuffle --launch=bind,gsqlite3 --bind-config=./named.conf \
+ --gsqlite3-database=./powerdns.sqlite3 --gsqlite3-dnssec \
+ --fancy-records --query-logging --send-root-referral --loglevel=9 \
+ --cache-ttl=0 --no-config &
+ ;;
+ gmysql-nodnssec)
+ [ -z "$GMYSQLDB" ] && GMYSQLDB=pdnstest
+ [ -z "$GMYSQLUSER" ] && GMYSQLUSER=root
+ [ -z "$GMYSQLHOST" ] && GMYSQLHOST=localhost
+ [ -z "$GMYSQLPASSWD" ] && GMYSQLPASSWD=''
+
+ mysqladmin --user="$GMYSQLUSER" --password="$GMYSQLPASSWD" --host="$GMYSQLHOST" --force drop "$GMYSQLDB" \
+ || echo ignoring mysqladmin drop failure
+ mysqladmin --user="$GMYSQLUSER" --password="$GMYSQLPASSWD" --host="$GMYSQLHOST" create "$GMYSQLDB"
+ mysql --user="$GMYSQLUSER" --password="$GMYSQLPASSWD" --host="$GMYSQLHOST" \
+ "$GMYSQLDB" < ../pdns/no-dnssec.schema.mysql.sql
+
+ tosql gmysql | mysql --user="$GMYSQLUSER" --password="$GMYSQLPASSWD" --host="$GMYSQLHOST" \
+ "$GMYSQLDB"
+
+ ../pdns/pdns_server --daemon=no --local-port=$port --socket-dir=./ \
+ --no-shuffle --launch=gmysql \
+ --fancy-records --query-logging --send-root-referral --loglevel=9 \
+ --cache-ttl=0 --no-config \
+ --gmysql-dbname="$GMYSQLDB" \
+ --gmysql-user="$GMYSQLUSER" \
+ --gmysql-host="$GMYSQLHOST" \
+ --gmysql-password="$GMYSQLPASS" &
+ ;;
+ gmysql)
+ [ -z "$GMYSQLDB" ] && GMYSQLDB=pdnstest
+ [ -z "$GMYSQLUSER" ] && GMYSQLUSER=root
+ [ -z "$GMYSQLHOST" ] && GMYSQLHOST=localhost
+ [ -z "$GMYSQLPASSWD" ] && GMYSQLPASSWD=''
+
+ mysqladmin --user="$GMYSQLUSER" --password="$GMYSQLPASSWD" --host="$GMYSQLHOST" --force drop "$GMYSQLDB" \
+ || echo ignoring mysqladmin drop failure
+ mysqladmin --user="$GMYSQLUSER" --password="$GMYSQLPASSWD" --host="$GMYSQLHOST" create "$GMYSQLDB"
+ mysql --user="$GMYSQLUSER" --password="$GMYSQLPASSWD" --host="$GMYSQLHOST" \
+ "$GMYSQLDB" < ../pdns/no-dnssec.schema.mysql.sql
+ mysql --user="$GMYSQLUSER" --password="$GMYSQLPASSWD" --host="$GMYSQLHOST" \
+ "$GMYSQLDB" < ../pdns/dnssec.schema.mysql.sql
+
+ tosql gmysql | mysql --user="$GMYSQLUSER" --password="$GMYSQLPASSWD" --host="$GMYSQLHOST" \
+ "$GMYSQLDB"
+
+ cat > pdns-gmysql.conf << __EOF__
+launch=gmysql
+gmysql-dbname=$GMYSQLDB
+gmysql-user=$GMYSQLUSER
+gmysql-host=$GMYSQLHOST
+gmysql-password=$GMYSQLPASS
+gmysql-dnssec
+__EOF__
+ for zone in $(grep zone named.conf | cut -f2 -d\")
+ do
+ ../pdns/pdnssec --config-dir=. --config-name=gmysql secure-zone $zone 2>&1
+ done
+
+ ../pdns/pdns_server --daemon=no --local-port=$port --socket-dir=./ \
+ --no-shuffle --launch=gmysql --gmysql-dnssec \
+ --fancy-records --query-logging --send-root-referral --loglevel=9 \
+ --cache-ttl=0 --no-config \
+ --gmysql-dbname="$GMYSQLDB" \
+ --gmysql-user="$GMYSQLUSER" \
+ --gmysql-host="$GMYSQLHOST" \
+ --gmysql-password="$GMYSQLPASS" &
+ ;;
+ *)
+ echo unknown context $context
+ : > passed_tests
+ echo 'unknown-context' > failed_tests
+ ./toxml $context
+ exit 1
+esac
+
export port
-nameserver=127.0.0.1 ./runtests
+
+## TODO: give pdns a few seconds to startup or fail, then check if it did not fail
+## TODO: give sdig a timeout
+nameserver=127.0.0.1 ./runtests $context
kill $(cat pdns.pid)
+./toxml $context
#!/bin/sh
+CONTEXT=$1
+[ -z "$context" ] || CONTEXT="global"
+exec > testresults-${CONTEXT}.xml
echo '<?xml version="1.0"?>'
NUMTESTS=$(cat failed_tests passed_tests | wc -l)
NUMFAILED=$(cat failed_tests | wc -l)
-echo '<testsuite tests="'$NUMTESTS'" failures="'$NUMFAILED'" errors="'$NUMFAILED'" name="powerdns">'
+echo '<testsuite tests="'$NUMTESTS'" failures="'$NUMFAILED'" errors="'$NUMFAILED'" name="'$CONTEXT'">'
for t in $(cat failed_tests)
do
- echo ' <testcase name="'$t'" classname="powerdns" time="0">'
+ echo ' <testcase name="'$t'" classname="'$CONTEXT'" time="0">'
echo ' <error type="error" message="test failed"/>'
echo ' </testcase>'
done
+for t in $(cat passed_tests)
+do
+ echo ' <testcase name="'$t'" classname="'$CONTEXT'" time="0" />'
+done
echo '</testsuite>'