mbligh | bfec522 | 2007-09-14 16:58:57 +0000 | [diff] [blame^] | 1 | import os, re, parse, sys, db, frontend |
| 2 | |
| 3 | db = db.db() # db.db(debug=True) |
| 4 | |
| 5 | |
| 6 | def print_kernel_machine(kernel, machine): |
| 7 | status = None |
| 8 | status_word = '' |
| 9 | tests = frontend.test.select(db, { 'kernel_idx' : kernel.idx , |
| 10 | 'machine' : machine }) |
| 11 | for t in tests: |
| 12 | if not status or t.status_num < status: |
| 13 | status = t.status_num |
| 14 | status_word = db.status_word[status] |
| 15 | # lines = ['%s %s<br>' % (t.subdir, t.status_word) for t in tests] |
| 16 | # print_colored_box(status_word, '\n'.join(lines)) |
| 17 | link = 'machine_kernel_test.cgi?machine=%s&kernel=%s' % \ |
| 18 | (machine, kernel.idx) |
| 19 | html = '<a href="%s">%s</a>' % (link, status_word) |
| 20 | print_colored_box(status_word, html) |
| 21 | |
| 22 | |
| 23 | def print_colored_box(status, html): |
| 24 | print "<td bgcolor=%s>" % frontend.status_colour[status] |
| 25 | print html |
| 26 | print "</td>" |
| 27 | |
| 28 | |
| 29 | def print_machines_row(machines): |
| 30 | print "<tr>" |
| 31 | print "<th>Version</th>" |
| 32 | for machine in machines: |
| 33 | print "<th>%s</th>" % machine |
| 34 | print "</tr>" |
| 35 | print "" |
| 36 | |
| 37 | |
| 38 | def print_machine_vs_kernel(machines): |
| 39 | print '<table cellpadding=5 border=1 class="boldtable">' |
| 40 | print_machines_row(machines) |
| 41 | |
| 42 | for kernel in frontend.kernel.select(db): |
| 43 | print "<tr>" |
| 44 | print "<td>%s</td>" % kernel.printable |
| 45 | for machine in machines: |
| 46 | print_kernel_machine(kernel, machine) |
| 47 | print "</tr>" |
| 48 | print "" |
| 49 | |
| 50 | print_machines_row(machines) |
| 51 | print "</table>" |
| 52 | |
| 53 | |
| 54 | def print_kernel_machines_vs_test(machines, kernel_idx): |
| 55 | # first we have to get a list of all run tests across all machines |
| 56 | all_tests = {} |
| 57 | results = {} |
| 58 | for machine in machines: |
| 59 | where = { 'kernel_idx' : kernel_idx , 'machine' : machine } |
| 60 | tests = frontend.test.select(db, where) |
| 61 | results[machine] = tests |
| 62 | for test in tests: |
| 63 | all_tests[test.subdir] = True |
| 64 | test_list = sorted(all_tests.keys()) |
| 65 | |
| 66 | kernel = frontend.kernel.select(db, {'kernel_idx' : kernel_idx })[0] |
| 67 | print '<h1>%s</h1>' % kernel.printable |
| 68 | |
| 69 | print '<table cellpadding=5 border=1 class="boldtable">' |
| 70 | # First let's get the header row |
| 71 | print "<tr>" |
| 72 | print "<td></td>" |
| 73 | for testname in test_list: |
| 74 | print "<td>%s</td>" % testname |
| 75 | print "</tr>" |
| 76 | |
| 77 | for machine in machines: |
| 78 | print "\n<tr>" |
| 79 | print "<td>%s</td>" % machine |
| 80 | tests = results[machine] |
| 81 | for test in tests: |
| 82 | print_colored_box(test.status_word, test.status_word) |
| 83 | print "</tr>" |
| 84 | print '</table>' |