Merge pull request #4671 from aws-lumberyard-dev/ap_fix
Stabilize asset processor immediately exiting
This commit is contained in:
@@ -488,6 +488,9 @@ class AssetProcessor(object):
|
||||
logger.info(f"Launching AP with command: {command}")
|
||||
try:
|
||||
self._ap_proc = subprocess.Popen(command, cwd=ap_exe_path, env=process_utils.get_display_env())
|
||||
time.sleep(1)
|
||||
if self._ap_proc.poll() is not None:
|
||||
raise AssetProcessorError(f"AssetProcessor immediately quit with errorcode {self._ap_proc.returncode}")
|
||||
|
||||
if accept_input:
|
||||
self.connect_control()
|
||||
@@ -506,10 +509,11 @@ class AssetProcessor(object):
|
||||
logger.exception("Exception while starting Asset Processor", be)
|
||||
# clean up to avoid leaking open AP process to future tests
|
||||
try:
|
||||
self._ap_proc.kill()
|
||||
if self._ap_proc:
|
||||
self._ap_proc.kill()
|
||||
except Exception as ex:
|
||||
logger.exception("Ignoring exception while trying to terminate Asset Processor", ex)
|
||||
raise # raise whatever prompted us to clean up
|
||||
raise be # raise whatever prompted us to clean up
|
||||
|
||||
def connect_listen(self, timeout=DEFAULT_TIMEOUT_SECONDS):
|
||||
# Wait for the AP we launched to be ready to accept a connection
|
||||
|
||||
@@ -45,6 +45,7 @@ class TestAssetProcessor(object):
|
||||
@mock.patch('subprocess.Popen')
|
||||
@mock.patch('ly_test_tools.o3de.asset_processor.AssetProcessor.connect_socket')
|
||||
@mock.patch('ly_test_tools.o3de.asset_processor.ASSET_PROCESSOR_PLATFORM_MAP', {'foo': 'bar'})
|
||||
@mock.patch('time.sleep', mock.MagicMock())
|
||||
def test_Start_NoneRunning_ProcStarted(self, mock_connect, mock_popen, mock_workspace):
|
||||
mock_ap_path = 'mock_ap_path'
|
||||
mock_workspace.asset_processor_platform = 'foo'
|
||||
@@ -54,6 +55,9 @@ class TestAssetProcessor(object):
|
||||
under_test = ly_test_tools.o3de.asset_processor.AssetProcessor(mock_workspace)
|
||||
under_test.enable_asset_processor_platform = mock.MagicMock()
|
||||
under_test.wait_for_idle = mock.MagicMock()
|
||||
mock_proc_object = mock.MagicMock()
|
||||
mock_proc_object.poll.return_value = None
|
||||
mock_popen.return_value = mock_proc_object
|
||||
|
||||
under_test.start(connect_to_ap=True)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user