@@ -185,6 +185,10 @@ def test_s3_input_all_arguments():
185185 {'TrainingStartTime' : datetime .datetime (2018 , 2 , 17 , 7 , 15 , 0 , 103000 )})
186186COMPLETED_DESCRIBE_JOB_RESULT .update (
187187 {'TrainingEndTime' : datetime .datetime (2018 , 2 , 17 , 7 , 19 , 34 , 953000 )})
188+
189+ STOPPED_DESCRIBE_JOB_RESULT = dict (COMPLETED_DESCRIBE_JOB_RESULT )
190+ STOPPED_DESCRIBE_JOB_RESULT .update ({'TrainingJobStatus' : 'Stopped' })
191+
188192IN_PROGRESS_DESCRIBE_JOB_RESULT = dict (DEFAULT_EXPECTED_TRAIN_JOB_ARGS )
189193IN_PROGRESS_DESCRIBE_JOB_RESULT .update ({'TrainingJobStatus' : 'InProgress' })
190194
@@ -270,6 +274,16 @@ def sagemaker_session_complete():
270274 return ims
271275
272276
277+ @pytest .fixture ()
278+ def sagemaker_session_stopped ():
279+ boto_mock = Mock (name = 'boto_session' )
280+ boto_mock .client ('logs' ).describe_log_streams .return_value = DEFAULT_LOG_STREAMS
281+ boto_mock .client ('logs' ).get_log_events .side_effect = DEFAULT_LOG_EVENTS
282+ ims = sagemaker .Session (boto_session = boto_mock , sagemaker_client = Mock ())
283+ ims .sagemaker_client .describe_training_job .return_value = STOPPED_DESCRIBE_JOB_RESULT
284+ return ims
285+
286+
273287@pytest .fixture ()
274288def sagemaker_session_ready_lifecycle ():
275289 boto_mock = Mock (name = 'boto_session' )
@@ -302,6 +316,14 @@ def test_logs_for_job_no_wait(cw, sagemaker_session_complete):
302316 cw ().assert_called_with (0 , 'hi there #1' )
303317
304318
319+ @patch ('sagemaker.logs.ColorWrap' )
320+ def test_logs_for_job_no_wait_stopped_job (cw , sagemaker_session_stopped ):
321+ ims = sagemaker_session_stopped
322+ ims .logs_for_job (JOB_NAME )
323+ ims .sagemaker_client .describe_training_job .assert_called_once_with (TrainingJobName = JOB_NAME )
324+ cw ().assert_called_with (0 , 'hi there #1' )
325+
326+
305327@patch ('sagemaker.logs.ColorWrap' )
306328def test_logs_for_job_wait_on_completed (cw , sagemaker_session_complete ):
307329 ims = sagemaker_session_complete
@@ -310,6 +332,14 @@ def test_logs_for_job_wait_on_completed(cw, sagemaker_session_complete):
310332 cw ().assert_called_with (0 , 'hi there #1' )
311333
312334
335+ @patch ('sagemaker.logs.ColorWrap' )
336+ def test_logs_for_job_wait_on_stopped (cw , sagemaker_session_stopped ):
337+ ims = sagemaker_session_stopped
338+ ims .logs_for_job (JOB_NAME , wait = True , poll = 0 )
339+ assert ims .sagemaker_client .describe_training_job .call_args_list == [call (TrainingJobName = JOB_NAME ,)]
340+ cw ().assert_called_with (0 , 'hi there #1' )
341+
342+
313343@patch ('sagemaker.logs.ColorWrap' )
314344def test_logs_for_job_no_wait_on_running (cw , sagemaker_session_ready_lifecycle ):
315345 ims = sagemaker_session_ready_lifecycle
0 commit comments