blob: 1631010d2b55ac8b528411a652ed095d263509be [file]
# SPDX-License-Identifier: GPL-2.0
import json
import argparse
import FioResultDecoder
from dateutil.parser import parse
def is_date(string):
try:
parse(string)
return True
except ValueError:
return False
def print_schema_def(key, value, required):
typestr = value.__class__.__name__
if typestr == 'str' or typestr == 'unicode':
if (is_date(value)):
typestr = "datetime"
else:
typestr = "varchar(256)"
requiredstr = ""
if required:
requiredstr = " NOT NULL"
return ",\n `{}` {}{}".format(key, typestr, requiredstr)
parser = argparse.ArgumentParser()
parser.add_argument('infile', help="The json file to strip")
args = parser.parse_args()
json_data = open(args.infile)
data = json.load(json_data, cls=FioResultDecoder.FioResultDecoder)
# These get populated by the test runner, not fio, so add them so their
# definitions get populated in the schema properly
data['global']['config'] = 'default'
data['global']['kernel'] = '4.14'
data['global']['name'] = 'alrightalrightalright'
print("CREATE TABLE IF NOT EXISTS `fio_runs` (")
outstr = " `id` INTEGER PRIMARY KEY AUTOINCREMENT"
for key,value in data['global'].iteritems():
outstr += print_schema_def(key, value, True)
print(outstr)
print(");")
required_fields = ['run_id']
job = data['jobs'][0]
job['run_id'] = 0
print("CREATE TABLE IF NOT EXISTS `fio_jobs` (")
outstr = " `id` INTEGER PRIMARY KEY AUTOINCREMENT"
for key,value in job.iteritems():
outstr += print_schema_def(key, value, key in required_fields)
print(outstr)
print(");")