blob: 6772c317a8dc9c96184222df8b35dbae33dc6a0d [file] [log] [blame]
# SPDX-License-Identifier: GPL-2.0
import sqlite3
def _dict_factory(cursor, row):
d = {}
for idx,col in enumerate(cursor.description):
d[col[0]] = row[idx]
return d
class ResultData:
def __init__(self, filename):
self.db = sqlite3.connect(filename)
self.db.row_factory = _dict_factory
def load_last(self, testname, config):
d = {}
cur = self.db.cursor()
cur.execute("SELECT * FROM fio_runs WHERE config = ? AND name = ?ORDER BY time DESC LIMIT 1",
(config,testname))
d['global'] = cur.fetchone()
if d['global'] is None:
return None
cur.execute("SELECT * FROM fio_jobs WHERE run_id = ?",
(d['global']['id'],))
d['jobs'] = cur.fetchall()
return d
def _insert_obj(self, tablename, obj):
keys = obj.keys()
values = obj.values()
cur = self.db.cursor()
cmd = "INSERT INTO {} ({}) VALUES ({}".format(tablename,
",".join(keys),
'?,' * len(values))
cmd = cmd[:-1] + ')'
cur.execute(cmd, tuple(values))
self.db.commit()
return cur.lastrowid
def insert_result(self, result):
row_id = self._insert_obj('fio_runs', result['global'])
for job in result['jobs']:
job['run_id'] = row_id
self._insert_obj('fio_jobs', job)