1
2
3
4
5
6
7 import os, sys
8 import re
9
10
11
12 tests = ['register', 'checkout', 'commit', 'delete']
13
14
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
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