comparison Tests/Tests.py @ 468:e1867aeb57e2

retries storescu if it succeeds while it should fail
author Alain Mazy <am@osimis.io>
date Wed, 20 Apr 2022 14:53:22 +0200
parents 038fb852e2be
children c19d33c5defe
comparison
equal deleted inserted replaced
465:038fb852e2be 468:e1867aeb57e2
2421 2421
2422 def test_incoming_jpeg(self): 2422 def test_incoming_jpeg(self):
2423 # since this test fails regularly on CI, enable verbosity 2423 # since this test fails regularly on CI, enable verbosity
2424 DoPut(_REMOTE, '/tools/log-level', 'verbose') 2424 DoPut(_REMOTE, '/tools/log-level', 'verbose')
2425 2425
2426 def storescu(image, acceptUnknownSopClassUid): 2426 def storescu(image, acceptUnknownSopClassUid, expectSuccess = True, retries = 1):
2427 if acceptUnknownSopClassUid: 2427 if acceptUnknownSopClassUid:
2428 tmp = [ '-xf', GetDatabasePath('UnknownSopClassUid.cfg'), 'Default' ] 2428 tmp = [ '-xf', GetDatabasePath('UnknownSopClassUid.cfg'), 'Default' ]
2429 else: 2429 else:
2430 tmp = [ '-xs' ] 2430 tmp = [ '-xs' ]
2431 2431
2432 with open(os.devnull, 'w') as FNULL: 2432 while retries > 0:
2433 try: 2433 retries -= 1
2434 subprocess.check_call([ FindExecutable('storescu') ] + tmp + 2434 with open(os.devnull, 'w') as FNULL:
2435 [ _REMOTE['Server'], str(_REMOTE['DicomPort']), 2435 try:
2436 GetDatabasePath(image) ], 2436 subprocess.check_call([ FindExecutable('storescu') ] + tmp +
2437 stderr = FNULL) 2437 [ _REMOTE['Server'], str(_REMOTE['DicomPort']),
2438 2438 GetDatabasePath(image) ],
2439 except subprocess.CalledProcessError as e: 2439 stderr = FNULL)
2440 print('storescu failed with error code: %s' % str(e.returncode)) 2440
2441 raise e 2441 if expectSuccess:
2442 return
2443 except subprocess.CalledProcessError as e:
2444 print('storescu failed with error code: %s' % str(e.returncode))
2445 if not expectSuccess:
2446 raise e
2442 2447
2443 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) 2448 self.assertEqual(0, len(DoGet(_REMOTE, '/patients')))
2444 2449
2445 if IsOrthancVersionAbove(_REMOTE, 1, 9, 0): 2450 if IsOrthancVersionAbove(_REMOTE, 1, 9, 0):
2446 a = DoPut(_REMOTE, '/tools/accepted-transfer-syntaxes', [ 2451 a = DoPut(_REMOTE, '/tools/accepted-transfer-syntaxes', [
2454 DoPut(_REMOTE, '/tools/unknown-sop-class-accepted', '0') 2459 DoPut(_REMOTE, '/tools/unknown-sop-class-accepted', '0')
2455 self.assertEqual(0, DoGet(_REMOTE, '/tools/unknown-sop-class-accepted')) 2460 self.assertEqual(0, DoGet(_REMOTE, '/tools/unknown-sop-class-accepted'))
2456 else: 2461 else:
2457 InstallLuaScriptFromPath(_REMOTE, 'Lua/TransferSyntaxDisable.lua') 2462 InstallLuaScriptFromPath(_REMOTE, 'Lua/TransferSyntaxDisable.lua')
2458 2463
2459 # the following line regularly fails on CI ! 2464 # the following line regularly fails on CI because storescu still returns 0 although the C-Store fails !!
2460 self.assertRaises(Exception, lambda: storescu('Knix/Loc/IM-0001-0001.dcm', False)) 2465 self.assertRaises(Exception, lambda: storescu('Knix/Loc/IM-0001-0001.dcm', False, False, 3))
2461 self.assertRaises(Exception, lambda: storescu('UnknownSopClassUid.dcm', True)) 2466 self.assertRaises(Exception, lambda: storescu('UnknownSopClassUid.dcm', True, False, 3))
2462 self.assertEqual(0, len(DoGet(_REMOTE, '/patients'))) 2467 self.assertEqual(0, len(DoGet(_REMOTE, '/patients')))
2463 2468
2464 if IsOrthancVersionAbove(_REMOTE, 1, 9, 0): 2469 if IsOrthancVersionAbove(_REMOTE, 1, 9, 0):
2465 a = DoPut(_REMOTE, '/tools/accepted-transfer-syntaxes', '*', 'text/plain') 2470 a = DoPut(_REMOTE, '/tools/accepted-transfer-syntaxes', '*', 'text/plain')
2466 self.assertGreaterEqual(42, len(a)) 2471 self.assertGreaterEqual(42, len(a))