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