Mercurial > hg > orthanc-tests
comparison Tests/Tests.py @ 467:fc1c3ffed470 more-tags
merge default -> more-tags
author | Alain Mazy <am@osimis.io> |
---|---|
date | Wed, 20 Apr 2022 14:45:03 +0200 |
parents | 28a2c9452ec9 038fb852e2be |
children | c19d33c5defe |
comparison
equal
deleted
inserted
replaced
466:28a2c9452ec9 | 467:fc1c3ffed470 |
---|---|
206 self.assertEqual('0', DoGet(_REMOTE, '/statistics')['TotalDiskSize']) | 206 self.assertEqual('0', DoGet(_REMOTE, '/statistics')['TotalDiskSize']) |
207 self.assertEqual('0', DoGet(_REMOTE, '/statistics')['TotalUncompressedSize']) | 207 self.assertEqual('0', DoGet(_REMOTE, '/statistics')['TotalUncompressedSize']) |
208 | 208 |
209 systemInfo = DoGet(_REMOTE, '/system') | 209 systemInfo = DoGet(_REMOTE, '/system') |
210 if systemInfo["Version"] == "mainline": | 210 if systemInfo["Version"] == "mainline": |
211 print "Skipping version checks since you're currently in mainline" | 211 print("Skipping version checks since you're currently in mainline") |
212 return | 212 return |
213 | 213 |
214 self.assertTrue(IsOrthancVersionAbove(_LOCAL, 0, 8, 6)) | 214 self.assertTrue(IsOrthancVersionAbove(_LOCAL, 0, 8, 6)) |
215 self.assertFalse(IsOrthancVersionAbove(_LOCAL, 0, 8, 7)) | 215 self.assertFalse(IsOrthancVersionAbove(_LOCAL, 0, 8, 7)) |
216 self.assertTrue(IsOrthancVersionAbove(_LOCAL, 0, 7, 6)) | 216 self.assertTrue(IsOrthancVersionAbove(_LOCAL, 0, 7, 6)) |
388 self.assertEqual(358, im.size[1]) | 388 self.assertEqual(358, im.size[1]) |
389 | 389 |
390 # This is Little Endian Explicit | 390 # This is Little Endian Explicit |
391 self.assertEqual('1.2.840.10008.1.2.1', DoGet(_REMOTE, '/instances/%s/header?simplify' % i)['TransferSyntaxUID']) | 391 self.assertEqual('1.2.840.10008.1.2.1', DoGet(_REMOTE, '/instances/%s/header?simplify' % i)['TransferSyntaxUID']) |
392 | 392 |
393 | 393 def test_images_implicit_vr(self): |
394 if IsOrthancVersionAbove(_REMOTE, 1, 10, 2): | |
395 i = UploadInstance(_REMOTE, 'Implicit-vr-us-palette.dcm')['ID'] | |
396 | |
397 im = GetImage(_REMOTE, '/instances/%s/preview' % i) | |
398 self.assertEqual("RGB", im.mode) | |
399 self.assertEqual(800, im.size[0]) | |
400 self.assertEqual(600, im.size[1]) | |
401 | |
402 | |
394 def test_hierarchy(self): | 403 def test_hierarchy(self): |
395 UploadFolder(_REMOTE, 'Brainix/Epi') | 404 UploadFolder(_REMOTE, 'Brainix/Epi') |
396 UploadFolder(_REMOTE, 'Brainix/Flair') | 405 UploadFolder(_REMOTE, 'Brainix/Flair') |
397 UploadFolder(_REMOTE, 'Knee/T1') | 406 UploadFolder(_REMOTE, 'Knee/T1') |
398 UploadFolder(_REMOTE, 'Knee/T2') | 407 UploadFolder(_REMOTE, 'Knee/T2') |
2452 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/content/StudyDescription' % b).strip()) | 2461 self.assertEqual('hello', DoGet(_REMOTE, '/instances/%s/content/StudyDescription' % b).strip()) |
2453 self.assertEqual('world', DoGet(_REMOTE, '/instances/%s/content/Modality' % b).strip()) | 2462 self.assertEqual('world', DoGet(_REMOTE, '/instances/%s/content/Modality' % b).strip()) |
2454 | 2463 |
2455 | 2464 |
2456 def test_incoming_jpeg(self): | 2465 def test_incoming_jpeg(self): |
2466 # since this test fails regularly on CI, enable verbosity | |
2467 DoPut(_REMOTE, '/tools/log-level', 'verbose') | |
2468 | |
2457 def storescu(image, acceptUnknownSopClassUid): | 2469 def storescu(image, acceptUnknownSopClassUid): |
2458 if acceptUnknownSopClassUid: | 2470 if acceptUnknownSopClassUid: |
2459 tmp = [ '-xf', GetDatabasePath('UnknownSopClassUid.cfg'), 'Default' ] | 2471 tmp = [ '-xf', GetDatabasePath('UnknownSopClassUid.cfg'), 'Default' ] |
2460 else: | 2472 else: |
2461 tmp = [ '-xs' ] | 2473 tmp = [ '-xs' ] |
2462 | 2474 |
2463 with open(os.devnull, 'w') as FNULL: | 2475 with open(os.devnull, 'w') as FNULL: |
2464 subprocess.check_call([ FindExecutable('storescu') ] + tmp + | 2476 try: |
2465 [ _REMOTE['Server'], str(_REMOTE['DicomPort']), | 2477 subprocess.check_call([ FindExecutable('storescu') ] + tmp + |
2466 GetDatabasePath(image) ], | 2478 [ _REMOTE['Server'], str(_REMOTE['DicomPort']), |
2467 stderr = FNULL) | 2479 GetDatabasePath(image) ], |
2480 stderr = FNULL) | |
2481 | |
2482 except subprocess.CalledProcessError as e: | |
2483 print('storescu failed with error code: %s' % str(e.returncode)) | |
2484 raise e | |
2468 | 2485 |
2469 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) | 2486 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) |
2470 | 2487 |
2471 if IsOrthancVersionAbove(_REMOTE, 1, 9, 0): | 2488 if IsOrthancVersionAbove(_REMOTE, 1, 9, 0): |
2472 a = DoPut(_REMOTE, '/tools/accepted-transfer-syntaxes', [ | 2489 a = DoPut(_REMOTE, '/tools/accepted-transfer-syntaxes', [ |
2480 DoPut(_REMOTE, '/tools/unknown-sop-class-accepted', '0') | 2497 DoPut(_REMOTE, '/tools/unknown-sop-class-accepted', '0') |
2481 self.assertEqual(0, DoGet(_REMOTE, '/tools/unknown-sop-class-accepted')) | 2498 self.assertEqual(0, DoGet(_REMOTE, '/tools/unknown-sop-class-accepted')) |
2482 else: | 2499 else: |
2483 InstallLuaScriptFromPath(_REMOTE, 'Lua/TransferSyntaxDisable.lua') | 2500 InstallLuaScriptFromPath(_REMOTE, 'Lua/TransferSyntaxDisable.lua') |
2484 | 2501 |
2502 # the following line regularly fails on CI ! | |
2485 self.assertRaises(Exception, lambda: storescu('Knix/Loc/IM-0001-0001.dcm', False)) | 2503 self.assertRaises(Exception, lambda: storescu('Knix/Loc/IM-0001-0001.dcm', False)) |
2486 self.assertRaises(Exception, lambda: storescu('UnknownSopClassUid.dcm', True)) | 2504 self.assertRaises(Exception, lambda: storescu('UnknownSopClassUid.dcm', True)) |
2487 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) | 2505 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) |
2488 | 2506 |
2489 if IsOrthancVersionAbove(_REMOTE, 1, 9, 0): | 2507 if IsOrthancVersionAbove(_REMOTE, 1, 9, 0): |
2497 DoPost(_REMOTE, '/tools/execute-script', "print('All special transfer syntaxes are now accepted')") | 2515 DoPost(_REMOTE, '/tools/execute-script', "print('All special transfer syntaxes are now accepted')") |
2498 storescu('Knix/Loc/IM-0001-0001.dcm', False) | 2516 storescu('Knix/Loc/IM-0001-0001.dcm', False) |
2499 storescu('UnknownSopClassUid.dcm', True) | 2517 storescu('UnknownSopClassUid.dcm', True) |
2500 self.assertEqual(2, len(DoGet(_REMOTE, '/patients'))) | 2518 self.assertEqual(2, len(DoGet(_REMOTE, '/patients'))) |
2501 | 2519 |
2520 # set back normal verbosity | |
2521 DoPut(_REMOTE, '/tools/log-level', 'default') | |
2502 | 2522 |
2503 def test_storescu_jpeg(self): | 2523 def test_storescu_jpeg(self): |
2504 self.assertEqual(0, len(DoGet(_REMOTE, '/exports')['Exports'])) | 2524 self.assertEqual(0, len(DoGet(_REMOTE, '/exports')['Exports'])) |
2505 | 2525 |
2506 knixStudy = 'b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0' | 2526 knixStudy = 'b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0' |
3758 CompareMainDicomTag('hello', a, 'study', 'StudyDescription') | 3778 CompareMainDicomTag('hello', a, 'study', 'StudyDescription') |
3759 CompareMainDicomTag('world', a, 'series', 'SeriesDescription') | 3779 CompareMainDicomTag('world', a, 'series', 'SeriesDescription') |
3760 CompareMainDicomTag('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', a, '', 'SOPInstanceUID') | 3780 CompareMainDicomTag('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', a, '', 'SOPInstanceUID') |
3761 | 3781 |
3762 def test_httpClient_lua(self): | 3782 def test_httpClient_lua(self): |
3783 retries = 3 | |
3784 result = '' | |
3785 | |
3763 with open(GetDatabasePath('Lua/HttpClient.lua'), 'r') as f: | 3786 with open(GetDatabasePath('Lua/HttpClient.lua'), 'r') as f: |
3764 result = DoPost(_REMOTE, '/tools/execute-script', f.read(), 'application/lua') | 3787 # retry since this test sometimes fails if httpbin.org is unresponsive |
3788 while retries > 0 and not ('OK' in result): | |
3789 result = DoPost(_REMOTE, '/tools/execute-script', f.read(), 'application/lua') | |
3790 retries -= 1 | |
3765 | 3791 |
3766 self.assertIn('OK', result) | 3792 self.assertIn('OK', result) |
3767 | 3793 |
3768 | 3794 |
3769 def test_bitbucket_issue_44(self): | 3795 def test_bitbucket_issue_44(self): |