diff --git a/tests-extra/tests/zone/load/test.py b/tests-extra/tests/zone/load/test.py new file mode 100644 index 0000000000000000000000000000000000000000..c40b7581d1a29487cb825557912a6cefe0589241 --- /dev/null +++ b/tests-extra/tests/zone/load/test.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python3 + +'''Test for slave zone refresh when loading.''' + +from dnstest.test import Test +from dnstest.utils import * + +t = Test() + +master = t.server("knot") +slave = t.server("knot") +slave.disable_notify = True + +zone_del = t.zone_rnd(1, dnssec=False) +zone_upd = t.zone_rnd(1, dnssec=False) +zones = zone_del + zone_upd +t.link(zones, master, slave) + +t.start() + +serial_del_init = master.zone_wait(zone_del) +serial_upd_init = master.zone_wait(zone_upd) +slave.zones_wait(zones) + +slave.stop() + +# Update a zonefile on the master. +master.update_zonefile(zone_upd, random=True) +master.reload() + +# Remove a zonefile on the slave. +slave.clean(zone=zone_del, timers=False) + +slave.start() + +# Check for immediate zone transfer if deleted. +slave.zone_wait(zone_del, serial=serial_del_init, equal=True, greater=False) + +# Check for untouched zone if retransfer already scheduled. +serial_upd = slave.zone_wait(zone_upd) +master.zone_wait(zone_upd, serial_upd, equal=False, greater=True) + +t.end() diff --git a/tests-extra/tools/dnstest/server.py b/tests-extra/tools/dnstest/server.py index 891806ed5721342a401b9f8bf1aa3f4741896d50..a84975c365ec4c775aec306fe121f75a7dd1fbee 100644 --- a/tests-extra/tools/dnstest/server.py +++ b/tests-extra/tools/dnstest/server.py @@ -663,6 +663,8 @@ class Server(object): def clean(self, zone=True, timers=True): if zone: + zone = zone_arg_check(zone) + # Remove all zonefiles. if zone is True: for _z in sorted(self.zones):