tko updates
git-svn-id: http://test.kernel.org/svn/autotest/trunk@661 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/tko/README b/tko/README
deleted file mode 100644
index af9aadc..0000000
--- a/tko/README
+++ /dev/null
@@ -1 +0,0 @@
-sqlite3 tko_db < create_db
diff --git a/tko/create_db b/tko/create_db
index bbff238..256c483 100644
--- a/tko/create_db
+++ b/tko/create_db
@@ -1,9 +1,9 @@
BEGIN TRANSACTION;
-- kernel versions
-CREATE TABLE kversions (
-kversion INTEGER PRIMARY KEY,
-kversion_hash VARCHAR(35), -- Hash of base + all patches
+CREATE TABLE kernels (
+kernel_idx INTEGER PRIMARY KEY,
+kernel_hash VARCHAR(35), -- Hash of base + all patches
base VARCHAR(30), -- Base version without patches
printable VARCHAR(100) -- Full version with patches
);
@@ -17,7 +17,7 @@
-- One entry per patch used, anywhere
CREATE TABLE patches (
-kversion INTEGER, -- index number
+kernel_idx INTEGER, -- index number
name VARCHAR(80), -- short name
url VARCHAR(300), -- full URL
hash VARCHAR(35)
@@ -29,7 +29,7 @@
job_idx INTEGER, -- ref to job table
test VARCHAR(30), -- name of test
subdir VARCHAR(60), -- subdirectory name
-kversion INTEGER, -- kernel version test was AGAINST
+kernel_idx INTEGER, -- kernel test was AGAINST
status INTEGER, -- test status
reason VARCHAR(100) -- reason for test status
);
@@ -49,14 +49,6 @@
value FLOAT -- attribute value (eg 700.1)
);
--- test performance results
-CREATE TABLE results (
-job_idx INTEGER, -- ref to job table
-test VARCHAR(30), -- name of test
-subdir VARCHAR(60) PRIMARY KEY, -- subdirectory name
-kversion INTEGER -- kernel version test was AGAINST
-);
-
-- status key
CREATE TABLE status (
status INTEGER PRIMARY KEY, -- numerical status
diff --git a/tko/db.py b/tko/db.py
index cd547e8..b6686cc 100644
--- a/tko/db.py
+++ b/tko/db.py
@@ -2,6 +2,8 @@
class db:
def __init__(self):
+ if not os.path.exists('tko_db'):
+ os.system('sqlite tko_db < create_db')
self.con = sqlite.connect('tko_db')
self.cur = self.con.cursor()
@@ -54,9 +56,9 @@
self.insert('tests', data)
- def lookup_kversion(self, kernel):
- rows = self.select('kversion', 'kversions',
- {'kversion_hash':kernel.kversion_hash})
+ def lookup_kernel(self, kernel):
+ rows = self.select('kernel_idx', 'kernels',
+ {'kernel_hash':kernel.kernel_hash})
if rows:
return rows[0][0]
else:
@@ -64,12 +66,14 @@
def insert_kernel_version(self, kernel):
- kver = self.lookup_kversion(kernel)
+ kver = self.lookup_kernel(kernel)
if kver:
return kver
- self.insert('kversions', {'base':kernel.base,
- 'kversion_hash':kernel.kversion_hash})
- kver = self.lookup_kversion(kernel)
+ self.insert('kernels', {'base':kernel.base,
+ 'kernel_hash':kernel.kernel_hash,
+ 'printable':kernel.base})
+ # WARNING - incorrectly shoving base into printable here.
+ kver = self.lookup_kernel(kernel)
for patch in kernel.patches:
self.insert_patch(kver, patch)
return kver
@@ -78,7 +82,7 @@
def insert_patch(self, kver, patch):
print patch.reference
name = os.path.basename(patch.reference)[:80]
- self.insert('patches', {'kversion': kver,
+ self.insert('patches', {'kernel_idx': kver,
'name':name,
'url':patch.reference,
'hash':patch.hash})
diff --git a/tko/frontend.py b/tko/frontend.py
new file mode 100755
index 0000000..a7bedbb
--- /dev/null
+++ b/tko/frontend.py
@@ -0,0 +1,51 @@
+#!/usr/bin/python
+import os, re, db
+
+statuses = ['NOSTATUS', 'ERROR', 'ABORT', 'FAIL', 'WARN', 'GOOD']
+status_num = {}
+for x in range(0, len(statuses)):
+ status_num[statuses[x]] = x
+
+
+class job:
+ def __init__(self):
+ self.idx = None
+ self.tag = None
+ self.machine = None
+ self.tests = []
+
+
+class kernel:
+ fields = ['kernel_idx', 'kernel_hash', 'base', 'printable']
+
+ def __init__(self, db, where):
+ self.db = db
+ self.base = None
+ self.patches = []
+
+ db.select(fields, kernels,
+
+
+class patch:
+ def __init__(self):
+ self.spec = spec
+ self.reference = reference
+ self.hash = hash
+
+
+class test:
+ def __init__(self, dir, status, reason, kernel):
+ self.dir = dir
+ self.status = status
+ self.reason = reason
+ self.keyval = os.path.join(dir, 'results/keyval')
+ self.iterations = []
+ self.testname = re.sub(r'\..*', '', self.dir)
+ self.kernel = kernel
+
+
+class iteration:
+ def __init__(self, index, lines):
+ self.index = index
+ self.keyval = {}
+
diff --git a/tko/machine_kernel b/tko/machine_kernel
new file mode 100755
index 0000000..2b47047
--- /dev/null
+++ b/tko/machine_kernel
@@ -0,0 +1,59 @@
+#!/usr/bin/python
+import os, re, parse, sys
+
+db = db.db()
+
+machines = sys.argv[1:]
+kernels = select (kernel, printable) from kernels
+
+def print_machines_row(machines):
+ print "<tr>"
+ print "<th>Version</th>"
+ for machine in machines:
+ print "<th>%s</th>" % machine
+ print "</tr>"
+ print ""
+
+
+def print_kernel_machine(kernel_idx, machine):
+ status = None
+ tests = 'select * from tests where kernel = key'
+ # (test_idx, job_idx, test, subdir, status, reason) = test
+ for test in tests:
+ if not status or test.status < status:
+ status = test.status
+ html = ''
+ for test in tests:
+ html .= '%s %s' % (subdir, status)
+
+
+status_colour = {
+ 'GOOD' : '#66ff66', # green
+ 'WARN' : '#fffc00', # yellow
+ 'FAIL' : '#fff666', # red
+ 'ABORT' : '#ff6666', # red
+}
+
+def print_colored_box(status, html):
+ print "<td bgcolor=%s>" % status ? status_colour[status] : '#ffffff'
+ print html
+ print "</td>"
+
+
+print '<table cellpadding=5 border=1 class="boldtable">'
+print_machines_row()
+
+for (kernel_idx, printable) in kernels:
+ print "<tr>"
+ print "<td>%s</td>" % printable
+ for machine in machines:
+ print_kernel_machine(kernel_idx, machine)
+ print "</tr>"
+ print ""
+
+print_machines_row()
+print "</table>"
+
+
+
+
diff --git a/tko/parse.py b/tko/parse.py
index d3a5894..1ca6524 100755
--- a/tko/parse.py
+++ b/tko/parse.py
@@ -70,7 +70,7 @@
print words
self.patches.append(patch(*words[0:]))
# patch_hashes.append(words[2])
- self.kversion_hash = self.get_kver_hash(self.base, patch_hashes)
+ self.kernel_hash = self.get_kver_hash(self.base, patch_hashes)
def get_kver_hash(self, base, patch_hashes):