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):