#9752 ipatests: use "sos report" instead of "sosreport" command
Closed: fixed 4 months ago by rcritten. Opened 4 months ago by frenaud.

The nightly test test_ipahealthcheck.py::TestIpaHealthCheck::test_sosreport_includes_healthcheck is using the sosreport command but this command has been deprecated and should be replaced with sos report.

The consequence is that the test is failing on rawhide (f43) with sos-4.9.0-2.fc43.noarch. Example of run in https://$ARTIFACTS_SERVER/idm-ci/freeipa_upstream_nightly/Nightly-rawhide/master/2025-02-22_19-30/rawhide/test_ipahealthcheck/4/report.html?sort=result:

self = <ipatests.test_integration.test_ipahealthcheck.TestIpaHealthCheck object at 0x7f7156cf3ca0>
create_logfile = None

    def test_sosreport_includes_healthcheck(self, create_logfile):
        """
        This testcase checks that sosreport command
        when run on IPA system with healthcheck installed
        collects healthcheck.log file
        """
        caseid = "123456"
        msg = "[plugin:ipa] collecting path '{}'".format(HEALTHCHECK_LOG)
>       cmd = self.master.run_command(
            [
                "sosreport",
                "-o",
                "ipa",
                "--case-id",
                caseid,
                "--batch",
                "-vv",
                "--build",
            ]
        )

caseid     = '123456'
create_logfile = None
msg        = "[plugin:ipa] collecting path '/var/log/ipa/healthcheck/healthcheck.log'"
self       = <ipatests.test_integration.test_ipahealthcheck.TestIpaHealthCheck object at 0x7f7156cf3ca0>

test_integration/test_ipahealthcheck.py:1406: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <ipatests.pytest_ipa.integration.host.Host master.ufreeipa.test (master)>
argv = ['sosreport', '-o', 'ipa', '--case-id', '123456', '--batch', ...]
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 '['sosreport', '-o', 'ipa', '--case-id', '123456', '--batch', '-vv', '--build']' returned non-zero exit status 127.

__class__  = <class 'ipatests.pytest_ipa.integration.host.Host'>
argv       = ['sosreport', '-o', 'ipa', '--case-id', '123456', '--batch', ...]
bg         = False
cwd        = None
encoding   = 'utf-8'
log_stdout = True
ok_returncode = 0
raiseonerr = True
result     = <pytest_multihost.transport.SSHCommand object at 0x7f7156bddc50>
result_ok  = False
self       = <ipatests.pytest_ipa.integration.host.Host master.ufreeipa.test (master)>
set_env    = True
stdin_text = None

pytest_ipa/integration/host.py:202: CalledProcessError

[...]
------------------------------ Captured log call -------------------------------
INFO     ipatests.pytest_ipa.integration.host.Host.master.IPAOpenSSHTransport:transport.py:391 RUN ['sosreport', '-o', 'ipa', '--case-id', '123456', '--batch', '-vv', '--build']
DEBUG    ipatests.pytest_ipa.integration.host.Host.master.cmd450:transport.py:513 RUN ['sosreport', '-o', 'ipa', '--case-id', '123456', '--batch', '-vv', '--build']
DEBUG    ipatests.pytest_ipa.integration.host.Host.master.cmd450:transport.py:557 bash: line 4: sosreport: command not found
DEBUG    ipatests.pytest_ipa.integration.host.Host.master.cmd450:transport.py:217 Exit code: 127
ERROR    ipatests.pytest_ipa.integration.host.Host.master.cmd450:host.py:201 stderr: bash: line 4: sosreport: command not found

On fedora 41 with sos-4.8.2-1.fc41.noarch the same test shows:

INFO     ipatests.pytest_ipa.integration.host.Host.master.IPAOpenSSHTransport:transport.py:391 RUN ['sosreport', '-o', 'ipa', '--case-id', '123456', '--batch', '-vv', '--build']
DEBUG    ipatests.pytest_ipa.integration.host.Host.master.cmd452:transport.py:513 RUN ['sosreport', '-o', 'ipa', '--case-id', '123456', '--batch', '-vv', '--build']
DEBUG    ipatests.pytest_ipa.integration.host.Host.master.cmd452:transport.py:557 WARNING: the 'sosreport' command has been deprecated in favor of the new 'sos' command, E.G. 'sos report', and will be removed in the upcoming sos-4.9 release.
DEBUG    ipatests.pytest_ipa.integration.host.Host.master.cmd452:transport.py:557 Redirecting to 'sos report -o ipa --case-id 123456 --batch -vv --build'

The release notes for sos 4.9 mention the removal of the sosreport command redirector:

The legacy redirectors for sosreport and sos-collector have been dropped as of this release. The only executable going forward is sos.

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

4 months ago

master:

  • d2b5a9b use "sos report" instead of "sosreport" command

ipa-4-12:

  • 1c789f5 ipatests: use "sos report" instead of "sosreport" command

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

4 months ago

Log in to comment on this ticket.

Metadata