Mercurial > hg > orthanc-tests
diff NewTests/StorageCompression/test_storage_compression.py @ 489:2078cb20a560
new tests for StorageCompression
author | Alain Mazy <am@osimis.io> |
---|---|
date | Mon, 08 Aug 2022 10:55:47 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/NewTests/StorageCompression/test_storage_compression.py Mon Aug 08 10:55:47 2022 +0200 @@ -0,0 +1,112 @@ +import unittest +import time +from helpers import OrthancTestCase, Helpers + +from orthanc_api_client import OrthancApiClient, generate_test_dicom_file + +import pathlib +here = pathlib.Path(__file__).parent.resolve() + + +class TestStorageCompression(OrthancTestCase): + + @classmethod + def prepare(cls): + test_name = "StorageCompression" + storage_name = "storage_compression" + + print(f'-------------- preparing {test_name} tests') + + cls.clear_storage(storage_name=storage_name) + + config = { + "StorageCompression": True + } + + config_path = cls.generate_configuration( + config_name=f"{test_name}_preparation", + storage_name=storage_name, + config=config, + plugins=Helpers.plugins + ) + + if Helpers.break_before_preparation: + print(f"++++ It is now time to start your Orthanc under tests with configuration file '{config_path}' +++++") + input("Press Enter to continue") + else: + cls.launch_orthanc_to_prepare_db( + config_name=f"{test_name}_preparation", + storage_name=storage_name, + config=config, + plugins=Helpers.plugins + ) + + + # upload a study that will be stored with StorageCompression enabled + instances_ids = cls.o.upload_folder(here / "../../Database/Knix/Loc") + + # make sure we can read files that have been uploaded (this tests the StorageCache with StorageCompression=true) + dicom_file = cls.o.instances.get_file(instances_ids[0]) + tags = cls.o.instances.get_tags(instances_ids[0]) + if "PatientName" not in tags or tags["PatientName"] != "KNIX": + print(f"ERROR: failed to get tags from uploaded file") + exit(-1) + + if Helpers.break_before_preparation: + print(f"++++ It is now time stop your Orthanc +++++") + input("Press Enter to continue") + else: + cls.kill_orthanc() + + # generate config for orthanc-under-tests (change StorageCompression to false) + config_path = cls.generate_configuration( + config_name=f"{test_name}_under_test", + storage_name=storage_name, + config={ + "StorageCompression": False + }, + plugins=Helpers.plugins + ) + + print(f'-------------- prepared {test_name} tests') + if Helpers.break_after_preparation: + print(f"++++ It is now time to start your Orthanc under tests with configuration file '{config_path}' +++++") + input("Press Enter to continue") + else: + print(f'-------------- launching {test_name} tests') + cls.launch_orthanc_under_tests( + config_path=config_path, + config_name=f"{test_name}_under_test", + storage_name=storage_name, + plugins=Helpers.plugins + ) + + print('-------------- waiting for orthanc-under-tests to be available') + cls.o.wait_started() + + # upload a study that will be stored with StorageCompression disabled + cls.o.upload_folder(here / "../../Database/Brainix/Flair") + + + def test_read_compressed_and_uncompressed_files(self): + + # this test simply make sure we can read stored files + # it is repeated 2 times to use the cache the second time + + for i in range(0, 2): + print(f"run {i}") + compressed_study = self.o.studies.find(query={ + "PatientName": "KNIX" + })[0] + uncompressed_study = self.o.studies.find(query={ + "PatientName": "BRAINIX" + })[0] + + compressed_study_tags = self.o.studies.get_tags(orthanc_id = compressed_study.orthanc_id) + uncompressed_study_tags = self.o.studies.get_tags(orthanc_id = uncompressed_study.orthanc_id) + + compressed_study_dicom_file = self.o.instances.get_file(orthanc_id = self.o.studies.get_first_instance_id(compressed_study.orthanc_id)) + uncompressed_study_dicom_file = self.o.instances.get_file(orthanc_id = self.o.studies.get_first_instance_id(uncompressed_study.orthanc_id)) + + self.assertEqual("KNIX", compressed_study_tags["PatientName"]) + self.assertEqual("BRAINIX", uncompressed_study_tags["PatientName"])