annotate NewTests/MaxStorageReject/test_max_storage_reject.py @ 505:9f28cb3d7979

merge
author Alain Mazy <am@osimis.io>
date Wed, 18 Jan 2023 17:59:59 +0100
parents 10a47656e34f
children d9d059c6082d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
490
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
1 import unittest
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
2 import time
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
3 import subprocess
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
4 import pprint
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
5 from helpers import OrthancTestCase, Helpers
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
6
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
7 from orthanc_api_client import OrthancApiClient, generate_test_dicom_file
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
8 from orthanc_api_client import exceptions as orthanc_exceptions
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
9
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
10 import pathlib
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
11 here = pathlib.Path(__file__).parent.resolve()
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
12
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
13
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
14 class TestMaxStorageReject(OrthancTestCase):
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
15
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
16 @classmethod
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
17 def prepare(cls):
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
18 test_name = "MaxStorageReject"
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
19 storage_name = "max_storage_reject"
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
20
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
21 cls.clear_storage(storage_name=storage_name)
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
22
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
23 config_path = cls.generate_configuration(
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
24 config_name=f"{test_name}_under_test",
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
25 storage_name=storage_name,
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
26 config={
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
27 "MaximumPatientCount": 2,
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
28 "MaximumStorageMode": "Reject"
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
29 },
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
30 plugins=Helpers.plugins
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
31 )
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
32
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
33 print(f'-------------- prepared {test_name} tests')
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
34 if Helpers.break_after_preparation:
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
35 print(f"++++ It is now time to start your Orthanc under tests with configuration file '{config_path}' +++++")
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
36 input("Press Enter to continue")
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
37 else:
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
38 print(f'-------------- launching {test_name} tests')
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
39 cls.launch_orthanc_under_tests(
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
40 config_path=config_path,
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
41 config_name=f"{test_name}_under_test",
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
42 storage_name=storage_name,
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
43 plugins=Helpers.plugins
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
44 )
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
45
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
46 print('-------------- waiting for orthanc-under-tests to be available')
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
47 cls.o.wait_started()
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
48
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
49
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
50 def test_upload_3_patients_rest_api(self):
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
51
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
52 self.o.delete_all_content()
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
53
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
54 # make sure the 3rd patient does not make it into the storage (through the Rest API)
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
55 self.o.upload_file(here / "../../Database/Brainix/Flair/IM-0001-0001.dcm")
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
56 self.o.upload_file(here / "../../Database/Knix/Loc/IM-0001-0001.dcm")
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
57 with self.assertRaises(orthanc_exceptions.HttpError) as ctx:
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
58 self.o.upload_file(here / "../../Database/Phenix/IM-0001-0001.dcm")
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
59 self.assertEqual(507, ctx.exception.http_status_code)
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
60 self.assertEqual(2, len(self.o.studies.get_all_ids()))
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
61
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
62 def upload_with_store_scu(self, path):
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
63 subprocess.check_call([Helpers.find_executable('storescu'),
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
64 "-xs",
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
65 Helpers.get_orthanc_ip(),
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
66 str(Helpers.get_orthanc_dicom_port()),
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
67 path])
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
68
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
69 def test_upload_3_patients_c_store(self):
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
70
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
71 self.o.delete_all_content()
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
72
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
73 # make sure the 3rd patient does not make it into the storage (through StoreSCU)
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
74 self.upload_with_store_scu(here / "../../Database/Brainix/Flair/IM-0001-0001.dcm")
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
75 self.upload_with_store_scu(here / "../../Database/Knix/Loc/IM-0001-0001.dcm")
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
76 with self.assertRaises(subprocess.CalledProcessError) as ctx:
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
77 self.upload_with_store_scu(here / "../../Database/Phenix/IM-0001-0001.dcm")
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
78 self.assertEqual(2, len(self.o.studies.get_all_ids()))
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
79
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
80 def test_upload_3_patients_dicomweb(self):
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
81
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
82 self.o.delete_all_content()
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
83
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
84 # make sure the 3rd patient does not make it into the storage (through DicomWeb)
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
85 self.o.upload_files_dicom_web([here / "../../Database/Brainix/Flair/IM-0001-0001.dcm"])
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
86 self.o.upload_files_dicom_web([here / "../../Database/Knix/Loc/IM-0001-0001.dcm"])
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
87
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
88 with self.assertRaises(orthanc_exceptions.HttpError) as ctx:
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
89 self.o.upload_files_dicom_web([here / "../../Database/Phenix/IM-0001-0001.dcm"])
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
90 self.assertEqual(400, ctx.exception.http_status_code)
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
91
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
92 self.assertEqual(2, len(self.o.studies.get_all_ids()))
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
93
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
94 def test_upload_3_patients_dicomweb_in_one_query(self):
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
95
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
96 self.o.delete_all_content()
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
97
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
98 # make sure the 3rd patient does not make it into the storage (through DicomWeb)
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
99 r = self.o.upload_files_dicom_web([
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
100 here / "../../Database/Brainix/Flair/IM-0001-0001.dcm",
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
101 here / "../../Database/Knix/Loc/IM-0001-0001.dcm",
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
102 here / "../../Database/Phenix/IM-0001-0001.dcm"
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
103 ])
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
104
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
105 # pprint.pprint(r)
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
106 self.assertEqual(2, len(self.o.studies.get_all_ids()))
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
107 self.assertIn('00081198', r)
10a47656e34f new tests for MaximumStorageMode
Alain Mazy <am@osimis.io>
parents:
diff changeset
108 self.assertEqual(0xA700, r['00081198']['Value'][0]['00081197']['Value'][0]) # one failed instance with out-of-resource status