blob: 5579fdfd8dfb37030c816255b42182b958d744e7 [file] [log] [blame]
mblighf01eae12007-10-07 00:22:42 +00001#!/usr/bin/python
2print "Content-type: text/html\n"
3import cgi, cgitb, os, sys, re
4sys.stdout.flush()
5cgitb.enable()
6
7tko = os.path.dirname(os.path.realpath(os.path.abspath(sys.argv[0])))
8sys.path.insert(0, tko)
9import db, display, frontend
10
11db = db.db()
12
13def main():
14
15 form = cgi.FieldStorage()
16 kernel_idx = form["kernel"].value
17 kernel = frontend.kernel.select(db, {'kernel_idx' : kernel_idx })[0]
18 groups = frontend.group.select(db)
19
20 print_kernel_groups_vs_tests(kernel, groups)
21
22
23def print_kernel_groups_vs_tests(kernel, groups):
24 # first we have to get a list of all run tests across all machines
25 all_tests = set()
26 results = {} # will be a 3d hash [group][test][status] = count
27 for group in groups:
28 results[group] = {}
29 for test in group.tests():
30 all_tests.add(test.subdir)
31 results[group][test.subdir] = {}
32 count = results[group][test.subdir].get(test.status_num, 0)
33 results[group][test.subdir][test.status_num] = count + 1
34 all_tests = list(all_tests)
35
36 print '<h1>%s</h1>' % kernel.printable
37
38 header_row = [ display.box('Test', header=True) ]
39 for group in groups:
40 header_row.append( display.box(group, header=True) )
41
42 matrix = [header_row]
43 for testname in all_tests:
44 row = [display.box(re.sub(r'kernel.', r'kernel<br>', testname))]
45 for group in groups:
46 if not results[group].has_key(testname):
47 continue
48 worst = sorted(results[group][testname].keys())[0]
49 html = display.status_html(db, results[group][testname])
50 box = display.box(html, db.status_word[worst])
51 row.append(box)
52 matrix.append(row)
53 matrix.append(header_row)
54
55 display.print_table(matrix)
56
57main()