From: Douglas Bagnall Date: Sat, 19 Jun 2021 01:35:54 +0000 (+1200) Subject: pytest dns_aging: add simple delete tests X-Git-Tag: tevent-0.11.0~257 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=61355d36cbfc123ee61479257845eff4864d3d0b;p=thirdparty%2Fsamba.git pytest dns_aging: add simple delete tests When records are added and deleted and added again, Windows gets all kinds of ideas about what should happen, and many of our tests explore that. Here we focus the simplest case with a variety of timestamp combinations. 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 237bf81d26f..43805ed1086 100644 --- a/python/samba/tests/dns_aging.py +++ b/python/samba/tests/dns_aging.py @@ -2492,5 +2492,136 @@ class TestDNSAging(DNSTest): def test_dns_delete_times_static_no_aging(self): self._test_dns_delete_times(1e10, False) + def _test_dns_delete_simple(self, a_days, b_days, aging=True, touch=False): + # Here we show that with aging enabled, the timestamp of + # sibling records is *not* modified when a record is deleted. + # + # 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_aging(aging) + now = dsdb_dns.unix_to_dns_timestamp(int(time.time())) + a_days_ago = max(now - a_days * 24, 0) + b_days_ago = max(now - b_days * 24, 0) + + if touch: + self.dns_update_record(name, A) + self.dns_update_record(name, B) + + self.ldap_update_record(name, A, dwTimeStamp=a_days_ago) + self.ldap_update_record(name, B, dwTimeStamp=b_days_ago) + + atime = self.get_unique_txt_record(name, A).dwTimeStamp + + self.dns_delete(name, B) + if not aging and touch: + # this resets the timestamp even if it is a static record. + self.assert_soon_after(self.get_unique_txt_record(name, A), now) + else: + self.assert_timestamps_equal(self.get_unique_txt_record(name, A), atime) + + def test_dns_delete_simple_2_3_days_aging(self): + self._test_dns_delete_simple(2, 3, True) + + def test_dns_delete_simple_2_3_days_no_aging(self): + self._test_dns_delete_simple(2, 3, False) + + def test_dns_delete_simple_2_13_days_aging(self): + self._test_dns_delete_simple(2, 13, True) + + def test_dns_delete_simple_2_13_days_no_aging(self): + self._test_dns_delete_simple(2, 13, False) + + def test_dns_delete_simple_12_13_days_aging(self): + self._test_dns_delete_simple(12, 13, True) + + def test_dns_delete_simple_12_13_days_no_aging(self): + self._test_dns_delete_simple(12, 13, False) + + def test_dns_delete_simple_112_113_days_aging(self): + self._test_dns_delete_simple(112, 113, True) + + def test_dns_delete_simple_112_113_days_no_aging(self): + self._test_dns_delete_simple(112, 113, False) + + def test_dns_delete_simple_112_113_days_aging(self): + self._test_dns_delete_simple(112, 113, True) + + def test_dns_delete_simple_112_113_days_no_aging(self): + self._test_dns_delete_simple(112, 113, False) + + def test_dns_delete_simple_0_113_days_aging(self): + # 1e9 hours ago evaluates to 0, i.e static + self._test_dns_delete_simple(1e9, 113, True) + + def test_dns_delete_simple_0_113_days_no_aging(self): + self._test_dns_delete_simple(1e9, 113, False) + + def test_dns_delete_simple_0_0_days_aging(self): + self._test_dns_delete_simple(1e9, 1e9, True) + + def test_dns_delete_simple_0_0_days_no_aging(self): + self._test_dns_delete_simple(1e9, 1e9, False) + + def test_dns_delete_simple_10_0_days_aging(self): + self._test_dns_delete_simple(10, 1e9, True) + + def test_dns_delete_simple_10_0_days_no_aging(self): + self._test_dns_delete_simple(10, 1e9, False) + + def test_dns_delete_simple_2_3_days_aging_touch(self): + self._test_dns_delete_simple(2, 3, True, True) + + def test_dns_delete_simple_2_3_days_no_aging_touch(self): + self._test_dns_delete_simple(2, 3, False, True) + + def test_dns_delete_simple_2_13_days_aging_touch(self): + self._test_dns_delete_simple(2, 13, True, True) + + def test_dns_delete_simple_2_13_days_no_aging_touch(self): + self._test_dns_delete_simple(2, 13, False, True) + + def test_dns_delete_simple_12_13_days_aging_touch(self): + self._test_dns_delete_simple(12, 13, True, True) + + def test_dns_delete_simple_12_13_days_no_aging_touch(self): + self._test_dns_delete_simple(12, 13, False, True) + + def test_dns_delete_simple_112_113_days_aging_touch(self): + self._test_dns_delete_simple(112, 113, True, True) + + def test_dns_delete_simple_112_113_days_no_aging_touch(self): + self._test_dns_delete_simple(112, 113, False, True) + + def test_dns_delete_simple_112_113_days_aging_touch(self): + self._test_dns_delete_simple(112, 113, True, True) + + def test_dns_delete_simple_112_113_days_no_aging_touch(self): + self._test_dns_delete_simple(112, 113, False, True) + + def test_dns_delete_simple_0_113_days_aging_touch(self): + # 1e9 hours ago evaluates to 0, i.e static + self._test_dns_delete_simple(1e9, 113, True, True) + + def test_dns_delete_simple_0_113_days_no_aging_touch(self): + self._test_dns_delete_simple(1e9, 113, False, True) + + def test_dns_delete_simple_0_0_days_aging_touch(self): + self._test_dns_delete_simple(1e9, 1e9, True, True) + + def test_dns_delete_simple_0_0_days_no_aging_touch(self): + self._test_dns_delete_simple(1e9, 1e9, False, True) + + def test_dns_delete_simple_10_0_days_aging_touch(self): + self._test_dns_delete_simple(10, 1e9, True, True) + + def test_dns_delete_simple_10_0_days_no_aging_touch(self): + self._test_dns_delete_simple(10, 1e9, False, True) + + TestProgram(module=__name__, opts=subunitopts) diff --git a/selftest/knownfail.d/dns-aging b/selftest/knownfail.d/dns-aging index f40e457d4d6..bb3ea1e3858 100644 --- a/selftest/knownfail.d/dns-aging +++ b/selftest/knownfail.d/dns-aging @@ -12,6 +12,19 @@ samba.tests.dns_aging.+test_add_update_timestamp samba.tests.dns_aging.+test_add_update_ttl samba.tests.dns_aging.+test_add_update_ttl_serial samba.tests.dns_aging.+test_basic_scavenging +samba.tests.dns_aging.+test_dns_delete_simple_0_0_days_no_aging_touch +samba.tests.dns_aging.+test_dns_delete_simple_0_113_days_no_aging_touch +samba.tests.dns_aging.+test_dns_delete_simple_10_0_days_aging +samba.tests.dns_aging.+test_dns_delete_simple_10_0_days_aging_touch +samba.tests.dns_aging.+test_dns_delete_simple_10_0_days_no_aging_touch +samba.tests.dns_aging.+test_dns_delete_simple_112_113_days_aging +samba.tests.dns_aging.+test_dns_delete_simple_112_113_days_aging_touch +samba.tests.dns_aging.+test_dns_delete_simple_112_113_days_no_aging_touch +samba.tests.dns_aging.+test_dns_delete_simple_12_13_days_aging +samba.tests.dns_aging.+test_dns_delete_simple_12_13_days_aging_touch +samba.tests.dns_aging.+test_dns_delete_simple_12_13_days_no_aging_touch +samba.tests.dns_aging.+test_dns_delete_simple_2_13_days_no_aging_touch +samba.tests.dns_aging.+test_dns_delete_simple_2_3_days_no_aging_touch samba.tests.dns_aging.+test_dynamic_record_static_update samba.tests.dns_aging.+test_multi_records_delete_aging samba.tests.dns_aging.+test_rpc_update_timestamps