comparison Tests/Tests.py @ 280:5daa3896981c

testing storage commitment reports
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 10 Mar 2020 20:54:57 +0100
parents 31e1e49df380
children 99acf0c17348
comparison
equal deleted inserted replaced
279:31e1e49df380 280:5daa3896981c
5297 self.assertEqual(2, len(DoGet(_LOCAL, '/instances'))) 5297 self.assertEqual(2, len(DoGet(_LOCAL, '/instances')))
5298 5298
5299 5299
5300 def test_storage_commitment_api(self): 5300 def test_storage_commitment_api(self):
5301 # Storage commitment is available since Orthanc 1.6.0 5301 # Storage commitment is available since Orthanc 1.6.0
5302
5303 def WaitTransaction(uid):
5304 while True:
5305 s = DoGet(_REMOTE, '/storage-commitment/%s' % uid)
5306 if s['Status'] != 'Pending':
5307 return s
5308 else:
5309 time.sleep(0.1)
5310
5302 UploadInstance(_REMOTE, 'DummyCT.dcm') 5311 UploadInstance(_REMOTE, 'DummyCT.dcm')
5303 sopClassUid = '1.2.840.10008.5.1.4.1.1.4' 5312 sopClassUid = '1.2.840.10008.5.1.4.1.1.4'
5304 sopInstanceUid = '1.2.840.113619.2.176.2025.1499492.7040.1171286242.109' 5313 sopInstanceUid = '1.2.840.113619.2.176.2025.1499492.7040.1171286242.109'
5305 5314
5306 # Against self 5315 # Against self
5307 transaction = DoPost(_REMOTE, '/modalities/self/storage-commitment', [ 5316 transaction = DoPost(_REMOTE, '/modalities/self/storage-commitment', [
5308 [ sopClassUid, sopInstanceUid ], 5317 [ sopClassUid, sopInstanceUid ],
5309 ]) ['ID'] 5318 ]) ['ID']
5310 self.assertTrue(transaction.startswith('2.25.')) 5319 self.assertTrue(transaction.startswith('2.25.'))
5311 5320
5312 transaction = DoPost(_REMOTE, '/modalities/self/storage-commitment', [ 5321 result = WaitTransaction(transaction)
5322 self.assertEqual('ORTHANC', result['RemoteAET'])
5323 self.assertEqual('Success', result['Status'])
5324 self.assertEqual(1, len(result['Success']))
5325 self.assertEqual(0, len(result['Failures']))
5326 self.assertEqual(sopClassUid, result['Success'][0]['SOPClassUID'])
5327 self.assertEqual(sopInstanceUid, result['Success'][0]['SOPInstanceUID'])
5328
5329 tmp = DoPost(_REMOTE, '/modalities/self/storage-commitment', [
5313 { 'SOPClassUID' : sopClassUid, 5330 { 'SOPClassUID' : sopClassUid,
5314 'SOPInstanceUID' : sopInstanceUid }, 5331 'SOPInstanceUID' : sopInstanceUid },
5332 ])
5333 self.assertEqual(tmp['Path'], '/storage-commitment/%s' % tmp['ID'])
5334 self.assertEqual(result, WaitTransaction(transaction))
5335
5336
5337 transaction = DoPost(_REMOTE, '/modalities/self/storage-commitment', [
5338 [ 'nope', 'nope2' ],
5339 [ sopClassUid, sopInstanceUid ],
5315 ]) ['ID'] 5340 ]) ['ID']
5316 self.assertTrue(transaction.startswith('2.25.')) 5341 self.assertTrue(transaction.startswith('2.25.'))
5317 5342
5318 transaction = DoPost(_REMOTE, '/modalities/self/storage-commitment', [ 5343 result = WaitTransaction(transaction)
5319 [ 'nope', sopInstanceUid ], 5344 self.assertEqual('ORTHANC', result['RemoteAET'])
5320 ]) ['ID'] 5345 self.assertEqual('Failure', result['Status'])
5321 self.assertTrue(transaction.startswith('2.25.')) 5346 self.assertEqual(1, len(result['Success']))
5322 5347 self.assertEqual(1, len(result['Failures']))
5348 self.assertEqual(sopClassUid, result['Success'][0]['SOPClassUID'])
5349 self.assertEqual(sopInstanceUid, result['Success'][0]['SOPInstanceUID'])
5350 self.assertEqual('nope', result['Failures'][0]['SOPClassUID'])
5351 self.assertEqual('nope2', result['Failures'][0]['SOPInstanceUID'])
5352 self.assertEqual(274, result['Failures'][0]['FailureReason'])
5353
5354 # Cannot remove items from a failed storage commitment transaction
5355 self.assertRaises(Exception, lambda:
5356 DoPost(_REMOTE, '/storage-commitment/%s/remove' % transaction))
5357
5323 5358
5324 # Against Orthanc 0.8.6, that does not support storage commitment 5359 # Against Orthanc 0.8.6, that does not support storage commitment
5325 self.assertRaises(Exception, lambda: 5360 self.assertRaises(Exception, lambda:
5326 DoPost(_REMOTE, '/modalities/orthanctest/storage-commitment', [ 5361 DoPost(_REMOTE, '/modalities/orthanctest/storage-commitment', [
5327 [ sopClassUid, sopInstanceUid ], 5362 [ sopClassUid, sopInstanceUid ],
5329 5364
5330 5365
5331 5366
5332 def test_storage_commitment_store(self): 5367 def test_storage_commitment_store(self):
5333 # Storage commitment is available since Orthanc 1.6.0 5368 # Storage commitment is available since Orthanc 1.6.0
5369
5370 def WaitTransaction(uid):
5371 while True:
5372 s = DoGet(_REMOTE, '/storage-commitment/%s' % uid)
5373 if s['Status'] != 'Pending':
5374 return s
5375 else:
5376 time.sleep(0.1)
5377
5334 i = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID'] 5378 i = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID']
5335 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) 5379 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
5336 self.assertEqual(0, len(DoGet(_LOCAL, '/instances'))) 5380 self.assertEqual(0, len(DoGet(_LOCAL, '/instances')))
5337 5381
5338 # The Orthanc 0.8.6 from "_LOCAL" does not support storage commitment 5382 # The Orthanc 0.8.6 from "_LOCAL" does not support storage commitment
5352 'StorageCommitment' : True, 5396 'StorageCommitment' : True,
5353 }) 5397 })
5354 5398
5355 transaction = j['StorageCommitmentTransactionUID'] 5399 transaction = j['StorageCommitmentTransactionUID']
5356 self.assertTrue(transaction.startswith('2.25.')) 5400 self.assertTrue(transaction.startswith('2.25.'))
5401
5402 result = WaitTransaction(transaction)
5403 self.assertEqual('ORTHANC', result['RemoteAET'])
5404 self.assertEqual('Success', result['Status'])
5405 self.assertEqual(1, len(result['Success']))
5406 self.assertEqual(0, len(result['Failures']))
5407 self.assertEqual('1.2.840.10008.5.1.4.1.1.4', result['Success'][0]['SOPClassUID'])
5408 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109',
5409 result['Success'][0]['SOPInstanceUID'])
5410
5411 self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
5412 DoPost(_REMOTE, '/storage-commitment/%s/remove' % transaction)
5413 self.assertEqual(0, len(DoGet(_REMOTE, '/instances')))