Skip to content
Snippets Groups Projects
Commit c80c0382 authored by Jan Kadlec's avatar Jan Kadlec
Browse files

tests-extra: ixfr/stress: wait for update responses

parent c3523a6b
No related branches found
No related tags found
No related merge requests found
......@@ -7,30 +7,23 @@ import random, socket, os
from dnstest.utils import *
from dnstest.test import Test
FLOOD_COUNT = 4096
UPDATE_SIZE = 16
UPDATE_COUNT = 512
UPDATE_SIZE = 64
chars="qwertyuiopasdfghjklzxcvbnm123456789"
def randstr():
return ''.join(random.choice(chars) for _ in range(63))
def send_upd(up):
family = socket.AF_INET if up.server.addr == "127.0.0.1" else socket.AF_INET6
sock = socket.socket(family, socket.SOCK_DGRAM)
sock.sendto(up.upd.to_wire(), (up.server.addr, up.server.port))
def flood(server, zone):
rr = None
updates = []
for i in range(FLOOD_COUNT):
for i in range(UPDATE_COUNT):
update = server.update(zone)
for j in range(UPDATE_SIZE):
rr = [randstr() + "." + zone[0].name, 3600, "TXT", randstr()]
update.add(*rr)
updates.append(update)
for up in updates:
send_upd(up)
update.send()
return rr
random.seed()
......@@ -39,9 +32,14 @@ t = Test()
zone = t.zone_rnd(1, dnssec=False)
master = t.server("knot")
# set journal limit for the master
master.ixfr_fslimit = "1000k"
slaves = [t.server("knot") for _ in range(2)]
# set journal limit for one of the slaves
slaves[0].ixfr_fslimit = "500k"
for s in slaves:
t.link(zone, master, s, ddns=True, ixfr=True)
......@@ -64,10 +62,15 @@ for s in slaves + [master]:
resp = s.dig(last_rr[0], "TXT")
resp.check(rdata = last_rr[3])
# get journal size
# check journal sizes
st = os.stat(master.dir + "/" + zone[0].name.lower() + "diff.db")
if st.st_size > 2000 * 1024:
detail_log("Journal too big, should be 1000k, is: " + str(st.st_size // 1024) + "k")
if st.st_size > 1300 * 1024:
detail_log("Journal too big, should be max 1000k, is: " + str(st.st_size // 1024) + "k")
set_err("JOURNAL SIZE OVERFLOW")
st = os.stat(slaves[0].dir + "/" + zone[0].name.lower() + "diff.db")
if st.st_size > 650 * 1024:
detail_log("Journal too big, should be max 500k, is: " + str(st.st_size // 1024) + "k")
set_err("JOURNAL SIZE OVERFLOW")
t.stop()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment