def test_success_export_then_import_different_users( self, mock_config_file): inv_manager = InventoryManager(mock_config_file[0]) ds = inv_manager.create_dataset('unittester', 'unittester', 'unittest-zip', 'gigantum_object_v1') with tempfile.TemporaryDirectory() as tempd: path = ZipExporter.export_dataset(ds.root_dir, tempd) newds = ZipExporter.import_dataset(path, "unittester2", "unittester2", mock_config_file[0]) assert not os.path.exists(path) assert 'unittester2' == InventoryManager( mock_config_file[0]).query_owner(newds) assert newds.is_repo_clean assert newds.active_branch == 'master' # Now try with same user as exporter path2 = ZipExporter.export_dataset(ds.root_dir, tempd) shutil.rmtree(ds.root_dir) lb2 = ZipExporter.import_dataset(path2, "unittester", "unittester", mock_config_file[0]) assert 'unittester' == InventoryManager( mock_config_file[0]).query_owner(lb2) assert lb2.is_repo_clean assert lb2.active_branch == 'master'
def export_dataset_as_zip(dataset_path: str, ds_export_directory: str) -> str: """Return path to archive file of exported dataset. """ p = os.getpid() logger = LMLogger.get_logger() logger.info(f"(Job {p}) Starting export_dataset_as_zip({dataset_path})") try: ds = InventoryManager().load_dataset_from_directory(dataset_path) with ds.lock(): path = ZipExporter.export_dataset(ds.root_dir, ds_export_directory) return path except Exception as e: logger.exception(f"(Job {p}) Error on export_dataset_as_zip: {e}") raise
def test_fail_export_garbled_export(self): # Test giving a path that doesn't exist with pytest.raises(ZipWorkflowException): ZipExporter.export_dataset('/not/a/real/path', '.')
def test_fail_export_not_a_dataset(self): # Pass in a valid directory, but one that is not an LB with pytest.raises(ZipWorkflowException): ZipExporter.export_dataset('/var', '.')