Beispiel #1
0
def reload_zone(serial, version):
    master.update_zonefile(zone, version)
    master.reload()
    new_serial = master.zone_wait(zone)
    if new_serial != serial:
        set_err("SOA MISMATCH")
        detail_log("!Zone '%s' SOA serial %s != %s" % (zone[0].name, new_serial, serial))
        return
    resp = master.dig("new-record%d.%s" % (version, zone[0].name), "A")
    resp.check(rcode="NOERROR")
Beispiel #2
0
def reload_zone(serial, version):
    master.update_zonefile(zone, version)
    master.reload()
    new_serial = master.zone_wait(zone)
    if new_serial != serial:
        set_err("SOA MISMATCH")
        detail_log("!Zone '%s' SOA serial %s != %s" % (zone[0].name, new_serial, serial))
        return
    resp = master.dig("new-record%d.%s" % (version, zone[0].name), "A")
    resp.check(rcode="NOERROR")
Beispiel #3
0
def check_keys(server, zone_name, expect_keys):
    cmd = Popen([
        dnstest.params.keymgr_bin, "-d", server.dir + "/keys", zone_name,
        "list"
    ],
                stdout=PIPE,
                stderr=PIPE,
                universal_newlines=True)
    (stdout, stderr) = cmd.communicate()
    lines = len(stdout.splitlines())
    if lines != expect_keys:
        set_err("CHECK # of KEYS (%d != %d)" % (lines, expect_keys))
Beispiel #4
0
def reload_zone(version, exp_serial, exp_version):
    master.update_zonefile(zone, version)

    if random.random() < 0.5:
        master.reload()
    else:
        master.ctl(random.choice(["-f", " "]) + " zone-reload " + zone[0].name,
                   wait=True)

    new_serial = master.zone_wait(zone)
    if new_serial != exp_serial:
        set_err("SOA MISMATCH")
        detail_log("!Zone '%s' SOA serial %s != %s" %
                   (zone[0].name, new_serial, exp_serial))
        return
    resp = master.dig("new-record%d.%s" % (exp_version, zone[0].name), "A")
    resp.check(rcode="NOERROR")
Beispiel #5
0
def reload_zone(version, exp_serial, exp_version, msg):
    master.update_zonefile(zone, version)

    opt = random.choice([1, 2, 3])
    if opt == 1:
        master.reload()
    if opt == 2:
        master.ctl("zone-reload " + zone[0].name) # the reload should fail -> no blocking mode, no error
        t.sleep(2)
    if opt == 3:
        master.ctl("-f zone-reload " + zone[0].name, wait=True)
        t.sleep(1) # forced zone-reload does *only schedule* LOAD event

    new_serial = master.zone_wait(zone)
    if new_serial != exp_serial:
        set_err("SOA MISMATCH %s (%d)" % (msg, opt))
        detail_log("!Zone '%s' SOA serial %s != %s" % (zone[0].name, new_serial, exp_serial))
        return
    resp = master.dig("new-record%d.%s" % (exp_version, zone[0].name), "A")
    resp.check(rcode="NOERROR")
Beispiel #6
0
resp0.check_count(2, "DNSKEY")
dnskey0 = resp0.resp.answer[0].to_rdataset()[0]
up = master.update(zone[1])
up.delete("junk.bar.zones.catalog1.", "PTR", "cataloged2.")
up.add("junk.bar.zones.catalog1.", 0, "PTR", "cataloged2.")
up.send("NOERROR")
t.sleep(4)
resp1 = slave.dig("cataloged2.", "DNSKEY")
resp1.check_count(2, "DNSKEY")
match = 0
if resp1.count("DNSKEY") > 0:
    for dnskey1 in resp1.resp.answer[0].to_rdataset():
        if dnskey1.to_text() == dnskey0.to_text():
             match = match + 1
if match < 1:
    set_err("ZONE PURGED")
    dnskey1 = dnskey0
else:
    dnskey1 = resp1.resp.answer[0].to_rdataset()[0]

# Check remove-adding the zone: shall effectively purge it
up = master.update(zone[1])
up.delete("junk.bar.zones.catalog1.", "PTR", "cataloged2.")
up.add("junk.bar2.zones.catalog1.", 0, "PTR", "cataloged2.")
up.send("NOERROR")
t.sleep(4)
shutil.copy(t.data_dir + "/cataloged2.zone", master.dir + "/master") # because the purge deletes even zonefile
master.ctl("zone-reload cataloged2.")
t.sleep(6)
resp2 = slave.dig("cataloged2.", "DNSKEY")
resp2.check_count(2, "DNSKEY")
Beispiel #7
0
t.link(zone, server)
server.dnssec(zone).enable = True

t.start()

serial = server.zone_wait(zone)

scripts = [
    ("insensitive RRs", "modify-insensitive.awk", False),
    ("NSEC RR", "modify-nsec.awk", True),
    ("LP RR", "modify-lp.awk", True),
]

for name, script, resign in scripts:
    t.sleep(1)
    server.flush()
    server.stop()
    patch_zone(t, server, zone, script)
    server.start()

    new_serial = server.zone_wait(zone)
    signed = new_serial != serial

    if signed != resign:
        set_err("Invalid state after %s change" % name)
        break

    serial = new_serial

t.stop()
Beispiel #8
0
t.link(zone, server)

t.start()

serial = server.zone_wait(zone)

scripts = [
    ("insensitive RRs", "modify-insensitive.awk", False),
    ("NSEC RR", "modify-nsec.awk", True),
    ("LP RR", "modify-lp.awk", True),
]

for name, script, resign in scripts:
    t.sleep(1)
    server.flush()
    server.stop()
    patch_zone(t, server, zone, script)
    server.start()

    new_serial = server.zone_wait(zone)
    signed = new_serial != serial

    if signed != resign:
        set_err("Invalid state after %s change" % name)
        break

    serial = new_serial

t.stop()