kernel: add a boot validation step post boot
When requesting a boot via a kernel generate a kernel identifier
for that kernel and a command line validator (the time). These
are then checked in a post boot validation stepper "step" which
is inserted before the users next step.
Signed-off-by: Andy Whitcroft <apw@shadowen.org>
git-svn-id: http://test.kernel.org/svn/autotest/trunk@657 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/tko/db.py b/tko/db.py
index 270f077..cd547e8 100644
--- a/tko/db.py
+++ b/tko/db.py
@@ -1,4 +1,4 @@
-import sqlite, re
+import sqlite, re, os
class db:
def __init__(self):
@@ -40,26 +40,48 @@
def insert_job(self, tag, job):
- # is kernel version in tree?
self.insert('jobs', {'tag':tag, 'machine':'UNKNOWN'})
job.index = self.find_job(tag)
for test in job.tests:
self.insert_test(job, test)
+
def insert_test(self, job, test):
- # WE ARE MISSING KVERSION HERE!!!!
+ kver = self.insert_kernel_version(test.kernel)
data = {'job_idx':job.index, 'test':test.testname,
'subdir':test.dir,
'status':test.status, 'reason':test.reason}
self.insert('tests', data)
- def lookup_kernel_version(self, base, patches):
- return self.select('kversion', 'kversions', {'base':base})[0]
+ def lookup_kversion(self, kernel):
+ rows = self.select('kversion', 'kversions',
+ {'kversion_hash':kernel.kversion_hash})
+ if rows:
+ return rows[0][0]
+ else:
+ return None
- def insert_kernel_version(self, base, patches):
- self.insert('kversions', {'base': base})
+ def insert_kernel_version(self, kernel):
+ kver = self.lookup_kversion(kernel)
+ if kver:
+ return kver
+ self.insert('kversions', {'base':kernel.base,
+ 'kversion_hash':kernel.kversion_hash})
+ kver = self.lookup_kversion(kernel)
+ for patch in kernel.patches:
+ self.insert_patch(kver, patch)
+ return kver
+
+
+ def insert_patch(self, kver, patch):
+ print patch.reference
+ name = os.path.basename(patch.reference)[:80]
+ self.insert('patches', {'kversion': kver,
+ 'name':name,
+ 'url':patch.reference,
+ 'hash':patch.hash})
def find_job(self, tag):