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