mirror of
https://gitlab.nic.cz/knot/knot-dns.git
synced 2026-02-03 18:49:28 -05:00
test
This commit is contained in:
parent
9e51a265b4
commit
5f8a21ce0d
12 changed files with 147 additions and 0 deletions
|
|
@ -3,3 +3,4 @@ jsonschema
|
|||
psutil
|
||||
pyyaml
|
||||
setuptools
|
||||
redis[hiredis]
|
||||
10
tests-extra/tests/redis/alias/data/zone1.zone
Normal file
10
tests-extra/tests/redis/alias/data/zone1.zone
Normal 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
|
||||
10
tests-extra/tests/redis/alias/data/zone1.zone.1
Normal file
10
tests-extra/tests/redis/alias/data/zone1.zone.1
Normal 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
|
||||
12
tests-extra/tests/redis/alias/data/zone1.zone.10
Normal file
12
tests-extra/tests/redis/alias/data/zone1.zone.10
Normal 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
|
||||
12
tests-extra/tests/redis/alias/data/zone1.zone.11
Normal file
12
tests-extra/tests/redis/alias/data/zone1.zone.11
Normal 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
|
||||
8
tests-extra/tests/redis/alias/data/zone2.zone
Normal file
8
tests-extra/tests/redis/alias/data/zone2.zone
Normal 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.
|
||||
7
tests-extra/tests/redis/alias/data/zone2.zone.1
Normal file
7
tests-extra/tests/redis/alias/data/zone2.zone.1
Normal 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.
|
||||
10
tests-extra/tests/redis/alias/data/zone2.zone.10
Normal file
10
tests-extra/tests/redis/alias/data/zone2.zone.10
Normal 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
|
||||
8
tests-extra/tests/redis/alias/data/zone2.zone.11
Normal file
8
tests-extra/tests/redis/alias/data/zone2.zone.11
Normal 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
|
||||
54
tests-extra/tests/redis/alias/test.py
Normal file
54
tests-extra/tests/redis/alias/test.py
Normal 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()
|
||||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue