mirror of
https://gitlab.nic.cz/knot/knot-dns.git
synced 2026-02-03 18:49:28 -05:00
53 lines
1.2 KiB
Python
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()
|