knot-dns/tests-extra/tests/zone/semcheck_transfer/test.py
2016-04-14 15:51:49 +02:00

53 lines
1.2 KiB
Python

#!/usr/bin/env python3
from dnstest.test import Test
import dnstest.utils
t = Test()
ixfr_master = t.server("bind")
ixfr_slave = t.server("knot")
axfr_master = t.server("bind")
axfr_slave = t.server("knot")
zone = t.zone("example.com.", storage=".")
t.link(zone, ixfr_master, ixfr_slave, ixfr=True)
t.link(zone, axfr_master, axfr_slave, ixfr=False)
def prepare(master, slave, zone):
# Wait for zones.
serial = master.zone_wait(zone)
slave.zone_wait(zone)
# Update master file with the record (new SOA serial).
master.update_zonefile(zone, version=1)
master.reload()
# Wait for zones and compare them.
master_serial = master.zone_wait(zone, serial)
return master_serial
def test(slave, zone, master_serial):
slave_serial = slave.zone_wait(zone)
return slave_serial == master_serial
t.start()
ixfr_serial = prepare(ixfr_master, ixfr_slave, zone)
axfr_serial = prepare(axfr_master, axfr_slave, zone)
t.sleep(10)
ixfr = test(ixfr_slave, zone, ixfr_serial)
axfr = test(axfr_slave, zone, axfr_serial)
dnstest.utils.detail_log("IXFR %s" % (not ixfr))
dnstest.utils.detail_log("AXFR %s" % (not axfr))
if ixfr or axfr:
dnstest.utils.set_err("SEMANTIC CHECK")
t.end()