comparison Tests/Tests.py @ 644:5806bd442a37 large-queries

new tests for /extended-api-v1/changes
author Alain Mazy <am@orthanc.team>
date Thu, 11 Apr 2024 19:04:16 +0200
parents 9f8276ac1cdd
children 599ff47f609d
comparison
equal deleted inserted replaced
643:aa11ab24ff3c 644:5806bd442a37
622 self.assertEqual(50, countInstances) 622 self.assertEqual(50, countInstances)
623 self.assertEqual(1, countPatients) 623 self.assertEqual(1, countPatients)
624 self.assertEqual(1, countStudies) 624 self.assertEqual(1, countStudies)
625 self.assertEqual(2, countSeries) 625 self.assertEqual(2, countSeries)
626 self.assertEqual(0, completed) 626 self.assertEqual(0, completed)
627
628
629 def test_changes_extended(self):
630 if IsOrthancVersionAbove(_REMOTE, 1, 13, 0) and DoGet(_REMOTE, '/system').get("HasExtendedApiV1"):
631 # Check emptiness
632 c = DoGet(_REMOTE, '/extended-api-v1/changes')
633 self.assertEqual(0, len(c['Changes']))
634 #self.assertEqual(0, c['Last']) # Not true anymore for Orthanc >= 1.5.2
635 self.assertTrue(c['Done'])
636 c = DoGet(_REMOTE, '/extended-api-v1/changes?last')
637 self.assertEqual(0, len(c['Changes']))
638 #self.assertEqual(0, c['Last']) # Not true anymore for Orthanc >= 1.5.2
639 self.assertTrue(c['Done'])
640
641 # Add 1 instance
642 i = UploadInstance(_REMOTE, 'Brainix/Flair/IM-0001-0001.dcm')['ID']
643 c = DoGet(_REMOTE, '/extended-api-v1/changes')
644 begin = c['Last']
645 self.assertEqual(4, len(c['Changes']))
646 self.assertTrue(c['Done'])
647 self.assertEqual(c['Changes'][-1]['Seq'], c['Last'])
648
649 # Check the order in which the creation events are reported
650 self.assertEqual(c['Changes'][0]['ChangeType'], 'NewInstance')
651 self.assertEqual(c['Changes'][1]['ChangeType'], 'NewSeries')
652 self.assertEqual(c['Changes'][2]['ChangeType'], 'NewStudy')
653 self.assertEqual(c['Changes'][3]['ChangeType'], 'NewPatient')
654
655 c = DoGet(_REMOTE, '/extended-api-v1/changes?type=NewInstance')
656 self.assertEqual(1, len(c['Changes']))
657 self.assertEqual(begin-3, c['Last'])
658
659 c = DoGet(_REMOTE, '/extended-api-v1/changes?type=NewPatient')
660 self.assertEqual(1, len(c['Changes']))
661 self.assertEqual(begin, c['Last'])
662
663 UploadFolder(_REMOTE, 'Knee/T1')
664 UploadFolder(_REMOTE, 'Knee/T2')
665
666 # 1000 New Instance changes -> all 50 shall be reported
667 c = DoGet(_REMOTE, '/extended-api-v1/changes', { 'type': 'NewInstance', 'since' : begin, 'limit' : 1000 })
668 self.assertEqual(50, len(c['Changes']))
669 self.assertLess(begin, c['Changes'][0]['Seq'])
670 self.assertTrue(c['Done'])
671 lastFromAll = c['Last']
672
673 # Only 10 New Instance changes -> only 10 shall be reported
674 c = DoGet(_REMOTE, '/extended-api-v1/changes', { 'type': 'NewInstance', 'since' : begin, 'limit' : 10 })
675 self.assertEqual(10, len(c['Changes']))
676 self.assertFalse(c['Done'])
677 lastFrom10 = c['Last']
678 self.assertLess(lastFrom10, lastFromAll)
679
680 # between begin and begin+10 with a max of 10 and a filter -> less than 10 NewInstance since there are other changes in this range
681 c = DoGet(_REMOTE, '/extended-api-v1/changes', { 'type': 'NewInstance', 'since' : begin, 'to': begin+10, 'limit' : 10 })
682 self.assertLess(len(c['Changes']), 10)
683 self.assertTrue(c['Done']) # we have received ALL NewInstance that are between since and to so we consider it's done
684 lastFrom10 = c['Last']
685 self.assertLess(lastFrom10, lastFromAll)
686
687 # test with only 'to' -> all 50 shall be reported
688 c = DoGet(_REMOTE, '/extended-api-v1/changes', { 'type': 'NewInstance', 'to': lastFromAll, 'limit' : 50 })
689 self.assertEqual(lastFromAll, c['Changes'][-1]['Seq'])
690 self.assertEqual(50, len(c['Changes']))
691 self.assertFalse(c['Done'])
692 lastFromTo = c['Last']
693 self.assertLess(lastFrom10, lastFromTo)
627 694
628 695
629 def test_archive(self): 696 def test_archive(self):
630 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm') 697 UploadInstance(_REMOTE, 'Knee/T1/IM-0001-0001.dcm')
631 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm') 698 UploadInstance(_REMOTE, 'Knee/T2/IM-0001-0001.dcm')