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) 118ccd5183SScott Kruger os.chdir(directory) 128ccd5183SScott Kruger summary={'total':0,'success':0,'failed':0,'failures':'','todo':0,'skip':0} 138ccd5183SScott Kruger for cfile in glob.glob('*.counts'): 148ccd5183SScott Kruger sh=open(cfile,"r"); fileStr=sh.read(); sh.close() 158ccd5183SScott Kruger for line in fileStr.split('\n'): 168ccd5183SScott Kruger if not line: break 178ccd5183SScott Kruger try: 188ccd5183SScott Kruger var,val=line.split() 198ccd5183SScott Kruger if not val.strip(): continue 208ccd5183SScott Kruger val=int(val) 218ccd5183SScott Kruger except: 228ccd5183SScott Kruger var=line.split()[0] 23a2766241SScott Kruger lval=len(line.split())-1 24a2766241SScott Kruger if lval==0: continue 25a2766241SScott Kruger val=line.split()[1] 26a2766241SScott Kruger if not val.strip(): continue 27a2766241SScott Kruger append=" ("+str(lval)+"), " if lval>1 else ", " 28a2766241SScott Kruger val=val+append 29a2766241SScott Kruger 308ccd5183SScott Kruger summary[var]=summary[var]+val 318ccd5183SScott Kruger 3268f6ad6bSScott Kruger print "\n# -------------" 3368f6ad6bSScott Kruger print "# Summary " 3468f6ad6bSScott Kruger print "# -------------" 35a2766241SScott Kruger print "# FAILED "+summary['failures'].rstrip(', ') 368ccd5183SScott Kruger total=str(summary['total']) 378ccd5183SScott Kruger 388ccd5183SScott Kruger for t in "success failed todo skip".split(): 398ccd5183SScott Kruger percent=summary[t]/float(summary['total'])*100 40*2a90399fSSatish Balay print ("# "+t+" "+ str(summary[t])+"/"+total+" tests (%3.1f%%)") % (percent) 418ccd5183SScott Kruger return 428ccd5183SScott Kruger 438ccd5183SScott Krugerdef main(): 448ccd5183SScott Kruger parser = optparse.OptionParser(usage="%prog [options]") 458ccd5183SScott Kruger parser.add_option('-d', '--directory', dest='directory', 468ccd5183SScott Kruger help='Directory containing results of petsc test system', 478ccd5183SScott Kruger default='counts') 488ccd5183SScott Kruger options, args = parser.parse_args() 498ccd5183SScott Kruger 508ccd5183SScott Kruger # Process arguments 518ccd5183SScott Kruger if len(args) > 0: 528ccd5183SScott Kruger parser.print_usage() 538ccd5183SScott Kruger return 548ccd5183SScott Kruger 558ccd5183SScott Kruger directory=options.directory 568ccd5183SScott Kruger if not os.path.isdir(directory): 578ccd5183SScott Kruger print directory+' is not a directory' 588ccd5183SScott Kruger return 598ccd5183SScott Kruger 608ccd5183SScott Kruger summarize_results(directory) 618ccd5183SScott Kruger 628ccd5183SScott Krugerif __name__ == "__main__": 638ccd5183SScott Kruger main() 64