This commit is contained in:
Daniel Salzman 2026-01-26 16:44:45 +01:00
parent 9e51a265b4
commit 5f8a21ce0d
12 changed files with 147 additions and 0 deletions

View file

@ -3,3 +3,4 @@ jsonschema
psutil
pyyaml
setuptools
redis[hiredis]

View file

@ -0,0 +1,10 @@
$ORIGIN zone1.
@ SOA ns admin 1 25 25 80 600
NS ns
ns AAAA ::0
@ ALIAS a.root-servers.net.
alias ALIAS b.root-servers.net.
alias A 198.41.0.4
alias A 192.168.0.1

View file

@ -0,0 +1,10 @@
$ORIGIN zone1.
@ SOA ns admin 2 25 25 80 600
NS ns
ns AAAA ::0
@ ALIAS a.root-servers.net.
alias ALIAS c.root-servers.net.
alias A 198.41.0.4
alias A 192.168.0.1

View file

@ -0,0 +1,12 @@
$ORIGIN zone1.
@ SOA ns admin 1 25 25 80 600
NS ns
ns AAAA ::0
@ A 198.41.0.4
@ AAAA 2001:503:ba3e::2:30
alias A 198.41.0.4
alias A 192.168.0.1
alias A 170.247.170.2
alias AAAA 2801:1b8:10::b

View file

@ -0,0 +1,12 @@
$ORIGIN zone1.
@ SOA ns admin 2 25 25 80 600
NS ns
ns AAAA ::0
@ A 198.41.0.4
@ AAAA 2001:503:ba3e::2:30
alias A 198.41.0.4
alias A 192.168.0.1
alias A 192.33.4.12
alias AAAA 2001:500:2::c

View file

@ -0,0 +1,8 @@
$ORIGIN zone2.
@ SOA ns admin 1 25 25 80 600
NS ns
ns AAAA ::0
@ ALIAS c.root-servers.net.
alias ALIAS d.root-servers.net.

View file

@ -0,0 +1,7 @@
$ORIGIN zone2.
@ SOA ns admin 2 25 25 80 600
NS ns
ns AAAA ::0
@ ALIAS c.root-servers.net.

View file

@ -0,0 +1,10 @@
$ORIGIN zone2.
@ SOA ns admin 1 25 25 80 600
NS ns
ns AAAA ::0
@ A 192.33.4.12
@ AAAA 2001:500:2::c
alias A 199.7.91.13
alias AAAA 2001:500:2d::d

View file

@ -0,0 +1,8 @@
$ORIGIN zone2.
@ SOA ns admin 2 25 25 80 600
NS ns
ns AAAA ::0
@ A 192.33.4.12
@ AAAA 2001:500:2::c

View file

@ -0,0 +1,54 @@
#!/usr/bin/env python3
'''Test for ALIAS resolving script.'''
import random
from dnstest.test import Test
from dnstest.utils import *
t = Test()
master = t.server("knot")
slave = t.server("knot")
ref = t.server("knot")
zones = t.zone("zone1", storage=".") + t.zone("zone2", storage=".")
t.link(zones, master)
t.link(zones, slave)
t.link(zones, ref)
redis = t.backend("redis", tls=random.choice([True, False]))
master.db_out(zones, [redis], 1)
slave.db_in(zones, [redis], 2)
ref.update_zonefile(zones[0], 10)
ref.update_zonefile(zones[1], 10)
master.conf_zone(zones).journal_content = "all"
master.conf_zone(zones).zonefile_load = "difference-no-serial"
slave.conf_zone(zones).zonefile_sync = "0"
t.start()
master.zones_wait(zones)
redis.unalias(1, 2)
redis.unalias(1, 2) # Should be NOOP.
serials = slave.zones_wait(zones)
t.xfr_diff(ref, slave, zones)
master.update_zonefile(zones[0], 1)
master.update_zonefile(zones[1], 1)
master.reload()
ref.update_zonefile(zones[0], 11)
ref.update_zonefile(zones[1], 11)
ref.reload()
redis.unalias(1, 2)
redis.unalias(1, 2) # Should be NOOP.
slave.zones_wait(zones, serials)
serials = slave.zones_wait(zones, serials)
t.xfr_diff(ref, slave, zones)
t.end()

View file

@ -82,6 +82,8 @@ bind_bin = get_binary("KNOT_TEST_BIND", "named")
bind_ctl = get_binary("KNOT_TEST_BINDC", "rndc")
# KNOT_TEST_BIND_CHECKCONF - Bind checkconf binary.
bind_checkconf_bin = get_binary("KNOT_TEST_BIND_CHECKCONF", "named-checkconf")
# KNOT_TEST_UNALIAS - Script for ALIAS resolving.
unalias_bin = get_binary("KNOT_TEST_UNALIAS", repo_binary("scripts/redis_unalias.py"))
# KNOT_TEST_OUTS_DIR - working directories location.
outs_dir = get_param("KNOT_TEST_OUTS_DIR", "/tmp")

View file

@ -1,9 +1,12 @@
#!/usr/bin/env python3
from dnstest.utils import *
import dnstest.params as params
import datetime
import os
import shutil
import subprocess
import sys
import time
class Redis(object):
@ -141,3 +144,13 @@ class Redis(object):
outf.write(txt)
outf.write("\n--------\n")
return txt
def unalias(self, inst_in, inst_out, dry_run=False):
cmd = [ sys.executable, params.unalias_bin, str(inst_in), str(inst_out), "-a",
self.addr, "-p", str(self.tls_port if self.tls else self.port), "-s" ]
if self.tls:
cmd += [ "-t", "-i" ]
if dry_run:
cmd += [ "-d" ]
outf = open(os.path.join(self.wrk_dir, "unalias.log"), "a")
subprocess.run(cmd, stdout=outf, stderr=outf)