Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-22372

Pagure #9504: Gating-DL1 test failure in test_integration/test_dns_locations.py::TestDNSLocations::()::test_ipa_ca_records

    • Icon: Bug Bug
    • Resolution: Done-Errata
    • Icon: Normal Normal
    • rhel-9.4
    • rhel-9.4
    • ipa
    • ipa-4.11.0-6.el9
    • ZStream
    • sst_idm_ipa
    • ssg_idm
    • 24
    • 26
    • QE ack, Dev ack
    • False
    • Hide

      None

      Show
      None
    • No
    • 2024-Q1-Bravo-S3, 2024-Q1-Bravo-S4
    • Approved Blocker
    • Unspecified Release Note Type - Unknown

      Cloned from: https://pagure.io/freeipa/issue/9504
      
      ### 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.
      
      

            frenaud@redhat.com Florence Renaud
            frenaud@redhat.com Florence Renaud
            Florence Renaud Florence Renaud
            Anuja More Anuja More
            Votes:
            0 Vote for this issue
            Watchers:
            8 Start watching this issue

              Created:
              Updated:
              Resolved: