def test_on_job_succeeded(self, mock_cluster_api): watcher = JobWatcher(config=Mock()) watcher.lando_client = Mock() watcher.on_job_succeeded('31', JobStepTypes.STAGE_DATA) watcher.lando_client.job_step_store_output_complete.assert_not_called() payload = watcher.lando_client.job_step_complete.call_args[0][0] self.assertEqual(payload.job_id, '31') self.assertEqual(payload.success_command, JobCommands.STAGE_JOB_COMPLETE) watcher.lando_client.job_step_complete.reset_mock() watcher.on_job_succeeded('31', JobStepTypes.RUN_WORKFLOW) watcher.lando_client.job_step_store_output_complete.assert_not_called() payload = watcher.lando_client.job_step_complete.call_args[0][0] self.assertEqual(payload.job_id, '31') self.assertEqual(payload.success_command, JobCommands.RUN_JOB_COMPLETE) watcher.lando_client.job_step_complete.reset_mock() watcher.on_job_succeeded('31', JobStepTypes.ORGANIZE_OUTPUT) watcher.lando_client.job_step_store_output_complete.assert_not_called() payload = watcher.lando_client.job_step_complete.call_args[0][0] self.assertEqual(payload.job_id, '31') self.assertEqual(payload.success_command, JobCommands.ORGANIZE_OUTPUT_COMPLETE) watcher.lando_client.job_step_complete.reset_mock() watcher.on_job_succeeded('31', JobStepTypes.SAVE_OUTPUT) watcher.lando_client.job_step_complete.assert_not_called() payload = watcher.lando_client.job_step_store_output_complete.call_args[0][0] self.assertEqual(payload.job_id, '31') self.assertEqual(payload.success_command, JobCommands.STORE_JOB_OUTPUT_COMPLETE)
def test_on_job_succeeded_record_output(self, mock_cluster_api): watcher = JobWatcher(config=Mock()) watcher.lando_client = Mock() watcher.on_job_succeeded('31', JobStepTypes.RECORD_OUTPUT_PROJECT) watcher.lando_client.job_step_store_output_complete.assert_not_called() payload = watcher.lando_client.job_step_complete.call_args[0][0] self.assertEqual(payload.job_id, '31') self.assertEqual(payload.success_command, JobCommands.RECORD_OUTPUT_PROJECT_COMPLETE)
def test_on_job_failed_reading_logs_failed(self, mock_logging, mock_cluster_api): mock_cluster_api.return_value.read_job_logs.side_effect = ApiException(status=404, reason='Logs not found') watcher = JobWatcher(config=Mock()) watcher.get_most_recent_pod_for_job = Mock() watcher.get_most_recent_pod_for_job.return_value = Mock() watcher.lando_client = Mock() watcher.on_job_failed('myjob', '31', JobStepTypes.STAGE_DATA) payload = watcher.lando_client.job_step_error.call_args[0][0] message = watcher.lando_client.job_step_error.call_args[0][1] self.assertEqual(payload.job_id, '31') self.assertEqual(payload.error_command, JobCommands.STAGE_JOB_ERROR) self.assertEqual(message, 'Unable to read logs.') mock_logging.error.assert_called_with('Unable to read logs (404)\nReason: Logs not found\n')
def test_on_job_failed(self, mock_cluster_api): mock_cluster_api.return_value.read_job_logs.return_value = "Error details" watcher = JobWatcher(config=Mock()) watcher.lando_client = Mock() watcher.on_job_failed('myjob', '31', JobStepTypes.STAGE_DATA) mock_cluster_api.return_value.read_job_logs.assert_called_with('myjob') payload = watcher.lando_client.job_step_error.call_args[0][0] message = watcher.lando_client.job_step_error.call_args[0][1] self.assertEqual(payload.job_id, '31') self.assertEqual(payload.error_command, JobCommands.STAGE_JOB_ERROR) self.assertEqual(message, 'Error details') watcher.lando_client.job_step_complete.reset_mock() watcher.on_job_failed('myjob', '31', JobStepTypes.RUN_WORKFLOW) payload = watcher.lando_client.job_step_error.call_args[0][0] message = watcher.lando_client.job_step_error.call_args[0][1] self.assertEqual(payload.job_id, '31') self.assertEqual(payload.error_command, JobCommands.RUN_JOB_ERROR) self.assertEqual(message, 'Error details') watcher.lando_client.job_step_complete.reset_mock() watcher.on_job_failed('myjob', '31', JobStepTypes.ORGANIZE_OUTPUT) payload = watcher.lando_client.job_step_error.call_args[0][0] message = watcher.lando_client.job_step_error.call_args[0][1] self.assertEqual(payload.job_id, '31') self.assertEqual(payload.error_command, JobCommands.ORGANIZE_OUTPUT_ERROR) self.assertEqual(message, 'Error details') watcher.lando_client.job_step_complete.reset_mock() watcher.on_job_failed('myjob', '31', JobStepTypes.SAVE_OUTPUT) payload = watcher.lando_client.job_step_error.call_args[0][0] message = watcher.lando_client.job_step_error.call_args[0][1] self.assertEqual(payload.job_id, '31') self.assertEqual(payload.error_command, JobCommands.STORE_JOB_OUTPUT_ERROR) self.assertEqual(message, 'Error details')