13 if __name__ == 
"__main__":
 
   15     parser = argparse.ArgumentParser(description=
'Coolr browser.', add_help=
False)
 
   16     parser.add_argument(
'--input', required=
True,help=
'Input file in text folrat. It is output of athena job. It require has lines with info about load data: INFO Retrieved object: folder ')
 
   17     parser.add_argument(
'--gtag', required=
True,
 
   18                         help=
'Global tag for CREST')
 
   19     parser.add_argument(
'--gcooltag', required=
True,
 
   20                         help=
'Global tag for COOL')
 
   21     parser.add_argument(
'--host', default=
'http://crest-j23.cern.ch',
 
   22                         help=
'Host of the CREST service (default: http://crest-j23.cern.ch)')
 
   23     parser.add_argument(
'--port', default=
'8080',
 
   24                         help=
'Port of the CREST service (default: 8080)')
 
   25     parser.add_argument(
'--out', default=
'log.out',
 
   26                         help=
'Out file for logs (default: log.out)')
 
   27     parser.add_argument(
'--path', default=
'cool_crest_compare',
 
   28                         help=
'Path to compare (default: cool_crest_compare)')
 
   30     args = parser.parse_args()
 
   31     server = 
"{0}:{1}".
format(args.host, args.port)
 
   36     if not path.exists(args.input) 
or not path.isfile(args.input):
 
   37       print(
"Error: input file is not exists")
 
   41     with open(args.input) 
as inp_file:
 
   42         while line := inp_file.readline():
 
   43             if line.rstrip().
find(
'/TagInfo<metaOnly/>')>0:
 
   50                         sTag=e[e.find(
'<tag>')+5:]
 
   51                         if sTag.find(
'</tag>')>0:
 
   52                                 sTag=sTag[:sTag.find(
'</tag>')]
 
   54                     db=e[e.find(
'<db>')+4:]
 
   55                     db=db[:db.find(
'</db>')]
 
   57                         e=e[e.find(
'</db>')+5:]
 
   58                     folder = e[e.find(
'/'):]
 
   59                     if folder.find(
'<')>-1:
 
   60                         folder = folder[:folder.find(
'<')]
 
   61                     elif folder.find(
' ')>-1:
 
   62                         folder = folder[:folder.find(
' ')]
 
   64                         folder = folder[:folder.find(
'\'')]
 
   66                     data[folder.strip()]=el
 
   67             if line.rstrip().
find(
'INFO Retrieved object: folder ')>0:
 
   68                 st = line.rstrip()[line.rstrip().
find(
'INFO Retrieved object: folder '):]
 
   69                 st = st[st.find(
'/'):]
 
   70                 sFolder = st[:st.find(
' ')]
 
   71                 st= st[st.find(
'IOV ')+4:]
 
   73                 el = data[sFolder.strip()]
 
   77     print(
"List of commands for compare:")
 
   79     for elem 
in data.keys():
 
   81         if 'timestamp' not in js:
 
   83         command = appPath + 
' -g '+ args.gtag+
' -G '+args.gcooltag+ 
' -f '+elem + 
' -c "'+ js[
'db']+
'" -t ' + js[
'timestamp']+
' -C '+server
 
   85             if js[
'tag'].
find(
'HEAD')>=0:
 
   87         command +=
' >>'+fOut+
' 2>&1' 
   89         with open(fOut, 
'a') 
as f:
 
   90           print(
'Compare folder name:', elem, file=f)
 
   94     print(
"Problem folders:")
 
   99     with open(fOut) 
as log_file:
 
  100         while line := log_file.readline():
 
  101             if line.find(
'Compare folder name:')>-1:
 
  104                     command = appPath + 
' -g '+ args.gtag+
' -G '+args.gcooltag+ 
' -f '+ curFolder + 
' -c '+ js[
'db']+
' -t ' + js[
'timestamp']+
' -C '+server
 
  107                 curFolder=line.rstrip()[line.rstrip().
find(
'Compare folder name:')+20:]
 
  108                 curFolder=curFolder.lstrip()
 
  109             if line.rstrip().
find(
'is the same in COOL and CREST')>0:
 
  111             if line.find(
'CREST output file problem')>-1:
 
  113                     crestProblem.append(curFolder)
 
  114             if line.find(
'COOL output file problem')>-1:
 
  116                     coolProblem.append(curFolder)
 
  117             if line.rstrip().
find(
'is different in COOL and CREST')>0:
 
  118                 fld = line.rstrip()[line.rstrip().
find(
'\"')+1:]
 
  119                 fld = fld[:fld.find(
'\"')]
 
  120                 difFolder.append(fld)
 
  122                 command = appPath + 
' -g '+ args.gtag+
' -G '+args.gcooltag+ 
' -f '+ fld + 
' -c '+ js[
'db']+
' -t ' + js[
'timestamp']+
' -C '+server
 
  125             if line.rstrip().
find(
'NO IOVs retrieved for the folder')>0:
 
  126                 fld = line.rstrip()[(line.rstrip().
find(
'NO IOVs retrieved for the folder')+32):]
 
  129                 command = appPath + 
' -g '+ args.gtag+
' -G '+args.gcooltag+ 
' -f '+ fld + 
' -c '+ js[
'db']+
' -t ' + js[
'timestamp']+
' -C '+server
 
  132     print(
"Total number of folders:",len(data),
" Different data:",len(difFolder),
" Cool problem:",len(coolProblem),
" Crest problem:",len(crestProblem))
 
  134         print(
"Different data:",difFolder)
 
  135     if len(coolProblem)>0:
 
  136         print(
"Different data:",coolProblem)
 
  137     if len(crestProblem)>0:
 
  138         print(
"Different data:",crestProblem)