add iterations from keyval properly when parsing
Signed-off-by: Martin J. Bligh <mbligh@google.com>
git-svn-id: http://test.kernel.org/svn/autotest/trunk@679 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/tko/db.py b/tko/db.py
index 8017c9e..3322118 100644
--- a/tko/db.py
+++ b/tko/db.py
@@ -81,10 +81,19 @@
def insert_test(self, job, test):
kver = self.insert_kernel(test.kernel)
data = {'job_idx':job.index, 'test':test.testname,
- 'subdir':test.dir, 'kernel_idx':kver,
+ 'subdir':test.subdir, 'kernel_idx':kver,
'status':self.status_idx[test.status],
'reason':test.reason, 'machine':test.machine }
self.insert('tests', data)
+ test_idx = self.find_test(job.index, test.subdir)
+ data = { 'test_idx':test_idx }
+
+ for i in test.iterations:
+ data['iteration'] = i.index
+ for key in i.keyval:
+ data['attribute'] = key
+ data['value'] = i.keyval[key]
+ self.insert('iteration_result', data)
def lookup_kernel(self, kernel):
@@ -118,6 +127,14 @@
'url':patch.reference,
'hash':patch.hash})
+ def find_test(self, job_idx, subdir):
+ where = { 'job_idx':job_idx , 'subdir':subdir }
+ rows = self.select('test_idx', 'tests', where)
+ if rows:
+ return rows[0][0]
+ else:
+ return None
+
def find_job(self, tag):
rows = self.select('job_idx', 'jobs', {'tag': tag})
diff --git a/tko/parse b/tko/parse
index 641d58c..ed38ce6 100755
--- a/tko/parse
+++ b/tko/parse
@@ -8,7 +8,7 @@
jobs_list = os.listdir(topdir)
jobs = {}
-db = db.db(True)
+db = db.db()
for j in jobs_list:
print 'looking for ' + j
@@ -22,5 +22,5 @@
continue
print '%s %s' % (j, job.kernel.base)
for test in job.tests:
- print "\t%s %s %s" % (test.dir, test.status, test.reason)
+ print "\t%s %s %s" % (test.subdir, test.status, test.reason)
db.insert_job(j, job)
diff --git a/tko/parse.py b/tko/parse.py
index 19b99c9..ab7ca78 100755
--- a/tko/parse.py
+++ b/tko/parse.py
@@ -102,27 +102,27 @@
class test:
- def __init__(self, dir, status, reason, kernel, job):
- self.dir = dir
+ def __init__(self, subdir, status, reason, kernel, job):
+ self.subdir = subdir
self.status = status
self.reason = reason
- self.keyval = os.path.join(dir, 'results/keyval')
+ self.keyval = os.path.join(job.dir, subdir, 'results/keyval')
self.iterations = []
- self.testname = re.sub(r'\..*', '', self.dir)
+ self.testname = re.sub(r'\..*', '', self.subdir)
self.kernel = kernel
self.machine = job.machine
+ dprint("PARSING TEST %s %s" % (subdir,self.keyval))
if not os.path.exists(self.keyval):
self.keyval = None
return
count = 1
lines = []
for line in open(self.keyval, 'r').readlines():
- if not re.search('\S'): # blank line
+ if not re.search('\S', line): # blank line
self.iterations.append(iteration(count, lines))
lines = []
count += 1
- next
else:
lines.append(line)
if lines:
@@ -134,6 +134,7 @@
self.index = index
self.keyval = {}
+ dprint("ADDING ITERATION %d" % index)
for line in lines:
(key, value) = line.split('=', 1)
self.keyval[key] = value