489
|
1 import unittest
|
|
2 import time
|
|
3 from helpers import OrthancTestCase, Helpers
|
|
4
|
|
5 from orthanc_api_client import OrthancApiClient, generate_test_dicom_file
|
|
6
|
|
7 import pathlib
|
|
8 here = pathlib.Path(__file__).parent.resolve()
|
|
9
|
|
10
|
|
11 class TestStorageCompression(OrthancTestCase):
|
|
12
|
|
13 @classmethod
|
|
14 def prepare(cls):
|
|
15 test_name = "StorageCompression"
|
|
16 storage_name = "storage_compression"
|
|
17
|
|
18 print(f'-------------- preparing {test_name} tests')
|
|
19
|
|
20 cls.clear_storage(storage_name=storage_name)
|
|
21
|
|
22 config = {
|
|
23 "StorageCompression": True
|
|
24 }
|
|
25
|
|
26 config_path = cls.generate_configuration(
|
|
27 config_name=f"{test_name}_preparation",
|
|
28 storage_name=storage_name,
|
|
29 config=config,
|
|
30 plugins=Helpers.plugins
|
|
31 )
|
|
32
|
|
33 if Helpers.break_before_preparation:
|
|
34 print(f"++++ It is now time to start your Orthanc under tests with configuration file '{config_path}' +++++")
|
|
35 input("Press Enter to continue")
|
|
36 else:
|
|
37 cls.launch_orthanc_to_prepare_db(
|
|
38 config_name=f"{test_name}_preparation",
|
|
39 storage_name=storage_name,
|
|
40 config=config,
|
|
41 plugins=Helpers.plugins
|
|
42 )
|
|
43
|
|
44
|
|
45 # upload a study that will be stored with StorageCompression enabled
|
|
46 instances_ids = cls.o.upload_folder(here / "../../Database/Knix/Loc")
|
|
47
|
|
48 # make sure we can read files that have been uploaded (this tests the StorageCache with StorageCompression=true)
|
|
49 dicom_file = cls.o.instances.get_file(instances_ids[0])
|
|
50 tags = cls.o.instances.get_tags(instances_ids[0])
|
|
51 if "PatientName" not in tags or tags["PatientName"] != "KNIX":
|
|
52 print(f"ERROR: failed to get tags from uploaded file")
|
|
53 exit(-1)
|
|
54
|
|
55 if Helpers.break_before_preparation:
|
|
56 print(f"++++ It is now time stop your Orthanc +++++")
|
|
57 input("Press Enter to continue")
|
|
58 else:
|
|
59 cls.kill_orthanc()
|
|
60
|
|
61 # generate config for orthanc-under-tests (change StorageCompression to false)
|
|
62 config_path = cls.generate_configuration(
|
|
63 config_name=f"{test_name}_under_test",
|
|
64 storage_name=storage_name,
|
|
65 config={
|
|
66 "StorageCompression": False
|
|
67 },
|
|
68 plugins=Helpers.plugins
|
|
69 )
|
|
70
|
|
71 print(f'-------------- prepared {test_name} tests')
|
|
72 if Helpers.break_after_preparation:
|
|
73 print(f"++++ It is now time to start your Orthanc under tests with configuration file '{config_path}' +++++")
|
|
74 input("Press Enter to continue")
|
|
75 else:
|
|
76 print(f'-------------- launching {test_name} tests')
|
|
77 cls.launch_orthanc_under_tests(
|
|
78 config_path=config_path,
|
|
79 config_name=f"{test_name}_under_test",
|
|
80 storage_name=storage_name,
|
|
81 plugins=Helpers.plugins
|
|
82 )
|
|
83
|
|
84 print('-------------- waiting for orthanc-under-tests to be available')
|
|
85 cls.o.wait_started()
|
|
86
|
|
87 # upload a study that will be stored with StorageCompression disabled
|
|
88 cls.o.upload_folder(here / "../../Database/Brainix/Flair")
|
|
89
|
|
90
|
|
91 def test_read_compressed_and_uncompressed_files(self):
|
|
92
|
|
93 # this test simply make sure we can read stored files
|
|
94 # it is repeated 2 times to use the cache the second time
|
|
95
|
|
96 for i in range(0, 2):
|
|
97 print(f"run {i}")
|
|
98 compressed_study = self.o.studies.find(query={
|
|
99 "PatientName": "KNIX"
|
|
100 })[0]
|
|
101 uncompressed_study = self.o.studies.find(query={
|
|
102 "PatientName": "BRAINIX"
|
|
103 })[0]
|
|
104
|
|
105 compressed_study_tags = self.o.studies.get_tags(orthanc_id = compressed_study.orthanc_id)
|
|
106 uncompressed_study_tags = self.o.studies.get_tags(orthanc_id = uncompressed_study.orthanc_id)
|
|
107
|
|
108 compressed_study_dicom_file = self.o.instances.get_file(orthanc_id = self.o.studies.get_first_instance_id(compressed_study.orthanc_id))
|
|
109 uncompressed_study_dicom_file = self.o.instances.get_file(orthanc_id = self.o.studies.get_first_instance_id(uncompressed_study.orthanc_id))
|
|
110
|
|
111 self.assertEqual("KNIX", compressed_study_tags["PatientName"])
|
|
112 self.assertEqual("BRAINIX", uncompressed_study_tags["PatientName"])
|