xref: /petsc/config/report_tests.py (revision 100ef3c7101de476ebcae0835cb865fbd919eaca)
18ccd5183SScott Kruger#!/usr/bin/env python
28ccd5183SScott Krugerimport glob, os
38ccd5183SScott Krugerimport optparse
48ccd5183SScott Kruger"""
58ccd5183SScott KrugerQuick script for parsing the output of the test system and summarizing the results.
68ccd5183SScott Kruger"""
78ccd5183SScott Kruger
88ccd5183SScott Krugerdef summarize_results(directory):
98ccd5183SScott Kruger  ''' Loop over all of the results files and summarize the results'''
108ccd5183SScott Kruger  startdir=os.path.realpath(os.path.curdir)
116d7e7da8SJed Brown  try:
128ccd5183SScott Kruger    os.chdir(directory)
136d7e7da8SJed Brown  except OSError:
146d7e7da8SJed Brown    print('# No tests run')
156d7e7da8SJed Brown    return
16*100ef3c7SJed Brown  summary={'total':0,'success':0,'failed':0,'failures':[],'todo':0,'skip':0}
178ccd5183SScott Kruger  for cfile in glob.glob('*.counts'):
18*100ef3c7SJed Brown    with open(cfile, 'r') as f:
19*100ef3c7SJed Brown      for line in f:
20*100ef3c7SJed Brown        l = line.split()
21*100ef3c7SJed Brown        summary[l[0]] += l[1:] if l[0] == 'failures' else int(l[1])
22a2766241SScott Kruger
23*100ef3c7SJed Brown  print("\n# -------------")
24*100ef3c7SJed Brown  print("#   Summary    ")
25*100ef3c7SJed Brown  print("# -------------")
26*100ef3c7SJed Brown  print("# FAILED " + ' '.join(summary['failures']))
278ccd5183SScott Kruger
288ccd5183SScott Kruger  for t in "success failed todo skip".split():
298ccd5183SScott Kruger    percent=summary[t]/float(summary['total'])*100
30*100ef3c7SJed Brown    print("# %s %d/%d tests (%3.1f%%)" % (t, summary[t], summary['total'], percent))
318ccd5183SScott Kruger  return
328ccd5183SScott Kruger
338ccd5183SScott Krugerdef main():
348ccd5183SScott Kruger    parser = optparse.OptionParser(usage="%prog [options]")
358ccd5183SScott Kruger    parser.add_option('-d', '--directory', dest='directory',
368ccd5183SScott Kruger                      help='Directory containing results of petsc test system',
378ccd5183SScott Kruger                      default='counts')
388ccd5183SScott Kruger    options, args = parser.parse_args()
398ccd5183SScott Kruger
408ccd5183SScott Kruger    # Process arguments
418ccd5183SScott Kruger    if len(args) > 0:
428ccd5183SScott Kruger      parser.print_usage()
438ccd5183SScott Kruger      return
448ccd5183SScott Kruger
456d7e7da8SJed Brown    summarize_results(options.directory)
468ccd5183SScott Kruger
478ccd5183SScott Krugerif __name__ == "__main__":
488ccd5183SScott Kruger        main()
49