Package Ganga :: Package Core :: Package JobRepository :: Module TestAnalyser
[hide private]
[frames] | no frames]

Source Code for Module Ganga.Core.JobRepository.TestAnalyser

  1  ##!/usr/bin/env python 
  2  ################################################################################ 
  3  # Ganga Project. http://cern.ch/ganga 
  4  # 
  5  # $Id: TestAnalyser.py,v 1.1 2008-07-17 16:40:50 moscicki Exp $ 
  6  ################################################################################ 
  7  import os, sys 
  8  import re 
  9   
 10  ##tests = ['register',  'checkout(10)', 'checkout(All)', 'commit', 
 11  ##         'setStatus', 'getStatus(10)', 'getId', 'delete'] 
 12  tests = ['register',  'checkout', 'commit', 'delete'] 
 13   
 14  ################################################################################     
15 -def analyse(output_dir):
16 pps = '-s->(.*)<-s-' 17 ppj = 'users_(.*)__jobs_(.*)__subjobs_(.*)' 18 m = re.search(ppj, output_dir) 19 if m: 20 nn = int(m.group(1)) 21 njobs = int(m.group(2)) 22 sjobs = int(m.group(3)) 23 else: 24 nn = 1 25 njobs = 1 26 sjobs = 0 27 28 ddd = {} 29 for t in tests: 30 ddd[t] = 0. 31 32 files = os.listdir(output_dir) 33 lf = len(files) 34 for f in files: 35 if f == 'analysis.txt': 36 continue 37 ff = file(os.path.join(output_dir, f), 'r') 38 ll = ff.readlines() 39 ff.close() 40 itr = iter(tests) 41 for l in ll: 42 m = re.search(pps, l) 43 if m: 44 ddd[itr.next()]+=float(m.group(1))/lf 45 for k in ddd: 46 ddd[k] = (ddd[k]/nn, ddd[k]/nn/njobs, ddd[k]/nn/njobs/(sjobs + 1)) 47 ddd['users'] = nn 48 ddd['jobs'] = njobs 49 ddd['sjobs'] = sjobs 50 return ddd
51 52 ################################################################################
53 -def compare(x, y):
54 xn = x['users'] 55 xj = x['jobs'] 56 xs = x['sjobs'] 57 yn = y['users'] 58 yj = y['jobs'] 59 ys = y['sjobs'] 60 if xn < yn: return -1 61 elif xn == yn: 62 if xj < yj: return -1 63 elif xj == yj: 64 if xs < ys: return -1 65 elif xs == ys: return 0 66 else: return 1 67 else: return 1 68 else: return 1
69 70 ################################################################################ 71 if __name__ == '__main__': 72 OUTPUT = raw_input('Enter a name of output dir --->') 73 output_dir = os.getcwd() 74 output_dir = os.path.join(output_dir, OUTPUT) 75 ldict = [] 76 for dd in os.listdir(output_dir): 77 if dd.startswith('users_'): 78 analysis_dir = os.path.join(output_dir, dd) 79 print "analysing %s ...\n" % analysis_dir 80 ddd = analyse(analysis_dir) 81 ldict.append(ddd) 82 83 ldict.sort(compare) 84 85 str1 = "users jobs subjobs" 86 str2 = "%4d %4d %4d " 87 for t in tests: 88 str1 += t.rjust(45) 89 str2 += " (%10.6f %10.6f %10.6f)" 90 str1 += "\n" 91 str2 += "\n" 92 93 f = file(os.path.join(output_dir, "analysis.txt"), "w") 94 try: 95 f.write(str1) 96 97 for ddd in ldict: 98 tt = [ddd['users'], ddd['jobs'], ddd['sjobs']] 99 for t in tests: 100 tt.extend(ddd[t]) 101 f.write(str2 % tuple(tt)) 102 finally: 103 f.close() 104