Ejemplo n.º 1
0
    def test_save_artifact_in_job_saves_metadata_in_redis(self):
        import os.path as path

        self._mock_foundations_context.is_in_running_job.return_value = True
        self._mock_foundations_context.job_id.return_value = self.job_id

        filename = path.basename(self.filepath)
        _, extension = path.splitext(filename)
        extension_without_dot = extension[1:]

        save_artifact(self.filepath)
        
        basename = path.basename(self.filepath)

        artifact_metadata = json.loads(self._redis.get(f'jobs:{self.job_id}:user_artifact_metadata'))
        expected_metadata = {
            'key_mapping': {
                basename: basename
            },
            'metadata': {
                basename: {}
            }
        }

        self.assertEqual(expected_metadata, artifact_metadata)
Ejemplo n.º 2
0
    def test_save_two_artifacts_in_job_saves_metadata_for_both_in_redis(self):
        import os.path as path

        self._mock_foundations_context.is_in_running_job.return_value = True
        self._mock_foundations_context.job_id.return_value = self.job_id

        save_artifact(self.filepath)
        save_artifact(self.filepath_2)
        
        basename =  path.basename(self.filepath)
        basename_2 = path.basename(self.filepath_2)

        artifact_metadata = json.loads(self._redis.get(f'jobs:{self.job_id}:user_artifact_metadata'))
        expected_metadata = {
            'key_mapping': {
                basename: basename,
                basename_2: basename_2
            },
            'metadata': {
                basename: {},
                basename_2: {}
            }
        }

        self.assertEqual(expected_metadata, artifact_metadata)
Ejemplo n.º 3
0
    def test_save_artifact_in_job_with_key_when_key_already_exists_for_job_logs_warning(self):
        self._mock_foundations_context.is_in_running_job.return_value = True
        self._mock_foundations_context.job_id.return_value = self.job_id

        save_artifact(self.filepath, key=self.key)
        save_artifact(self.filepath_2, key=self.key)
        self.mock_logger.warning.assert_called_once_with(f'Artifact "{self.key}" already exists - overwriting.')
    def test_save_artifact_in_job_appends_file_to_archive(self):
        self._mock_foundations_job.is_in_running_job.return_value = True
        self._mock_foundations_job.job_id = self.job_id

        save_artifact(self.filepath)
        self._mock_archive.append_file.assert_called_once_with(
            'user_artifacts', self.filepath, self.job_id, target_name=None)
Ejemplo n.º 5
0
    def test_save_two_artifacts_with_different_keys_in_job_does_not_print_warning(self):
        import os.path as path

        self._mock_foundations_context.is_in_running_job.return_value = True
        self._mock_foundations_context.job_id.return_value = self.job_id

        save_artifact(self.filepath)
        save_artifact(self.filepath_2)
        
        self.mock_logger.warning.assert_not_called()
Ejemplo n.º 6
0
    def test_save_artifact_in_job_without_key_when_artifact_already_exists_for_job_logs_warning(self):
        import os.path as path

        self._mock_foundations_context.is_in_running_job.return_value = True
        self._mock_foundations_context.job_id.return_value = self.job_id

        filename = path.basename(self.filepath)

        save_artifact(self.filepath)
        save_artifact(f'{self.filepath_2}/{self.filepath}')
        self.mock_logger.warning.assert_called_once_with(f'Artifact "{filename}" already exists - overwriting.')
Ejemplo n.º 7
0
    def test_save_artifact_in_job_with_key_appends_metadata_to_archive_using_key_as_filename(self):
        import os.path as path

        self._mock_foundations_context.is_in_running_job.return_value = True
        self._mock_foundations_context.job_id.return_value = self.job_id

        save_artifact(self.filepath, key=self.key)
        basename = path.basename(self.filepath)

        artifact_metadata = json.loads(self._redis.get(f'jobs:{self.job_id}:user_artifact_metadata'))
        expected_metadata = {
            'key_mapping': {
                self.key: basename
            },
            'metadata': {
                basename: {}
            }
        }

        self.assertEqual(expected_metadata, artifact_metadata)
    def test_save_artifact_in_job_with_key_when_key_already_exists_removes_metadata_for_old_file(
            self):
        import os.path as path

        self._mock_foundations_job.is_in_running_job.return_value = True
        self._mock_foundations_job.job_id = self.job_id

        save_artifact(self.filepath, key=self.key)
        save_artifact(self.filepath_2, key=self.key)

        basename = path.basename(self.filepath_2)

        artifact_metadata = json.loads(
            self._redis.get(f'jobs:{self.job_id}:user_artifact_metadata'))
        expected_metadata = {
            'key_mapping': {
                self.key: basename
            },
            'metadata': {
                basename: {}
            }
        }

        self.assertEqual(expected_metadata, artifact_metadata)
Ejemplo n.º 9
0
 def test_save_artifact_outside_job_not_saving_artifact(self):
     self._mock_foundations_context.is_in_running_job.return_value = False
     load_archive = self.patch('foundations_contrib.archiving.load_archive')
     
     save_artifact(self.filepath)
     load_archive.assert_not_called()
Ejemplo n.º 10
0
    def test_save_artifact_in_job_does_not_log_warning(self):
        self._mock_foundations_context.is_in_running_job.return_value = True

        save_artifact(self.filepath)
        self.mock_logger.warning.assert_not_called()
Ejemplo n.º 11
0
    def test_save_artifact_outside_job_logs_warning(self):
        self._mock_foundations_context.is_in_running_job.return_value = False

        save_artifact(self.filepath)
        self.mock_logger.warning.assert_called_once_with('Cannot save artifact outside of job.')
Ejemplo n.º 12
0
    def test_save_artifact_in_job_with_key_appends_file_to_archive_using_basename_as_target(self):
        self._mock_foundations_context.is_in_running_job.return_value = True
        self._mock_foundations_context.job_id.return_value = self.job_id

        save_artifact(self.filepath, key=self.key)
        self._mock_archive.append_file.assert_called_once_with('user_artifacts', self.filepath, self.job_id, target_name=None)