def test_training_with_logs(self, mock_describe, mock_client, mock_log_client, mock_check_training):
     mock_check_training.return_value = True
     mock_describe.side_effect = \
         [(LogState.WAIT_IN_PROGRESS, DESCRIBE_TRAINING_INPROGRESS_RETURN, 0),
          (LogState.JOB_COMPLETE, DESCRIBE_TRAINING_STOPPING_RETURN, 0),
          (LogState.COMPLETE, DESCRIBE_TRAINING_COMPELETED_RETURN, 0)]
     mock_session = mock.Mock()
     mock_log_session = mock.Mock()
     attrs = {'create_training_job.return_value':
              test_arn_return,
              'describe_training_job.return_value':
                  DESCRIBE_TRAINING_COMPELETED_RETURN
              }
     log_attrs = {'describe_log_streams.side_effect':
                  LIFECYCLE_LOG_STREAMS,
                  'get_log_events.side_effect':
                  STREAM_LOG_EVENTS
                  }
     mock_session.configure_mock(**attrs)
     mock_log_session.configure_mock(**log_attrs)
     mock_client.return_value = mock_session
     mock_log_client.return_value = mock_log_session
     hook = SageMakerHook(aws_conn_id='sagemaker_test_conn_id_1')
     hook.create_training_job(create_training_params, wait_for_completion=True,
                              print_log=True, check_interval=1)
     self.assertEqual(mock_describe.call_count, 3)
     self.assertEqual(mock_session.describe_training_job.call_count, 1)
 def test_training_ends_with_wait_on(self, mock_client, mock_check_training):
     mock_check_training.return_value = True
     mock_session = mock.Mock()
     attrs = {'create_training_job.return_value':
              test_arn_return,
              'describe_training_job.side_effect':
                  [DESCRIBE_TRAINING_INPROGRESS_RETURN,
                   DESCRIBE_TRAINING_STOPPING_RETURN,
                   DESCRIBE_TRAINING_STOPPED_RETURN,
                   DESCRIBE_TRAINING_COMPELETED_RETURN]
              }
     mock_session.configure_mock(**attrs)
     mock_client.return_value = mock_session
     hook = SageMakerHook(sagemaker_conn_id='sagemaker_test_conn_id_1')
     hook.create_training_job(create_training_params, wait_for_completion=True)
     self.assertEqual(mock_session.describe_training_job.call_count, 4)
 def test_create_training_job(self, mock_client, mock_check_training):
     mock_check_training.return_value = True
     mock_session = mock.Mock()
     attrs = {'create_training_job.return_value':
              test_arn_return}
     mock_session.configure_mock(**attrs)
     mock_client.return_value = mock_session
     hook = SageMakerHook(sagemaker_conn_id='sagemaker_test_conn_id')
     response = hook.create_training_job(create_training_params,
                                         wait_for_completion=False)
     mock_session.create_training_job.assert_called_once_with(**create_training_params)
     self.assertEqual(response, test_arn_return)
예제 #4
0
 def test_create_training_job(self, mock_client, mock_check_training):
     mock_check_training.return_value = True
     mock_session = mock.Mock()
     attrs = {'create_training_job.return_value': test_arn_return}
     mock_session.configure_mock(**attrs)
     mock_client.return_value = mock_session
     hook = SageMakerHook(aws_conn_id='sagemaker_test_conn_id')
     response = hook.create_training_job(create_training_params,
                                         wait_for_completion=False,
                                         print_log=False)
     mock_session.create_training_job.assert_called_once_with(
         **create_training_params)
     self.assertEqual(response, test_arn_return)
 def test_create_training_job_db_config(self, mock_client, mock_check_training):
     mock_check_training.return_value = True
     mock_session = mock.Mock()
     attrs = {'create_training_job.return_value':
              test_arn_return}
     mock_session.configure_mock(**attrs)
     mock_client.return_value = mock_session
     hook_use_db_config = SageMakerHook(sagemaker_conn_id='sagemaker_test_conn_id',
                                        use_db_config=True)
     response = hook_use_db_config.create_training_job(create_training_params,
                                                       wait_for_completion=False)
     updated_config = copy.deepcopy(create_training_params)
     updated_config.update(db_config)
     mock_session.create_training_job.assert_called_once_with(**updated_config)
     self.assertEqual(response, test_arn_return)
예제 #6
0
 def test_create_training_job_db_config(self, mock_client,
                                        mock_check_training):
     mock_check_training.return_value = True
     mock_session = mock.Mock()
     attrs = {'create_training_job.return_value': test_arn_return}
     mock_session.configure_mock(**attrs)
     mock_client.return_value = mock_session
     hook_use_db_config = SageMakerHook(
         sagemaker_conn_id='sagemaker_test_conn_id', use_db_config=True)
     response = hook_use_db_config.create_training_job(
         create_training_params, wait_for_completion=False)
     updated_config = copy.deepcopy(create_training_params)
     updated_config.update(db_config)
     mock_session.create_training_job.assert_called_once_with(
         **updated_config)
     self.assertEqual(response, test_arn_return)
예제 #7
0
    def execute(self, context):
        sagemaker = SageMakerHook(sagemaker_conn_id=self.sagemaker_conn_id,
                                  use_db_config=self.use_db_config,
                                  region_name=self.region_name,
                                  check_interval=self.check_interval,
                                  max_ingestion_time=self.max_ingestion_time)

        self.log.info("Creating SageMaker Training Job %s." %
                      self.training_job_config['TrainingJobName'])
        response = sagemaker.create_training_job(
            self.training_job_config,
            wait_for_completion=self.wait_for_completion)
        if not response['ResponseMetadata']['HTTPStatusCode'] \
           == 200:
            raise AirflowException(
                'Sagemaker Training Job creation failed: %s' % response)
        else:
            return response
    def execute(self, context):
        sagemaker = SageMakerHook(
            sagemaker_conn_id=self.sagemaker_conn_id,
            use_db_config=self.use_db_config,
            region_name=self.region_name,
            check_interval=self.check_interval,
            max_ingestion_time=self.max_ingestion_time
        )

        self.log.info(
            "Creating SageMaker Training Job %s."
            % self.training_job_config['TrainingJobName']
        )
        response = sagemaker.create_training_job(
            self.training_job_config,
            wait_for_completion=self.wait_for_completion)
        if not response['ResponseMetadata']['HTTPStatusCode'] \
           == 200:
            raise AirflowException(
                'Sagemaker Training Job creation failed: %s' % response)
        else:
            return response