update tko
Signed-off-by: Martin J. Bligh <mbligh@google.com>
git-svn-id: http://test.kernel.org/svn/autotest/trunk@663 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/tko/db.py b/tko/db.py
index f2c3af9..e38dc91 100644
--- a/tko/db.py
+++ b/tko/db.py
@@ -1,25 +1,52 @@
-import sqlite, re, os
+import sqlite, re, os, sys
class db:
- def __init__(self):
+ def __init__(self, debug = False):
+ self.debug = debug
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()
+ # if not present, insert statuses
+ self.status_idx = {}
+ self.status_word = {}
+ for s in ['NOSTATUS', 'ERROR', 'ABORT', 'FAIL', 'WARN', 'GOOD']:
+ idx = self.get_status(s)
+ if not idx:
+ self.insert('status', {'word' : s})
+ idx = self.get_status(s)
+ self.status_idx[s] = idx
+ self.status_word[idx] = s
+
+
+ def get_status(self, word):
+ rows = self.select('status_idx', 'status', {'word' : word})
+ if rows:
+ return rows[0][0]
+ else:
+ return None
+
+
+ def dprint(self, value):
+ if self.debug:
+ sys.stderr.write('SQL: ' + str(value) + '\n')
+
def select(self, fields, table, where):
"""\
select fields from table where {dictionary}
"""
cmd = 'select %s from %s' % (fields, table)
+ values = []
if where:
keys = [field + '=%s' for field in where.keys()]
values = [where[field] for field in where.keys()]
- cmd = cmd + ' where ' + 'and'.join(keys)
+ cmd = cmd + ' where ' + ' and '.join(keys)
+ self.dprint('%s %s' % (cmd,values))
self.cur.execute(cmd, values)
return self.cur.fetchall()
@@ -37,22 +64,24 @@
cmd = 'insert into %s (%s) values (%s)' % \
(table, ','.join(fields), ','.join(refs))
+ self.dprint('%s %s' % (cmd,values))
self.cur.execute(cmd, values)
self.con.commit()
def insert_job(self, tag, job):
- self.insert('jobs', {'tag':tag, 'machine':'UNKNOWN'})
+ self.insert('jobs', {'tag':tag, 'machine':job.machine})
job.index = self.find_job(tag)
for test in job.tests:
self.insert_test(job, test)
def insert_test(self, job, test):
- kver = self.insert_kernel_version(test.kernel)
+ kver = self.insert_kernel(test.kernel)
data = {'job_idx':job.index, 'test':test.testname,
- 'subdir':test.dir,
- 'status':test.status, 'reason':test.reason}
+ 'subdir':test.dir, 'kernel_idx':kver,
+ 'status':self.status_idx[test.status],
+ 'reason':test.reason, 'machine':test.machine }
self.insert('tests', data)
@@ -65,7 +94,7 @@
return None
- def insert_kernel_version(self, kernel):
+ def insert_kernel(self, kernel):
kver = self.lookup_kernel(kernel)
if kver:
return kver