#9504 Gating-DL1 test failure in test_integration/test_dns_locations.py::TestDNSLocations::()::test_ipa_ca_records
Closed: fixed 3 months ago by frenaud. Opened 3 months ago by mmatsuya.

Issue

The following two tests randomly failed. The root cause is that it didn't wait enough until the dns entry update on replica after nsupdate command.

Currently it depends on the timeout (at least 30 secs) in resolve_records_from_server() via _test_A_rec_against_server() or _test_SRV_rec_against_server(). But, sometime it can time out before the dns entry is updated on replica.

test_integration/test_dns_locations.py::TestDNSLocations::()::test_ipa_ca_records

self = <ipatests.test_integration.test_dns_locations.TestDNSLocations object at 0x7f70d8d75390>

    def test_ipa_ca_records(self):
        """ Test ipa-ca dns records with firstly removing the records and then
        using the nsupdate generated by dns-update-system-records"""
        self.delete_update_system_records(rnames=IPA_CA_A_REC)

        expected_servers = (self.master.ip, self.replicas[1].ip)

        for ip in (self.master.ip, self.replicas[0].ip, self.replicas[1].ip):
>           self._test_A_rec_against_server(ip, self.domain, expected_servers)

expected_servers = ('10.0.197.105', '10.0.197.219')
ip         = '10.0.197.42'
self       = <ipatests.test_integration.test_dns_locations.TestDNSLocations object at 0x7f70d8d75390>

test_integration/test_dns_locations.py:538: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
test_integration/test_dns_locations.py:182: in _test_A_rec_against_server
    name_abs, 'A', server_ip)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

rname = <DNS name ipa-ca.testrelm.test.>, rtype = 'A'
nameserver = '10.0.197.42'

    def resolve_records_from_server(rname, rtype, nameserver):
        error = None
        res = DNSResolver()
        res.nameservers = [nameserver]
        res.lifetime = 30
        logger.info("Query: %s %s, nameserver %s", rname, rtype, nameserver)
        # lets try to query 3x
        for _i in range(3):
            try:
                ans = res.resolve(rname, rtype)
                logger.info("Answer: %s", ans.rrset)
                return ans.rrset
            except (dns.resolver.NXDOMAIN, dns.resolver.Timeout) as e:
                error = e
                time.sleep(10)

        pytest.fail("Query: {} {}, nameserver {} failed due to {}".format(
>           rname, rtype, nameserver, error))
E       Failed: Query: ipa-ca.testrelm.test. A, nameserver 10.0.197.42 failed due to The DNS query name does not exist: ipa-ca.testrelm.test.

_i         = 2
error      = NXDOMAIN('The DNS query name does not exist: ipa-ca.testrelm.test.',)
nameserver = '10.0.197.42'
res        = <ipapython.dnsutil.DNSResolver object at 0x7f70d732f588>
rname      = <DNS name ipa-ca.testrelm.test.>
rtype      = 'A'

test_integration/test_dns_locations.py::TestDNSLocations::()::test_adtrust_system_records

self = <ipatests.test_integration.test_dns_locations.TestDNSLocations object at 0x7f70d73136a0>

    def test_adtrust_system_records(self):
        """ Test ADTrust dns records with firstly installing a trust then
        removing the records and using the nsupdate generated by
        dns-update-system-records."""
        self.master.run_command(['ipa-adtrust-install', '-U',
                                 '--enable-compat', '--netbios-name', 'IPA',
                                 '-a', self.master.config.admin_password,
                                 '--add-sids'])
        # lets re-kinit after adtrust-install and restart named
        tasks.kinit_admin(self.master)
        tasks.restart_named(self.master)
        time.sleep(5)
        self.delete_update_system_records(rnames=(r[0] for r in
                                          IPA_DEFAULT_ADTRUST_SRV_REC))

        expected_servers = (
            (self.PRIO_HIGH, self.WEIGHT, DNSName(self.master.hostname)),
        )

        for ip in (self.master.ip, self.replicas[0].ip, self.replicas[1].ip):
            self._test_SRV_rec_against_server(
                    ip, self.domain, expected_servers,
>                   rec_list=IPA_DEFAULT_ADTRUST_SRV_REC)

expected_servers = ((0, 100, <DNS name master.testrelm.test>),)
ip         = '10.0.197.42'
self       = <ipatests.test_integration.test_dns_locations.TestDNSLocations object at 0x7f70d73136a0>

test_integration/test_dns_locations.py:563: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
test_integration/test_dns_locations.py:196: in _test_SRV_rec_against_server
    name_abs, 'SRV', server_ip)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

rname = <DNS name _ldap._tcp.Default-First-Site-Name._sites.dc._msdcs.testrelm.test.>
rtype = 'SRV', nameserver = '10.0.197.42'

    def resolve_records_from_server(rname, rtype, nameserver):
        error = None
        res = DNSResolver()
        res.nameservers = [nameserver]
        res.lifetime = 30
        logger.info("Query: %s %s, nameserver %s", rname, rtype, nameserver)
        # lets try to query 3x
        for _i in range(3):
            try:
                ans = res.resolve(rname, rtype)
                logger.info("Answer: %s", ans.rrset)
                return ans.rrset
            except (dns.resolver.NXDOMAIN, dns.resolver.Timeout) as e:
                error = e
                time.sleep(10)

        pytest.fail("Query: {} {}, nameserver {} failed due to {}".format(
>           rname, rtype, nameserver, error))
E       Failed: Query: _ldap._tcp.Default-First-Site-Name._sites.dc._msdcs.testrelm.test. SRV, nameserver 10.0.197.42 failed due to The DNS query name does not exist: _ldap._tcp.Default-First-Site-Name._sites.dc._msdcs.testrelm.test.

_i         = 2
error      = NXDOMAIN('The DNS query name does not exist: _ldap._tcp.Default-First-Site-Name._sites.dc._msdcs.testrelm.test.',)
nameserver = '10.0.197.42'
res        = <ipapython.dnsutil.DNSResolver object at 0x7f70d7347b38>
rname      = <DNS name _ldap._tcp.Default-First-Site-Name._sites.dc._msdcs.testrelm.test.>
rtype      = 'SRV'

This is related to https://issues.redhat.com/browse/FREEIPA-10544.


master:

  • c740cb8 ipatests: wait for replica update in test_dns_locations

Metadata Update from @frenaud:
- Custom field on_review adjusted to https://github.com/freeipa/freeipa/pull/7130
- Custom field rhbz adjusted to https://issues.redhat.com/browse/RHEL-22372, https://issues.redhat.com/browse/RHEL-22373
- Issue assigned to mmatsuya
- Issue tagged with: test-failure, tests

3 months ago

ipa-4-11:

  • 3b2f3d4 ipatests: wait for replica update in test_dns_locations

ipa-4-10:

  • 257b2b4 ipatests: wait for replica update in test_dns_locations

ipa-4-9:

  • 905a55a ipatests: wait for replica update in test_dns_locations

Metadata Update from @frenaud:
- Issue close_status updated to: fixed
- Issue status updated to: Closed (was: Open)

3 months ago

Login to comment on this ticket.

Metadata