xref: /petsc/config/report_tests.py (revision 8ccd5183338cbf93f0b46c61e37b2657320e4638)
1*8ccd5183SScott Kruger#!/usr/bin/env python
2*8ccd5183SScott Krugerimport glob, os
3*8ccd5183SScott Krugerimport optparse
4*8ccd5183SScott Kruger"""
5*8ccd5183SScott KrugerQuick script for parsing the output of the test system and summarizing the results.
6*8ccd5183SScott Kruger"""
7*8ccd5183SScott Kruger
8*8ccd5183SScott Krugerdef summarize_results(directory):
9*8ccd5183SScott Kruger  ''' Loop over all of the results files and summarize the results'''
10*8ccd5183SScott Kruger  startdir=os.path.realpath(os.path.curdir)
11*8ccd5183SScott Kruger  os.chdir(directory)
12*8ccd5183SScott Kruger  summary={'total':0,'success':0,'failed':0,'failures':'','todo':0,'skip':0}
13*8ccd5183SScott Kruger  for cfile in glob.glob('*.counts'):
14*8ccd5183SScott Kruger    sh=open(cfile,"r"); fileStr=sh.read(); sh.close()
15*8ccd5183SScott Kruger    for line in fileStr.split('\n'):
16*8ccd5183SScott Kruger      if not line: break
17*8ccd5183SScott Kruger      try:
18*8ccd5183SScott Kruger        var,val=line.split()
19*8ccd5183SScott Kruger        if not val.strip(): continue
20*8ccd5183SScott Kruger        val=int(val)
21*8ccd5183SScott Kruger      except:
22*8ccd5183SScott Kruger        var=line.split()[0]
23*8ccd5183SScott Kruger        val=" ".join(line.split()[1:])+" "
24*8ccd5183SScott Kruger      summary[var]=summary[var]+val
25*8ccd5183SScott Kruger
26*8ccd5183SScott Kruger  print "# FAILED "+summary['failures']
27*8ccd5183SScott Kruger  total=str(summary['total'])
28*8ccd5183SScott Kruger
29*8ccd5183SScott Kruger  for t in "success failed todo skip".split():
30*8ccd5183SScott Kruger    percent=summary[t]/float(summary['total'])*100
31*8ccd5183SScott Kruger    prcnt="{:3.1f}".format(percent)
32*8ccd5183SScott Kruger    print "# "+t+" "+ str(summary[t])+"/"+total+" tests ("+prcnt+'%)'
33*8ccd5183SScott Kruger  return
34*8ccd5183SScott Kruger
35*8ccd5183SScott Krugerdef main():
36*8ccd5183SScott Kruger    parser = optparse.OptionParser(usage="%prog [options]")
37*8ccd5183SScott Kruger    parser.add_option('-d', '--directory', dest='directory',
38*8ccd5183SScott Kruger                      help='Directory containing results of petsc test system',
39*8ccd5183SScott Kruger                      default='counts')
40*8ccd5183SScott Kruger    options, args = parser.parse_args()
41*8ccd5183SScott Kruger
42*8ccd5183SScott Kruger    # Process arguments
43*8ccd5183SScott Kruger    if len(args) > 0:
44*8ccd5183SScott Kruger      parser.print_usage()
45*8ccd5183SScott Kruger      return
46*8ccd5183SScott Kruger
47*8ccd5183SScott Kruger    directory=options.directory
48*8ccd5183SScott Kruger    if not os.path.isdir(directory):
49*8ccd5183SScott Kruger      print directory+' is not a directory'
50*8ccd5183SScott Kruger      return
51*8ccd5183SScott Kruger
52*8ccd5183SScott Kruger    summarize_results(directory)
53*8ccd5183SScott Kruger
54*8ccd5183SScott Krugerif __name__ == "__main__":
55*8ccd5183SScott Kruger        main()
56