Mercurial > hg > orthanc-tests
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'))) |