From: Douglas Bagnall Date: Sat, 19 Jun 2021 02:18:05 +0000 (+1200) Subject: pytest dns_aging: add sibling tests X-Git-Tag: tevent-0.11.0~256 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eac8d6b30b3045021667bf4eda521eb64bea5075;p=thirdparty%2Fsamba.git pytest dns_aging: add sibling tests Signed-off-by: Douglas Bagnall Reviewed-by: Andrew Bartlett --- diff --git a/python/samba/tests/dns_aging.py b/python/samba/tests/dns_aging.py index 43805ed1086..67bc836c70e 100644 --- a/python/samba/tests/dns_aging.py +++ b/python/samba/tests/dns_aging.py @@ -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) diff --git a/selftest/knownfail.d/dns-aging b/selftest/knownfail.d/dns-aging index bb3ea1e3858..ea1f0771c7c 100644 --- a/selftest/knownfail.d/dns-aging +++ b/selftest/knownfail.d/dns-aging @@ -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