From d63062be8235bac1eaf552392dfeb83fa1e17d2b Mon Sep 17 00:00:00 2001 From: David Murphy < dmurphy@saltstack.com> Date: Thu, 16 May 2024 16:51:24 -0600 Subject: [PATCH] Fix psutil for MacOS platform check --- .../pkg/downgrade/test_salt_downgrade.py | 20 ++++++------- .../pytests/pkg/upgrade/test_salt_upgrade.py | 29 +++++++++++-------- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/tests/pytests/pkg/downgrade/test_salt_downgrade.py b/tests/pytests/pkg/downgrade/test_salt_downgrade.py index dcae34603b8..bf051d27028 100644 --- a/tests/pytests/pkg/downgrade/test_salt_downgrade.py +++ b/tests/pytests/pkg/downgrade/test_salt_downgrade.py @@ -42,15 +42,16 @@ def test_salt_downgrade_minion(salt_call_cli, install_salt): old_pid = [] - # psutil process name only returning first part of the command '/opt/saltstack/' # need to check all of command line for salt-minion - # ['/opt/saltstack/salt/bin/python3.10 /usr/bin/salt-minion MultiMinionProcessManager MinionProcessManager'] + # Linux: psutil process name only returning first part of the command '/opt/saltstack/' + # Linux: ['/opt/saltstack/salt/bin/python3.10 /usr/bin/salt-minion MultiMinionProcessManager MinionProcessManager'] + # MacOS: psutil process name only returning last part of the command '/opt/salt/bin/python3.10', that is 'python3.10' + # MacOS: ['/opt/salt/bin/python3.10 /opt/salt/salt-minion', ''] # and psutil is only returning the salt-minion once for proc in psutil.process_iter(): - if salt_name in proc.name(): - cmdl_strg = " ".join(str(element) for element in proc.cmdline()) - if process_name in cmdl_strg: - old_pid.append(proc.pid) + cmdl_strg = " ".join(str(element) for element in proc.cmdline()) + if process_name in cmdl_strg: + old_pid.append(proc.pid) assert old_pid @@ -69,10 +70,9 @@ def test_salt_downgrade_minion(salt_call_cli, install_salt): # with the PID from before the upgrade new_pid = [] for proc in psutil.process_iter(): - if salt_name in proc.name(): - cmdl_strg = " ".join(str(element) for element in proc.cmdline()) - if process_name in cmdl_strg: - new_pid.append(proc.pid) + cmdl_strg = " ".join(str(element) for element in proc.cmdline()) + if process_name in cmdl_strg: + new_pid.append(proc.pid) assert new_pid assert new_pid != old_pid diff --git a/tests/pytests/pkg/upgrade/test_salt_upgrade.py b/tests/pytests/pkg/upgrade/test_salt_upgrade.py index 5f21ed15685..24e6f1612ff 100644 --- a/tests/pytests/pkg/upgrade/test_salt_upgrade.py +++ b/tests/pytests/pkg/upgrade/test_salt_upgrade.py @@ -13,26 +13,31 @@ def _get_running_salt_minion_pid( process_name, ): # pylint: disable=logging-fstring-interpolation - # psutil process name only returning first part of the command '/opt/saltstack/' # need to check all of command line for salt-minion - # ['/opt/saltstack/salt/bin/python3.10 /usr/bin/salt-minion MultiMinionProcessManager MinionProcessManager'] + # + # Linux: psutil process name only returning first part of the command '/opt/saltstack/' + # Linux: ['/opt/saltstack/salt/bin/python3.10 /usr/bin/salt-minion MultiMinionProcessManager MinionProcessManager'] + # + # MacOS: psutil process name only returning last part of the command '/opt/salt/bin/python3.10', that is 'python3.10' + # MacOS: ['/opt/salt/bin/python3.10 /opt/salt/salt-minion', ''] + # # and psutil is only returning the salt-minion once + pids = [] for proc in psutil.process_iter(): log.warning(f"DGM _get_running_salt_minion_pid, proc.name '{proc.name()}'") print( f"DGM _get_running_salt_minion_pid, proc.name '{proc.name()}', and proc.cmdline '{proc.cmdline()}'" ) - if "salt" in proc.name(): - cmdl_strg = " ".join(str(element) for element in proc.cmdline()) - log.warning( - f"DGM _get_running_salt_minion_pid, proc.name exists, process_name '{process_name}', cmdl_strg '{cmdl_strg}'" - ) - print( - f"DGM _get_running_salt_minion_pid, proc.name exists, process_name '{process_name}', cmdl_strg '{cmdl_strg}'" - ) - if process_name in cmdl_strg: - pids.append(proc.pid) + cmdl_strg = " ".join(str(element) for element in proc.cmdline()) + log.warning( + f"DGM _get_running_salt_minion_pid, proc.name exists, process_name '{process_name}', cmdl_strg '{cmdl_strg}'" + ) + print( + f"DGM _get_running_salt_minion_pid, proc.name exists, process_name '{process_name}', cmdl_strg '{cmdl_strg}'" + ) + if process_name in cmdl_strg: + pids.append(proc.pid) log.warning( f"DGM _get_running_salt_minion_pid, returning for process_name '{process_name}', pids '{pids}'"