#8792 Random nightly test failure in test_replica_promotion.py::TestRenewalMaster::test_automatic_renewal_master_transfer_ondelete
Closed: fixed by frenaud. Opened by frenaud.

The nightly test test_replica_promotion.py::TestRenewalMaster::test_automatic_renewal_master_transfer_ondelete is randomly failing, see for isntance in PR #822 with the following report:

self = <ipatests.test_integration.test_replica_promotion.TestRenewalMaster object at 0x7f9c1265c0d0>
    def test_automatic_renewal_master_transfer_ondelete(self):
        # Test that after replica uninstallation, master overtakes the cert
        # renewal master role from replica (which was previously set there)
        tasks.uninstall_master(self.replicas[0])
>       result = self.master.run_command(['ipa', 'config-show']).stdout_text
test_integration/test_replica_promotion.py:406: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <ipatests.pytest_ipa.integration.host.Host master.ipa.test (master)>
argv = ['ipa', 'config-show'], set_env = True, stdin_text = None
log_stdout = True, raiseonerr = True, cwd = None, bg = False, encoding = 'utf-8'
ok_returncode = 0
    def run_command(self, argv, set_env=True, stdin_text=None,
                    log_stdout=True, raiseonerr=True,
                    cwd=None, bg=False, encoding='utf-8', ok_returncode=0):
        """Wrapper around run_command to log stderr on raiseonerr=True
        :param ok_returncode: return code considered to be correct,
                              you can pass an integer or sequence of integers
        """
        result = super().run_command(
            argv, set_env=set_env, stdin_text=stdin_text,
            log_stdout=log_stdout, raiseonerr=False, cwd=cwd, bg=bg,
            encoding=encoding
        )
        # in FIPS mode SSH may print noise to stderr, remove the string
        # "FIPS mode initialized" + optional newline.
        result.stderr_bytes = FIPS_NOISE_RE.sub(b'', result.stderr_bytes)
        try:
            result_ok = result.returncode in ok_returncode
        except TypeError:
            result_ok = result.returncode == ok_returncode
        if not result_ok and raiseonerr:
            result.log.error('stderr: %s', result.stderr_text)
>           raise subprocess.CalledProcessError(
                result.returncode, argv,
                result.stdout_text, result.stderr_text
            )
E           subprocess.CalledProcessError: Command '['ipa', 'config-show']' returned non-zero exit status 1.
pytest_ipa/integration/host.py:202: CalledProcessError>   request.addfinalizer(lambda: cls().uninstall(self))

The ipa config-show call is failing with ipa: ERROR: invalid 'PKINIT enabled server': all masters must have IPA master role enabled.

The test is calling ipa-server-install --uninstall on the replica but doesn't perform first ipa server-del. The test needs to be fixed.


Metadata Update from @frenaud:
- Issue assigned to frenaud

Metadata Update from @frenaud:
- Custom field on_review adjusted to https://github.com/freeipa/freeipa/pull/5698

Metadata Update from @frenaud:
- Issue tagged with: tests

master:

  • 56639861a96754ad9f0ddec6d240cf62d750cf41 ipatests: call server-del before replica uninstall

ipa-4-9:

  • c7271ea2ba40a4d0ff0d4d0b9bac9a237b747ef0 ipatests: call server-del before replica uninstall

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

Metadata