]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Improve isctest.template dataclasses' defaults
authorNicki Křížek <nicki@isc.org>
Wed, 1 Apr 2026 15:04:22 +0000 (17:04 +0200)
committerNicki Křížek <nicki@isc.org>
Thu, 28 May 2026 14:52:24 +0000 (16:52 +0200)
Extend the Nameserver to generate the default IPv4/IPv6 values, add NSX
values for the predefined nameservers (there are 11 of them, as per
bin/tests/system/ifconfig.sh.in max value). Add the missing ns11
fixture.

Extend the Zone to derive the zone filename by default, unless
specified.

Adjust the existing uses of these classes to utilize the simplified
defaults.

(cherry picked from commit fa3a59e70c97a24090a24d46135f672a004bf9ca)

bin/tests/system/conftest.py
bin/tests/system/isctest/template.py

index ee792fb0a85196b1afce5dbb01b6cc77fe94bdca..9228c596ed47e02176dd24d3508d875c4e4642d6 100644 (file)
@@ -765,3 +765,8 @@ def ns9(servers):
 @pytest.fixture(scope="module")
 def ns10(servers):
     return servers["ns10"]
+
+
+@pytest.fixture(scope="module")
+def ns11(servers):
+    return servers["ns11"]
index 5555589460b855074c6e1c694a2e01459e4f8494..f26c7deab9ff8995b65bdd8e6c428fb72ac06c95 100644 (file)
@@ -14,6 +14,7 @@
 from dataclasses import dataclass
 import os
 from pathlib import Path
+import re
 from typing import Any, Dict, Optional, Union
 
 import pytest
@@ -101,6 +102,51 @@ class TemplateEngine:
             self.render(template[:-3], data)
 
 
+@dataclass
+class Nameserver:
+
+    name: str
+    num: int | None = None
+    ip: str | None = None
+    ip6: str | None = None
+
+    def __post_init__(self):
+        if self.num is None:
+            match = re.search(r"\d+", self.name)
+            assert match
+            self.num = int(match.group(0))
+        if self.ip is None:
+            self.ip = f"10.53.0.{self.num}"
+        if self.ip6 is None:
+            self.ip6 = f"fd92:7065:b8e:ffff::{self.num}"
+
+
+NS1 = Nameserver("ns1")
+NS2 = Nameserver("ns2")
+NS3 = Nameserver("ns3")
+NS4 = Nameserver("ns4")
+NS5 = Nameserver("ns5")
+NS6 = Nameserver("ns6")
+NS7 = Nameserver("ns7")
+NS8 = Nameserver("ns8")
+NS9 = Nameserver("ns9")
+NS10 = Nameserver("ns10")
+NS11 = Nameserver("ns11")
+
+
+@dataclass
+class Zone:
+
+    name: str
+    ns: Nameserver
+    type: str = "primary"
+    filename: str | None = None
+
+    def __post_init__(self):
+        if self.filename is None:
+            self.filename = f"{self.name}.db"
+
+
 @dataclass
 class TrustAnchor:
     domain: str