648 def BadChan_CheckSavedDatabaseContent(self,dbName,dbSvc,dbFolderName,selectedTag):
649
650
651 try:
652 dbase = dbSvc.openDatabase(dbName,False)
653 except Exception as e:
654 print ('Problem opening database',e)
655 sys.exit(-1)
656 print ("Opened database",dbName)
657
658
659 try:
660 f = dbase.getFolder(dbFolderName)
661 print ("Analysing Folder " + str(dbFolderName))
662 except Exception:
663 print ("Skipping " + str(dbFolderName))
664 return
665
666
667 tags = f.listTags()
668
669
670 if tags.size()==0:
671 tags.push_back("notag")
672
673 print ("for tags ",)
674 for tag in tags:
675 print (tag)
676
677 bTagFound=False
678 bSavingProcessError=False
679
680 for tag in tags:
681
682 if tag!=selectedTag:
683 continue
684
685 bTagFound=True
686
687 f.countObjects( cool.ValidityKeyMin,cool.ValidityKeyMax,cool.ChannelSelection.all())
688 objs = f.browseObjects( cool.ValidityKeyMin,cool.ValidityKeyMax,cool.ChannelSelection.all())
689 i = 0
690 while objs.hasNext():
691 obj = objs.next()
692 print ("Found object", i, end='')
693 print ("since [r,l]: [", obj.since() >> 32,',',obj.since()%0x100000000,']', end='')
694 print ("until [r,l]: [", obj.until() >> 32,',',obj.until()%0x100000000,']', end='')
695 print ("payload", obj.payload(), end='')
696 print ("chan",obj.channelId() )
697
698
699 payload=obj.payload()
700 channelSize=payload['ChannelSize']
701 statusWordSize=payload['StatusWordSize']
702 endianness=payload['Endianness']
703 version=payload['Version']
704 blob=payload['Blob']
705
706
707 vect_BadChanEntry=self.nspace_LArBadChannelDBTools.decodeBlob(blob,channelSize,statusWordSize,endianness,version,
708 self.nspace_LArBadChannelDBTools.getDefaultMsgStream())
709
710
711 sChannelDict,sChannelDict_Status=self.BadChan_TransformEntryIntoDictionnary(vect_BadChanEntry)
712
713 sChannelKey=obj.channelId()
714 HWidChecked={}
715 for key in sChannelDict.keys():
716 HWidChecked[key]=0
717
718 print (" -> SQlite database content vs initial data : channel ", sChannelKey)
719
720
721 listHWidKeys=[x for x in sChannelDict.keys()]
722 for x in self.dict_vectBadChanEntry_Status[sChannelKey].keys():
723 if x not in listHWidKeys:
724 listHWidKeys.append(x)
725 listHWidKeys.sort()
726 iChanCmpt=0
727 for keyHWid in listHWidKeys:
728
729 try:
730 sChanName,badChan_word,sValueInit=sChannelDict[keyHWid]
731 except Exception:
732 sChanName="UNDEFINED"
733 badChan_word=0
734
735 sSuffix="OK"
736 if self.dict_vectBadChanEntry_Status[sChannelKey][keyHWid]==STATUS_INIT:
737 if sChannelDict[keyHWid][1]!=self.dict_vectBadChanEntry_Init[sChannelKey][keyHWid][1]:
738 sPrefix="ERR"
739 sSuffix=" no modification was done"+keyHWid
740 bSavingProcessError=True
741 else:
742 sPrefix=" "
743 self.BadChan_DisplayBadChanEntryLine(sPrefix,iChanCmpt,keyHWid,sChanName,badChan_word,sSuffix)
744
745 if self.dict_vectBadChanEntry_Status[sChannelKey][keyHWid]==STATUS_REMOVED:
746 if keyHWid in sChannelDict:
747 sPrefix="ERR"
748 sSuffix=" deletion not taken into accout"+keyHWid
749 bSavingProcessError=True
750 else:
751 sPrefix=STATUS_REMOVED
752 sChanName,badChan_word,sValue_Init=self.dict_vectBadChanEntry[sChannelKey][keyHWid]
753 self.BadChan_DisplayBadChanEntryLine(sPrefix,iChanCmpt,keyHWid,sChanName,badChan_word,sSuffix)
754
755 if self.dict_vectBadChanEntry_Status[sChannelKey][keyHWid]==STATUS_NEW:
756 if sChannelDict[keyHWid][1]!=self.dict_vectBadChanEntry[sChannelKey][keyHWid][1]:
757 sPrefix="ERR"
758 sSuffix=" error while saving new status "+keyHWid
759 bSavingProcessError=True
760 else:
761 sPrefix=STATUS_NEW
762 self.BadChan_DisplayBadChanEntryLine(sPrefix,iChanCmpt,keyHWid,sChanName,badChan_word,sSuffix)
763
764 if self.dict_vectBadChanEntry_Status[sChannelKey][keyHWid]==STATUS_MODIFIED:
765 if sChannelDict[keyHWid][1]!=self.dict_vectBadChanEntry[sChannelKey][keyHWid][1]:
766 sPrefix="ERR"
767 sSuffix=" error while saving modified status "+keyHWid
768 bSavingProcessError=True
769 else:
770 sPrefix=STATUS_MODIFIED
771 self.BadChan_DisplayBadChanEntryLine(sPrefix,iChanCmpt,keyHWid,sChanName,badChan_word,sSuffix)
772
773 HWidChecked[keyHWid]=1
774 iChanCmpt += 1
775
776 for key in self.dict_vectBadChanEntry_Status[sChannelKey].keys():
777 if key not in HWidChecked and self.dict_vectBadChanEntry_Status[sChannelKey][key]!=STATUS_REMOVED:
778 print ("ERROR : initial ",key," has not been saved")
779 elif key in HWidChecked and HWidChecked[key]==0:
780 print ("ERROR : ",key," has not been checked")
781
782 i += 1
783
784
785 objs.close()
786
787 if bTagFound is False:
788 print ("ERROR : tag "+selectedTag+" not found in saved SQlite file")
789
790 if bSavingProcessError is True:
791 print ("ERROR : found while making comparison between corrected and saved datas" )
792
793
794 dbase.closeDatabase()
795
796
797
798