mirror of
https://gitlab.nic.cz/knot/knot-dns.git
synced 2026-02-03 18:49:28 -05:00
83 lines
1.9 KiB
Python
83 lines
1.9 KiB
Python
#!/usr/bin/env python3
|
|
|
|
'''Test of min/max limit of SOA params (refresh, retry, expire)'''
|
|
|
|
from dnstest.test import Test
|
|
import time
|
|
|
|
t = Test()
|
|
|
|
master = t.server("knot")
|
|
slave = t.server("knot")
|
|
zone_min_ = t.zone("min.", storage=".")
|
|
zone_max_ = t.zone("max.", storage=".")
|
|
zone_min = zone_min_[0]
|
|
zone_max = zone_max_[0]
|
|
zones = zone_min_ + zone_max_
|
|
|
|
t.link(zones, master, slave, ixfr=True)
|
|
|
|
master.disable_notify = True
|
|
|
|
slave.zones[zone_min.name].refresh_min = 12
|
|
slave.zones[zone_max.name].refresh_max = 9
|
|
slave.zones[zone_min.name].retry_min = 12
|
|
slave.zones[zone_max.name].retry_max = 9
|
|
slave.zones[zone_min.name].expire_min = 24
|
|
slave.zones[zone_max.name].expire_max = 18
|
|
|
|
t.start()
|
|
|
|
# Wait for AXFR to slave server.
|
|
serials_init = master.zones_wait(zones)
|
|
slave.zones_wait(zones)
|
|
|
|
slave.ctl("zone-refresh")
|
|
|
|
up = master.update(zone_max_)
|
|
up.add("added", 3600, "A", "1.2.3.4")
|
|
up.send()
|
|
up = master.update(zone_min_)
|
|
up.add("added", 3600, "A", "1.2.3.4")
|
|
up.send()
|
|
|
|
t.sleep(10)
|
|
|
|
# chech that MAX already refreshed and MIN has not
|
|
|
|
resp = slave.dig(zone_max.name, "SOA")
|
|
resp.check_soa_serial(serials_init[zone_max.name] + 1)
|
|
resp = slave.dig(zone_min.name, "SOA")
|
|
resp.check_soa_serial(serials_init[zone_min.name])
|
|
|
|
master.stop()
|
|
slave.ctl("zone-refresh")
|
|
|
|
retry_start = time.time()
|
|
t.sleep(1)
|
|
master.update_zonefile(zone_max, version=10)
|
|
master.update_zonefile(zone_min, version=10)
|
|
master.start()
|
|
master.zones_wait(zones)
|
|
try:
|
|
t.sleep(10 - (time.time() - retry_start))
|
|
except: # negative sleep
|
|
pass
|
|
|
|
resp = slave.dig(zone_max.name, "SOA")
|
|
resp.check_soa_serial(serials_init[zone_max.name] + 10)
|
|
resp = slave.dig(zone_min.name, "SOA")
|
|
resp.check_soa_serial(serials_init[zone_min.name])
|
|
|
|
slave.ctl("zone-refresh")
|
|
t.sleep(2)
|
|
master.stop()
|
|
|
|
t.sleep(18)
|
|
|
|
resp = slave.dig(zone_max.name, "SOA")
|
|
resp.check(rcode="SERVFAIL")
|
|
resp = slave.dig(zone_min.name, "SOA")
|
|
resp.check(rcode="NOERROR")
|
|
|
|
t.end()
|