File indexing completed on 2024-11-26 02:34:09
0001
0002
0003 from contentValuesLib import *
0004
0005 class OptionParser(optparse.OptionParser):
0006 """ Option parser class """
0007 def __init__(self):
0008 optparse.OptionParser.__init__(self, usage="%prog [options] root_file ...", version="%prog 0.0.1", conflict_handler="resolve")
0009 self.add_option("--silent", "-s", action="store_true", dest="silent", default=False, help="silent mode: specify return code and exit")
0010 self.add_option("--subsystem", "-c", action="store", type="string", dest="subsystem", default=None, help="Specify test subsystem")
0011
0012 if __name__ == "__main__":
0013
0014
0015 optManager = OptionParser()
0016 (opts, args) = optManager.parse_args()
0017 opts = opts.__dict__
0018
0019
0020 if len(args) == 0:
0021 print("At least one ROOT file must be priovided, use --help for hit")
0022 sys.exit(1)
0023
0024
0025 for rfile in args:
0026 try:
0027 os.stat(rfile)
0028 except:
0029 print("File [", rfile, "] not exists or is not accessible?")
0030 sys.exit(2)
0031
0032 ss = opts['subsystem']
0033
0034
0035 for rfile in args:
0036
0037 (run_number, values) = getSummaryValues(file_name = rfile, shift_type = None, translate = False, filters = None)
0038
0039 if values == None or len(values) == 0:
0040 print("No content summary values found. Skipping file: %s" % rfile)
0041 continue
0042
0043 messages = []
0044 for sub in SUBSYSTEMS.keys():
0045
0046 if not ss == None and not sub == ss:
0047 continue
0048
0049 if sub not in values:
0050 messages.append("%s: missing subsystem!" % sub)
0051 continue
0052
0053 skeys = {}
0054 sfolders = []
0055
0056 for folder in FOLDERS.keys():
0057
0058 if folder not in values[sub]:
0059 messages.append("%s: missing folder EventInfo/%s" % (sub, folder))
0060 continue
0061
0062 if len(values[sub][folder]) == 0:
0063 messages.append("%s: empty folder EventInfo/%s" % (sub, FOLDERS[folder][1]))
0064 continue
0065
0066 sfolders.append(folder)
0067
0068 if 'Summary' not in values[sub][folder]:
0069 messages.append("%s: missing summary value EventInfo/%s" % (sub, FOLDERS[folder][1]))
0070
0071 for key in values[sub][folder].keys():
0072 if key == 'Summary':
0073 continue
0074 if key not in skeys:
0075 skeys[key] = []
0076 skeys[key].append(folder)
0077
0078 for key in skeys:
0079 nfound = []
0080 for folder in sfolders:
0081 if skeys[key].count(folder) == 0: nfound.append(folder)
0082 if len(nfound) > 0:
0083 messages.append("%s: value (%s)/%s not found in (%s)" % (sub, ','.join(skeys[key]), key, ','.join(nfound)))
0084
0085 if not opts['silent']:
0086 for message in sorted(messages): print(message)
0087 print("%d errors found" % len(messages))
0088
0089 if len(messages) > 0: sys.exit(1)
0090
0091 sys.exit(0)
0092
0093