Mercurial > hg > orthanc-tests
comparison Tests/Tests.py @ 379:097329b67509
fix tests if StorageCompression is true
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 12 Feb 2021 15:52:10 +0100 |
parents | a4b8450a1158 |
children | b9adc7d06347 |
comparison
equal
deleted
inserted
replaced
378:a4b8450a1158 | 379:097329b67509 |
---|---|
181 | 181 |
182 sizeDummyCT = 2472 | 182 sizeDummyCT = 2472 |
183 sizeOverwrite = 2476 | 183 sizeOverwrite = 2476 |
184 instance = '66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d' | 184 instance = '66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d' |
185 | 185 |
186 # This file has *no* pixel data => "dicom-until-pixel-data" is not created | |
186 u = UploadInstance(_REMOTE, 'DummyCT.dcm') | 187 u = UploadInstance(_REMOTE, 'DummyCT.dcm') |
188 isCompressed = (DoGet(_REMOTE, '/instances/%s/attachments/dicom/is-compressed' % u['ID']) != 0) | |
187 self.assertEqual(instance, u['ID']) | 189 self.assertEqual(instance, u['ID']) |
188 self.assertEqual('Success', u['Status']) | 190 self.assertEqual('Success', u['Status']) |
189 | 191 |
190 if True: | 192 if True: |
191 # New test for Orthanc 1.4.3 | 193 # New test for Orthanc 1.4.3 |
192 self.assertEqual('f2635388-f01d497a-15f7c06b-ad7dba06-c4c599fe', u['ParentSeries']) | 194 self.assertEqual('f2635388-f01d497a-15f7c06b-ad7dba06-c4c599fe', u['ParentSeries']) |
193 self.assertEqual('b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0', u['ParentStudy']) | 195 self.assertEqual('b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0', u['ParentStudy']) |
194 self.assertEqual('6816cb19-844d5aee-85245eba-28e841e6-2414fae2', u['ParentPatient']) | 196 self.assertEqual('6816cb19-844d5aee-85245eba-28e841e6-2414fae2', u['ParentPatient']) |
195 | 197 |
196 j = int(DoGet(_REMOTE, '/instances/%s/attachments/dicom-as-json/size' % instance)) | 198 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1): |
199 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/attachments/dicom-as-json' % instance)) | |
200 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/attachments/dicom-until-pixel-data' % instance)) | |
201 j = 0 | |
202 else: | |
203 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/attachments/dicom-until-pixel-data' % instance)) | |
204 j = int(DoGet(_REMOTE, '/instances/%s/attachments/dicom-as-json/size' % instance)) | |
205 | |
197 s = sizeDummyCT + j | 206 s = sizeDummyCT + j |
198 self.assertEqual('%d' % s, DoGet(_REMOTE, '/statistics')['TotalDiskSize']) | 207 |
199 self.assertEqual('%d' % s, DoGet(_REMOTE, '/statistics')['TotalUncompressedSize']) | 208 if isCompressed: |
209 self.assertGreater(s, int(DoGet(_REMOTE, '/statistics')['TotalDiskSize'])) | |
210 else: | |
211 self.assertEqual(s, int(DoGet(_REMOTE, '/statistics')['TotalDiskSize'])) | |
212 | |
213 self.assertEqual(s, int(DoGet(_REMOTE, '/statistics')['TotalUncompressedSize'])) | |
200 | 214 |
201 u = UploadInstance(_REMOTE, 'DummyCT.dcm') | 215 u = UploadInstance(_REMOTE, 'DummyCT.dcm') |
202 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) | 216 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) |
203 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) | 217 self.assertEqual(1, len(DoGet(_REMOTE, '/studies'))) |
204 self.assertEqual(1, len(DoGet(_REMOTE, '/series'))) | 218 self.assertEqual(1, len(DoGet(_REMOTE, '/series'))) |
205 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) | 219 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
206 self.assertEqual('%d' % s, DoGet(_REMOTE, '/statistics')['TotalDiskSize']) | 220 |
207 self.assertEqual('%d' % s, DoGet(_REMOTE, '/statistics')['TotalUncompressedSize']) | 221 if isCompressed: |
222 self.assertGreater(s, int(DoGet(_REMOTE, '/statistics')['TotalDiskSize'])) | |
223 else: | |
224 self.assertEqual(s, int(DoGet(_REMOTE, '/statistics')['TotalDiskSize'])) | |
225 | |
226 self.assertEqual(s, int(DoGet(_REMOTE, '/statistics')['TotalUncompressedSize'])) | |
208 | 227 |
209 i = DoGet(_REMOTE, '/instances/%s/simplified-tags' % instance) | 228 i = DoGet(_REMOTE, '/instances/%s/simplified-tags' % instance) |
210 self.assertEqual('20070101', i['StudyDate']) | 229 self.assertEqual('20070101', i['StudyDate']) |
211 self.assertEqual('KNIX', i['PatientName']) | 230 self.assertEqual('KNIX', i['PatientName']) |
212 | 231 |
223 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) | 242 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) |
224 | 243 |
225 if IsOrthancVersionAbove(_REMOTE, 1, 4, 2): | 244 if IsOrthancVersionAbove(_REMOTE, 1, 4, 2): |
226 # Overwriting | 245 # Overwriting |
227 self.assertEqual('Success', u['Status']) | 246 self.assertEqual('Success', u['Status']) |
228 j2 = int(DoGet(_REMOTE, '/instances/%s/attachments/dicom-as-json/size' % instance)) | 247 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1): |
248 j2 = 0 | |
249 else: | |
250 j2 = int(DoGet(_REMOTE, '/instances/%s/attachments/dicom-as-json/size' % instance)) | |
251 self.assertNotEqual(j, j2) | |
229 s2 = sizeOverwrite + j2 | 252 s2 = sizeOverwrite + j2 |
230 self.assertNotEqual(s, s2) | 253 self.assertNotEqual(s, s2) |
231 self.assertNotEqual(j, j2) | 254 if isCompressed: |
232 self.assertEqual('%d' % s2, DoGet(_REMOTE, '/statistics')['TotalDiskSize']) | 255 self.assertGreater(s2, int(DoGet(_REMOTE, '/statistics')['TotalDiskSize'])) |
233 self.assertEqual('%d' % s2, DoGet(_REMOTE, '/statistics')['TotalUncompressedSize']) | 256 else: |
257 self.assertEqual(s2, int(DoGet(_REMOTE, '/statistics')['TotalDiskSize'])) | |
258 | |
259 self.assertEqual(s2, int(DoGet(_REMOTE, '/statistics')['TotalUncompressedSize'])) | |
234 i = DoGet(_REMOTE, '/instances/%s/simplified-tags' % instance) | 260 i = DoGet(_REMOTE, '/instances/%s/simplified-tags' % instance) |
235 self.assertEqual('ANOTHER', i['PatientName']) | 261 self.assertEqual('ANOTHER', i['PatientName']) |
236 else: | 262 else: |
237 self.assertEqual('AlreadyStored', u['Status']) | 263 self.assertEqual('AlreadyStored', u['Status']) |
238 self.assertEqual('%d' % s, DoGet(_REMOTE, '/statistics')['TotalDiskSize']) | 264 self.assertEqual(s, int(DoGet(_REMOTE, '/statistics')['TotalDiskSize'])) |
239 self.assertEqual('%d' % s, DoGet(_REMOTE, '/statistics')['TotalUncompressedSize']) | 265 self.assertEqual(s, int(DoGet(_REMOTE, '/statistics')['TotalUncompressedSize'])) |
240 | 266 |
241 def test_upload_2(self): | 267 def test_upload_2(self): |
242 i = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID'] | 268 i = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID'] |
243 instance = DoGet(_REMOTE, '/instances/%s' % i) | 269 instance = DoGet(_REMOTE, '/instances/%s' % i) |
244 self.assertEqual(i, instance['ID']) | 270 self.assertEqual(i, instance['ID']) |
1041 # New in Orthanc 1.9.0 | 1067 # New in Orthanc 1.9.0 |
1042 self.assertTrue('RemoteAET' in m) | 1068 self.assertTrue('RemoteAET' in m) |
1043 self.assertEqual(DoGet(_REMOTE, '/series/%s/metadata/RemoteAET' % series), '') # None, received by REST API | 1069 self.assertEqual(DoGet(_REMOTE, '/series/%s/metadata/RemoteAET' % series), '') # None, received by REST API |
1044 | 1070 |
1045 m = DoGet(_REMOTE, '/instances/%s/metadata' % i) | 1071 m = DoGet(_REMOTE, '/instances/%s/metadata' % i) |
1046 self.assertEqual(9, len(m)) | 1072 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1): |
1073 self.assertEqual(9, len(m)) | |
1074 self.assertTrue('PixelDataOffset' in m) # New in Orthanc 1.9.1 | |
1075 self.assertEqual(int(DoGet(_REMOTE, '/instances/%s/metadata/PixelDataOffset' % i)), 0x0c78) | |
1076 else: | |
1077 self.assertEqual(8, len(m)) | |
1078 | |
1047 self.assertTrue('IndexInSeries' in m) | 1079 self.assertTrue('IndexInSeries' in m) |
1048 self.assertTrue('ReceptionDate' in m) | 1080 self.assertTrue('ReceptionDate' in m) |
1049 self.assertTrue('RemoteAET' in m) | 1081 self.assertTrue('RemoteAET' in m) |
1050 self.assertTrue('Origin' in m) | 1082 self.assertTrue('Origin' in m) |
1051 self.assertTrue('TransferSyntax' in m) | 1083 self.assertTrue('TransferSyntax' in m) |
1052 self.assertTrue('SopClassUid' in m) | 1084 self.assertTrue('SopClassUid' in m) |
1053 self.assertTrue('RemoteIP' in m) | 1085 self.assertTrue('RemoteIP' in m) |
1054 self.assertTrue('HttpUsername' in m) | 1086 self.assertTrue('HttpUsername' in m) |
1055 self.assertTrue('PixelDataOffset' in m) # New in Orthanc 1.9.1 | |
1056 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/IndexInSeries' % i), 1) | 1087 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/IndexInSeries' % i), 1) |
1057 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/Origin' % i), 'RestApi') | 1088 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/Origin' % i), 'RestApi') |
1058 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/RemoteAET' % i), '') # None, received by REST API | 1089 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/RemoteAET' % i), '') # None, received by REST API |
1059 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/TransferSyntax' % i), '1.2.840.10008.1.2.4.91') # JPEG2k | 1090 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/TransferSyntax' % i), '1.2.840.10008.1.2.4.91') # JPEG2k |
1060 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/SopClassUid' % i), '1.2.840.10008.5.1.4.1.1.4') | 1091 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/SopClassUid' % i), '1.2.840.10008.5.1.4.1.1.4') |
1061 self.assertEqual(int(DoGet(_REMOTE, '/instances/%s/metadata/PixelDataOffset' % i)), 0x0c78) | |
1062 | 1092 |
1063 # Play with custom metadata | 1093 # Play with custom metadata |
1064 DoPut(_REMOTE, '/patients/%s/metadata/5555' % p, 'coucou') | 1094 DoPut(_REMOTE, '/patients/%s/metadata/5555' % p, 'coucou') |
1065 m = DoGet(_REMOTE, '/patients/%s/metadata' % p) | 1095 m = DoGet(_REMOTE, '/patients/%s/metadata' % p) |
1066 self.assertEqual(2, len(m)) | 1096 self.assertEqual(2, len(m)) |
1171 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) | 1201 self.assertEqual(1, len(DoGet(_REMOTE, '/patients'))) |
1172 | 1202 |
1173 i = DoGet(_REMOTE, '/instances') | 1203 i = DoGet(_REMOTE, '/instances') |
1174 self.assertEqual(1, len(i)) | 1204 self.assertEqual(1, len(i)) |
1175 m = DoGet(_REMOTE, '/instances/%s/metadata' % i[0]) | 1205 m = DoGet(_REMOTE, '/instances/%s/metadata' % i[0]) |
1176 self.assertEqual(9, len(m)) | 1206 |
1207 if IsOrthancVersionAbove(_REMOTE, 1, 9, 1): | |
1208 self.assertEqual(9, len(m)) | |
1209 self.assertTrue('PixelDataOffset' in m) # New in Orthanc 1.9.1 | |
1210 else: | |
1211 self.assertEqual(8, len(m)) | |
1212 | |
1177 self.assertTrue('IndexInSeries' in m) | 1213 self.assertTrue('IndexInSeries' in m) |
1178 self.assertTrue('ReceptionDate' in m) | 1214 self.assertTrue('ReceptionDate' in m) |
1179 self.assertTrue('RemoteAET' in m) | 1215 self.assertTrue('RemoteAET' in m) |
1180 self.assertTrue('Origin' in m) | 1216 self.assertTrue('Origin' in m) |
1181 self.assertTrue('TransferSyntax' in m) | 1217 self.assertTrue('TransferSyntax' in m) |
1182 self.assertTrue('SopClassUid' in m) | 1218 self.assertTrue('SopClassUid' in m) |
1183 self.assertTrue('RemoteIP' in m) | 1219 self.assertTrue('RemoteIP' in m) |
1184 self.assertTrue('CalledAET' in m) | 1220 self.assertTrue('CalledAET' in m) |
1185 self.assertTrue('PixelDataOffset' in m) # New in Orthanc 1.9.1 | |
1186 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/IndexInSeries' % i[0]), 1) | 1221 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/IndexInSeries' % i[0]), 1) |
1187 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/Origin' % i[0]), 'DicomProtocol') | 1222 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/Origin' % i[0]), 'DicomProtocol') |
1188 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/RemoteAET' % i[0]), 'STORESCU') | 1223 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/RemoteAET' % i[0]), 'STORESCU') |
1189 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/TransferSyntax' % i[0]), '1.2.840.10008.1.2.1') | 1224 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/TransferSyntax' % i[0]), '1.2.840.10008.1.2.1') |
1190 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/SopClassUid' % i[0]), '1.2.840.10008.5.1.4.1.1.7') | 1225 self.assertEqual(DoGet(_REMOTE, '/instances/%s/metadata/SopClassUid' % i[0]), '1.2.840.10008.5.1.4.1.1.7') |
4426 | 4461 |
4427 | 4462 |
4428 def test_dicom_disk_size(self): | 4463 def test_dicom_disk_size(self): |
4429 dicomSize = 0 | 4464 dicomSize = 0 |
4430 | 4465 |
4431 UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') | 4466 a = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm') ['ID'] |
4467 isCompressed = (DoGet(_REMOTE, '/instances/%s/attachments/dicom/is-compressed' % a) != 0) | |
4432 | 4468 |
4433 for i in range(2): | 4469 for i in range(2): |
4434 p = 'Knee/T%d/IM-0001-0001.dcm' % (i + 1) | 4470 p = 'Knee/T%d/IM-0001-0001.dcm' % (i + 1) |
4435 UploadInstance(_REMOTE, p) | 4471 UploadInstance(_REMOTE, p) |
4436 dicomSize += os.path.getsize(GetDatabasePath(p)) | 4472 dicomSize += os.path.getsize(GetDatabasePath(p)) |
4437 | 4473 |
4438 s = DoGet(_REMOTE, '/patients/ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17/statistics') # Consider Knee patient | 4474 s = DoGet(_REMOTE, '/patients/ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17/statistics') # Consider Knee patient |
4439 self.assertEqual(2, s['CountInstances']) | 4475 self.assertEqual(2, s['CountInstances']) |
4440 self.assertEqual(2, s['CountSeries']) | 4476 self.assertEqual(2, s['CountSeries']) |
4441 self.assertEqual(1, s['CountStudies']) | 4477 self.assertEqual(1, s['CountStudies']) |
4442 self.assertEqual(dicomSize, int(s['DicomDiskSize'])) | 4478 |
4443 self.assertEqual(dicomSize, int(s['DicomUncompressedSize'])) | 4479 self.assertEqual(dicomSize, int(s['DicomUncompressedSize'])) |
4444 self.assertLess(dicomSize, int(s['UncompressedSize'])) | 4480 self.assertLess(dicomSize, int(s['UncompressedSize'])) |
4445 self.assertEqual(s['UncompressedSize'], s['DiskSize']) | 4481 |
4446 | 4482 if isCompressed: |
4483 self.assertGreater(dicomSize, int(s['DicomDiskSize'])) | |
4484 self.assertGreater(s['UncompressedSize'], s['DiskSize']) | |
4485 else: | |
4486 self.assertEqual(dicomSize, int(s['DicomDiskSize'])) | |
4487 self.assertEqual(s['UncompressedSize'], s['DiskSize']) | |
4488 | |
4447 | 4489 |
4448 def test_changes_2(self): | 4490 def test_changes_2(self): |
4449 # More consistent behavior since Orthanc 1.5.2 | 4491 # More consistent behavior since Orthanc 1.5.2 |
4450 # https://groups.google.com/d/msg/orthanc-users/QhzB6vxYeZ0/YxabgqpfBAAJ | 4492 # https://groups.google.com/d/msg/orthanc-users/QhzB6vxYeZ0/YxabgqpfBAAJ |
4451 | 4493 |