| 123456789101112131415161718192021222324252627282930313233343536373839 |
- """
- Copyright (c) Contributors to the Open 3D Engine Project.
- For complete copyright and license terms please see the LICENSE at the root of this distribution.
- SPDX-License-Identifier: Apache-2.0 OR MIT
- """
- import subprocess
- import pytest
- import ly_test_tools.environment.process_utils as process_utils
- import ly_test_tools.environment.waiter as waiter
- from ly_test_tools import LINUX
- if LINUX:
- pytestmark = pytest.mark.SUITE_smoke
- else:
- pytestmark = pytest.mark.skipif(not LINUX, reason="Only runs on Linux")
- class TestProcessUtils(object):
- def test_KillLinuxProcess_ProcessStarted_KilledSuccessfully(self):
- # Construct a simple timeout command
- linux_executable = 'timeout'
- command = [linux_executable, '5s', 'echo']
- # Verification function for the waiter to call
- def process_killed():
- return not process_utils.process_exists(linux_executable, ignore_extensions=True)
- # Create a new process with no output in a new session
- with subprocess.Popen(command, stdout=subprocess.DEVNULL, start_new_session=True):
- # Ensure that the process was started
- assert process_utils.process_exists(linux_executable, ignore_extensions=True), \
- f"Process '{linux_executable}' was expected to exist, but could not be found."
- # Kill the process using the process_utils module
- process_utils.kill_processes_named(linux_executable, ignore_extensions=True)
- # Verify that the process was killed
- waiter.wait_for(process_killed, timeout=2) # Raises exception if the process is alive.
|