]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
pytest dns_aging: add sibling tests
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Sat, 19 Jun 2021 02:18:05 +0000 (14:18 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 22 Jun 2021 01:14:37 +0000 (01:14 +0000)
Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
python/samba/tests/dns_aging.py
selftest/knownfail.d/dns-aging

index 43805ed10866e782cf35434565a818e672241c90..67bc836c70e05b65a424452dfb750f1bafa7598e 100644 (file)
@@ -2623,5 +2623,137 @@ class TestDNSAging(DNSTest):
         self._test_dns_delete_simple(10, 1e9, False, True)
 
 
+    def _test_dns_add_sibling(self, a_days, refresh, aging=True, touch=False):
+        # Here we show that with aging enabled, the timestamp of
+        # sibling records *is* modified when a record is added.
+        #
+        # With aging disabled, it *is* modified, if the dns server has
+        # seen it updated before ldap set the time (that is, probably
+        # the dns server overwrites AD). This happens even if AD
+        # thinks the record is static.
+        name = 'test'
+        A = ['A']
+        B = ['B']
+        self.set_zone_int_params(RefreshInterval=int(refresh),
+                                 NoRefreshInterval=7,
+                                 Aging=int(aging))
+
+        now = dsdb_dns.unix_to_dns_timestamp(int(time.time()))
+        a_days_ago = max(now - a_days * 24, 0)
+
+        if touch:
+            self.dns_update_record(name, A)
+
+        self.ldap_update_record(name, A, dwTimeStamp=a_days_ago)
+
+        atime = self.get_unique_txt_record(name, A).dwTimeStamp
+
+        self.dns_update_record(name, B)
+        a_rec = self.get_unique_txt_record(name, A)
+        if not aging and touch:
+            # this resets the timestamp even if it is a static record.
+            self.assert_soon_after(a_rec, now)
+        else:
+            self.assert_timestamps_equal(a_rec, atime)
+
+        b_rec = self.get_unique_txt_record(name, B)
+        self.assert_soon_after(b_rec, now)
+
+    def test_dns_add_sibling_2_7_days_aging(self):
+        self._test_dns_add_sibling(2, 7, True)
+
+    def test_dns_add_sibling_2_7_days_no_aging(self):
+        self._test_dns_add_sibling(2, 7, False)
+
+    def test_dns_add_sibling_12_7_days_aging(self):
+        self._test_dns_add_sibling(12, 7, True)
+
+    def test_dns_add_sibling_12_7_days_no_aging(self):
+        self._test_dns_add_sibling(12, 7, False)
+
+    def test_dns_add_sibling_12_3_days_aging(self):
+        self._test_dns_add_sibling(12, 3, True)
+
+    def test_dns_add_sibling_12_3_days_no_aging(self):
+        self._test_dns_add_sibling(12, 3, False)
+
+    def test_dns_add_sibling_112_7_days_aging(self):
+        self._test_dns_add_sibling(112, 7, True)
+
+    def test_dns_add_sibling_112_7_days_no_aging(self):
+        self._test_dns_add_sibling(112, 7, False)
+
+    def test_dns_add_sibling_12_113_days_aging(self):
+        self._test_dns_add_sibling(12, 113, True)
+
+    def test_dns_add_sibling_12_113_days_no_aging(self):
+        self._test_dns_add_sibling(12, 113, False)
+
+    def test_dns_add_sibling_0_7_days_aging(self):
+        # 1e9 days ago evaluates to 0, i.e static
+        self._test_dns_add_sibling(1e9, 7, True)
+
+    def test_dns_add_sibling_0_7_days_no_aging(self):
+        self._test_dns_add_sibling(1e9, 7, False)
+
+    def test_dns_add_sibling_0_0_days_aging(self):
+        self._test_dns_add_sibling(1e9, 0, True)
+
+    def test_dns_add_sibling_0_0_days_no_aging(self):
+        self._test_dns_add_sibling(1e9, 0, False)
+
+    def test_dns_add_sibling_10_0_days_aging(self):
+        self._test_dns_add_sibling(10, 0, True)
+
+    def test_dns_add_sibling_10_0_days_no_aging(self):
+        self._test_dns_add_sibling(10, 0, False)
+
+    def test_dns_add_sibling_2_7_days_aging_touch(self):
+        self._test_dns_add_sibling(2, 7, True, True)
+
+    def test_dns_add_sibling_2_7_days_no_aging_touch(self):
+        self._test_dns_add_sibling(2, 7, False, True)
+
+    def test_dns_add_sibling_12_7_days_aging_touch(self):
+        self._test_dns_add_sibling(12, 7, True, True)
+
+    def test_dns_add_sibling_12_7_days_no_aging_touch(self):
+        self._test_dns_add_sibling(12, 7, False, True)
+
+    def test_dns_add_sibling_12_3_days_aging_touch(self):
+        self._test_dns_add_sibling(12, 3, True, True)
+
+    def test_dns_add_sibling_12_3_days_no_aging_touch(self):
+        self._test_dns_add_sibling(12, 3, False, True)
+
+    def test_dns_add_sibling_112_7_days_aging_touch(self):
+        self._test_dns_add_sibling(112, 7, True, True)
+
+    def test_dns_add_sibling_112_7_days_no_aging_touch(self):
+        self._test_dns_add_sibling(112, 7, False, True)
+
+    def test_dns_add_sibling_12_113_days_aging_touch(self):
+        self._test_dns_add_sibling(12, 113, True, True)
+
+    def test_dns_add_sibling_12_113_days_no_aging_touch(self):
+        self._test_dns_add_sibling(12, 113, False, True)
+
+    def test_dns_add_sibling_0_7_days_aging_touch(self):
+        self._test_dns_add_sibling(1e9, 7, True, True)
+
+    def test_dns_add_sibling_0_7_days_no_aging_touch(self):
+        self._test_dns_add_sibling(1e9, 7, False, True)
+
+    def test_dns_add_sibling_0_0_days_aging_touch(self):
+        self._test_dns_add_sibling(1e9, 0, True, True)
+
+    def test_dns_add_sibling_0_0_days_no_aging_touch(self):
+        self._test_dns_add_sibling(1e9, 0, False, True)
+
+    def test_dns_add_sibling_10_0_days_aging_touch(self):
+        self._test_dns_add_sibling(10, 0, True, True)
+
+    def test_dns_add_sibling_10_0_days_no_aging_touch(self):
+        self._test_dns_add_sibling(10, 0, False, True)
 
 TestProgram(module=__name__, opts=subunitopts)
index bb3ea1e38589b70a6e516373a16195ff8c39bbad..ea1f0771c7c8bcccb1b09ecfc611cbad96ffe10e 100644 (file)
@@ -3,6 +3,32 @@
 # These all pass on Windows, apart from test_basic_scavenging, which
 # fails due to technical issues.
 
+samba.tests.dns_aging.+test_dns_add_sibling_0_0_days_aging
+samba.tests.dns_aging.+test_dns_add_sibling_0_0_days_aging_touch
+samba.tests.dns_aging.+test_dns_add_sibling_0_0_days_no_aging
+samba.tests.dns_aging.+test_dns_add_sibling_0_0_days_no_aging_touch
+samba.tests.dns_aging.+test_dns_add_sibling_0_7_days_aging
+samba.tests.dns_aging.+test_dns_add_sibling_0_7_days_aging_touch
+samba.tests.dns_aging.+test_dns_add_sibling_0_7_days_no_aging
+samba.tests.dns_aging.+test_dns_add_sibling_0_7_days_no_aging_touch
+samba.tests.dns_aging.+test_dns_add_sibling_10_0_days_aging
+samba.tests.dns_aging.+test_dns_add_sibling_10_0_days_aging_touch
+samba.tests.dns_aging.+test_dns_add_sibling_10_0_days_no_aging_touch
+samba.tests.dns_aging.+test_dns_add_sibling_112_7_days_aging
+samba.tests.dns_aging.+test_dns_add_sibling_112_7_days_aging_touch
+samba.tests.dns_aging.+test_dns_add_sibling_112_7_days_no_aging_touch
+samba.tests.dns_aging.+test_dns_add_sibling_12_113_days_aging
+samba.tests.dns_aging.+test_dns_add_sibling_12_113_days_aging_touch
+samba.tests.dns_aging.+test_dns_add_sibling_12_113_days_no_aging_touch
+samba.tests.dns_aging.+test_dns_add_sibling_12_3_days_aging
+samba.tests.dns_aging.+test_dns_add_sibling_12_3_days_aging_touch
+samba.tests.dns_aging.+test_dns_add_sibling_12_3_days_no_aging_touch
+samba.tests.dns_aging.+test_dns_add_sibling_12_7_days_aging
+samba.tests.dns_aging.+test_dns_add_sibling_12_7_days_aging_touch
+samba.tests.dns_aging.+test_dns_add_sibling_12_7_days_no_aging_touch
+samba.tests.dns_aging.+test_dns_add_sibling_2_7_days_aging
+samba.tests.dns_aging.+test_dns_add_sibling_2_7_days_aging_touch
+samba.tests.dns_aging.+test_dns_add_sibling_2_7_days_no_aging_touch
 samba.tests.dns_aging.+test_add_update_dwFlags
 samba.tests.dns_aging.+test_add_update_dwReserved
 samba.tests.dns_aging.+test_add_update_dwSerial