Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 1 | # Process the test results |
| 2 | # Test status (like passed, or failed with error code) |
| 3 | |
| 4 | import argparse |
| 5 | import re |
| 6 | import TestScripts.NewParser as parse |
| 7 | import TestScripts.CodeGen |
| 8 | from collections import deque |
| 9 | import os.path |
| 10 | import numpy as np |
| 11 | import pandas as pd |
| 12 | import statsmodels.api as sm |
| 13 | import statsmodels.formula.api as smf |
| 14 | import csv |
| 15 | import TestScripts.Deprecate as d |
| 16 | import sqlite3 |
| 17 | import datetime, time |
| 18 | import re |
| 19 | |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 20 | # For sql table creation |
| 21 | MKSTRFIELD=[] |
Christophe Favergeon | 74a31ba | 2019-09-09 09:14:18 +0100 | [diff] [blame] | 22 | MKBOOLFIELD=['HARDFP', 'FASTMATH', 'NEON', 'HELIUM','UNROLL', 'ROUNDING','OPTIMIZED'] |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 23 | MKINTFIELD=['ID', 'CYCLES'] |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 24 | MKDATEFIELD=[] |
| 25 | MKKEYFIELD=['DATE','NAME','CATEGORY', 'PLATFORM', 'CORE', 'COMPILER','TYPE',"RUN"] |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 26 | MKKEYFIELDID={'CATEGORY':'categoryid', |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 27 | 'NAME':'testnameid', |
| 28 | 'DATE':'testdateid', |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 29 | 'PLATFORM':'platformid', |
| 30 | 'CORE':'coreid', |
| 31 | 'COMPILER':'compilerid', |
Christophe Favergeon | 8cb3730 | 2020-05-13 13:06:58 +0200 | [diff] [blame] | 32 | 'TYPE':'typeid', |
| 33 | 'RUN':'runid'} |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 34 | |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 35 | # For csv table value extraction |
| 36 | VALSTRFIELD=['TESTNAME','VERSION'] |
Christophe Favergeon | 74a31ba | 2019-09-09 09:14:18 +0100 | [diff] [blame] | 37 | VALBOOLFIELD=['HARDFP', 'FASTMATH', 'NEON', 'HELIUM','UNROLL', 'ROUNDING','OPTIMIZED'] |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 38 | VALINTFIELD=['ID', 'CYCLES'] |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 39 | VALDATEFIELD=[] |
| 40 | # Some of those fields may be created by the parsing of other fields |
| 41 | VALKEYFIELD=['DATE','NAME','CATEGORY', 'PLATFORM', 'CORE', 'COMPILER','TYPE'] |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 42 | |
| 43 | def joinit(iterable, delimiter): |
| 44 | it = iter(iterable) |
| 45 | yield next(it) |
| 46 | for x in it: |
| 47 | yield delimiter |
| 48 | yield x |
| 49 | |
| 50 | def tableExists(c,tableName): |
| 51 | req=(tableName,) |
| 52 | r=c.execute("SELECT name FROM sqlite_master WHERE type='table' AND name=?",req) |
| 53 | return(r.fetchone() != None) |
| 54 | |
| 55 | def diff(first, second): |
| 56 | second = set(second) |
| 57 | return [item for item in first if item not in second] |
| 58 | |
| 59 | def getColumns(elem,full): |
| 60 | colsToKeep=[] |
| 61 | cols = list(full.columns) |
Christophe Favergeon | 4a8d9dc | 2019-08-14 08:55:46 +0200 | [diff] [blame] | 62 | params = list(elem.params.full) |
Christophe Favergeon | 8cb3730 | 2020-05-13 13:06:58 +0200 | [diff] [blame] | 63 | common = diff(cols + ["TYPE","RUN"] , ['OLDID'] + params) |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 64 | |
| 65 | for field in common: |
| 66 | if field in MKSTRFIELD: |
| 67 | colsToKeep.append(field) |
| 68 | if field in MKINTFIELD: |
| 69 | colsToKeep.append(field) |
| 70 | if field in MKKEYFIELD: |
| 71 | colsToKeep.append(field) |
| 72 | if field in MKDATEFIELD: |
| 73 | colsToKeep.append(field) |
| 74 | if field in MKBOOLFIELD: |
| 75 | colsToKeep.append(field) |
| 76 | return(colsToKeep) |
| 77 | |
| 78 | def createTableIfMissing(conn,elem,tableName,full): |
| 79 | if not tableExists(conn,tableName): |
| 80 | sql = "CREATE TABLE %s (" % tableName |
| 81 | cols = list(full.columns) |
Christophe Favergeon | 4a8d9dc | 2019-08-14 08:55:46 +0200 | [diff] [blame] | 82 | params = list(elem.params.full) |
Christophe Favergeon | 8cb3730 | 2020-05-13 13:06:58 +0200 | [diff] [blame] | 83 | common = diff(cols + ["TYPE","RUN"] , ['OLDID'] + params) |
Christophe Favergeon | 058b63b | 2019-07-25 10:40:32 +0200 | [diff] [blame] | 84 | |
| 85 | sql += "%sid INTEGER PRIMARY KEY" % (tableName) |
| 86 | start = "," |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 87 | |
| 88 | for field in params: |
| 89 | sql += " %s\n %s INTEGER" % (start,field) |
| 90 | start = "," |
| 91 | |
| 92 | for field in common: |
| 93 | if field in MKSTRFIELD: |
| 94 | sql += "%s\n %s TEXT" % (start,field) |
| 95 | if field in MKINTFIELD: |
| 96 | sql += "%s\n %s INTEGER" % (start,field) |
| 97 | if field in MKKEYFIELD: |
| 98 | sql += "%s\n %s INTEGER" % (start,MKKEYFIELDID[field]) |
| 99 | if field in MKDATEFIELD: |
| 100 | sql += "%s\n %s TEXT" % (start,field) |
| 101 | if field in MKBOOLFIELD: |
| 102 | sql += "%s\n %s INTEGER" % (start,field) |
| 103 | start = "," |
| 104 | # Create foreign keys |
| 105 | sql += "%sFOREIGN KEY(typeid) REFERENCES TYPE(typeid)," % start |
| 106 | sql += "FOREIGN KEY(categoryid) REFERENCES CATEGORY(categoryid)," |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 107 | sql += "FOREIGN KEY(testnameid) REFERENCES TESTNAME(testnameid)," |
| 108 | sql += "FOREIGN KEY(testdateid) REFERENCES TESTDATE(testdateid)," |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 109 | sql += "FOREIGN KEY(platformid) REFERENCES PLATFORM(platformid)," |
| 110 | sql += "FOREIGN KEY(coreid) REFERENCES CORE(coreid)," |
| 111 | sql += "FOREIGN KEY(compilerid) REFERENCES COMPILER(compilerid)" |
Christophe Favergeon | 8cb3730 | 2020-05-13 13:06:58 +0200 | [diff] [blame] | 112 | sql += "FOREIGN KEY(runid) REFERENCES RUN(runid)" |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 113 | sql += " )" |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 114 | conn.execute(sql) |
| 115 | |
| 116 | # Find the key or add it in a table |
| 117 | def findInTable(conn,table,keystr,strv,key): |
| 118 | #print(sql) |
| 119 | r = conn.execute("select %s from %s where %s=?" % (key,table,keystr),(strv,)) |
| 120 | result=r.fetchone() |
| 121 | if result != None: |
| 122 | return(result[0]) |
| 123 | else: |
| 124 | conn.execute("INSERT INTO %s(%s) VALUES(?)" % (table,keystr),(strv,)) |
| 125 | conn.commit() |
| 126 | r = conn.execute("select %s from %s where %s=?" % (key,table,keystr),(strv,)) |
| 127 | result=r.fetchone() |
| 128 | if result != None: |
| 129 | #print(result) |
| 130 | return(result[0]) |
| 131 | else: |
| 132 | return(None) |
| 133 | |
| 134 | def findInCompilerTable(conn,kind,version): |
| 135 | #print(sql) |
| 136 | r = conn.execute("select compilerid from COMPILER where compilerkindid=? AND version=?" , (kind,version)) |
| 137 | result=r.fetchone() |
| 138 | if result != None: |
| 139 | return(result[0]) |
| 140 | else: |
Christophe Favergeon | 256f2da | 2019-09-10 14:56:10 +0200 | [diff] [blame] | 141 | fullDate = datetime.datetime.now() |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 142 | dateid = findInTable(conn,"TESTDATE","date",str(fullDate),"testdateid") |
| 143 | conn.execute("INSERT INTO COMPILER(compilerkindid,version,testdateid) VALUES(?,?,?)" ,(kind,version,dateid)) |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 144 | conn.commit() |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 145 | r = conn.execute("select compilerid from COMPILER where compilerkindid=? AND version=? AND testdateid=?" , (kind,version,dateid)) |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 146 | result=r.fetchone() |
| 147 | if result != None: |
| 148 | #print(result) |
| 149 | return(result[0]) |
| 150 | else: |
| 151 | return(None) |
| 152 | |
| 153 | |
Christophe Favergeon | 8cb3730 | 2020-05-13 13:06:58 +0200 | [diff] [blame] | 154 | def addRows(conn,elem,tableName,full,runid=0): |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 155 | # List of columns we have in DB which is |
| 156 | # different from the columns in the table |
Christophe Favergeon | 256f2da | 2019-09-10 14:56:10 +0200 | [diff] [blame] | 157 | compilerid = 0 |
| 158 | platformid = 0 |
| 159 | coreid = 0 |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 160 | keep = getColumns(elem,full) |
| 161 | cols = list(full.columns) |
Christophe Favergeon | 4a8d9dc | 2019-08-14 08:55:46 +0200 | [diff] [blame] | 162 | params = list(elem.params.full) |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 163 | common = diff(["TYPE"] + cols , ['OLDID'] + params) |
Christophe Favergeon | 058b63b | 2019-07-25 10:40:32 +0200 | [diff] [blame] | 164 | colNameList = [] |
| 165 | for c in params + keep: |
| 166 | if c in MKKEYFIELD: |
| 167 | colNameList.append(MKKEYFIELDID[c]) |
| 168 | else: |
| 169 | colNameList.append(c) |
| 170 | colNames = "".join(joinit(colNameList,",")) |
| 171 | #print(colNameList) |
| 172 | #print(colNames) |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 173 | #print(full) |
| 174 | for index, row in full.iterrows(): |
Christophe Favergeon | 058b63b | 2019-07-25 10:40:32 +0200 | [diff] [blame] | 175 | sql = "INSERT INTO %s(%s) VALUES(" % (tableName,colNames) |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 176 | keys = {} |
| 177 | |
| 178 | # Get data from columns |
| 179 | for field in common: |
| 180 | if field in VALSTRFIELD: |
| 181 | keys[field]=row[field] |
| 182 | if field == "NAME": |
| 183 | name = row[field] |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 184 | if field == "TESTNAME": |
| 185 | testname = row[field] |
| 186 | if re.match(r'^.*_f64',testname): |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 187 | keys["TYPE"] = "f64" |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 188 | if re.match(r'^.*_f32',testname): |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 189 | keys["TYPE"] = "f32" |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 190 | if re.match(r'^.*_f16',testname): |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 191 | keys["TYPE"] = "f16" |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 192 | if re.match(r'^.*_q31',testname): |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 193 | keys["TYPE"] = "q31" |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 194 | if re.match(r'^.*_q15',testname): |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 195 | keys["TYPE"] = "q15" |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 196 | if re.match(r'^.*_q7',testname): |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 197 | keys["TYPE"] = "q7" |
| 198 | |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 199 | if re.match(r'^.*_s8',testname): |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 200 | keys["TYPE"] = "s8" |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 201 | if re.match(r'^.*_u8',testname): |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 202 | keys["TYPE"] = "u8" |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 203 | if re.match(r'^.*_s16',testname): |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 204 | keys["TYPE"] = "s16" |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 205 | if re.match(r'^.*_u16',testname): |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 206 | keys["TYPE"] = "u16" |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 207 | if re.match(r'^.*_s32',testname): |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 208 | keys["TYPE"] = "s32" |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 209 | if re.match(r'^.*_u32',testname): |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 210 | keys["TYPE"] = "u32" |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 211 | if re.match(r'^.*_s64',testname): |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 212 | keys["TYPE"] = "s64" |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 213 | if re.match(r'^.*_u64',testname): |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 214 | keys["TYPE"] = "u64" |
| 215 | |
| 216 | if field in VALINTFIELD: |
| 217 | keys[field]=row[field] |
| 218 | if field in VALDATEFIELD: |
| 219 | keys[field]=row[field] |
| 220 | if field in VALBOOLFIELD: |
| 221 | keys[field]=row[field] |
| 222 | |
| 223 | |
Christophe Favergeon | 8cb3730 | 2020-05-13 13:06:58 +0200 | [diff] [blame] | 224 | keys['RUN']=runid |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 225 | # Get foreign keys and create missing data |
| 226 | for field in common: |
| 227 | if field in VALKEYFIELD: |
| 228 | if field == "CATEGORY": |
Christophe Favergeon | d655645 | 2020-05-12 07:23:54 +0200 | [diff] [blame] | 229 | # Remove type extension to get category name so that |
| 230 | # all types are maped to same category which will |
| 231 | # help for post processing. |
| 232 | testField=re.sub(r'^(.*)[:]([^:]+)(F16|F32|F64|Q31|Q15|Q7)$',r'\1',row[field]) |
| 233 | val = findInTable(conn,"CATEGORY","category",testField,"categoryid") |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 234 | keys[field]=val |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 235 | if field == "NAME": |
| 236 | val = findInTable(conn,"TESTNAME","name",row[field],"testnameid") |
| 237 | keys[field]=val |
| 238 | if field == "DATE": |
| 239 | val = findInTable(conn,"TESTDATE","date",str(row[field]),"testdateid") |
| 240 | keys[field]=val |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 241 | if field == "CORE": |
| 242 | val = findInTable(conn,"CORE","coredef",row[field],"coreid") |
| 243 | keys[field]=val |
Christophe Favergeon | 256f2da | 2019-09-10 14:56:10 +0200 | [diff] [blame] | 244 | coreid = val |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 245 | if field == "PLATFORM": |
| 246 | val = findInTable(conn,"PLATFORM","platform",row[field],"platformid") |
| 247 | keys[field]=val |
Christophe Favergeon | 256f2da | 2019-09-10 14:56:10 +0200 | [diff] [blame] | 248 | platformid = val |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 249 | if field == "TYPE": |
| 250 | val = findInTable(conn,"TYPE","type",keys["TYPE"],"typeid") |
| 251 | keys[field]=val |
| 252 | if field == "COMPILER": |
| 253 | compilerkind = findInTable(conn,"COMPILERKIND","compiler",row[field],"compilerkindid") |
| 254 | compiler = findInCompilerTable(conn,compilerkind,keys["VERSION"]) |
| 255 | keys[field]=compiler |
Christophe Favergeon | 256f2da | 2019-09-10 14:56:10 +0200 | [diff] [blame] | 256 | compilerid = compiler |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 257 | |
| 258 | # Generate sql command |
| 259 | start = "" |
| 260 | for field in params: |
| 261 | sql += " %s\n %d" % (start,row[field]) |
| 262 | start = "," |
| 263 | |
| 264 | for field in keep: |
| 265 | if field in MKSTRFIELD or field in MKDATEFIELD: |
| 266 | sql += " %s\n \"%s\"" % (start,keys[field]) |
| 267 | elif field in keep: |
| 268 | sql += " %s\n %d" % (start,keys[field]) |
| 269 | start = "," |
| 270 | |
| 271 | sql += " )" |
| 272 | #print(sql) |
| 273 | conn.execute(sql) |
| 274 | conn.commit() |
Christophe Favergeon | 256f2da | 2019-09-10 14:56:10 +0200 | [diff] [blame] | 275 | return({'compilerid':compilerid,'platformid':platformid,'coreid':coreid}) |
| 276 | |
| 277 | def addConfig(conn,config,fullDate): |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 278 | dateid = findInTable(conn,"TESTDATE","date",str(fullDate),"testdateid") |
| 279 | conn.execute("INSERT INTO CONFIG(compilerid,platformid,coreid,testdateid) VALUES(?,?,?,?)" ,(config['compilerid'],config['platformid'],config['coreid'],dateid)) |
Christophe Favergeon | 256f2da | 2019-09-10 14:56:10 +0200 | [diff] [blame] | 280 | conn.commit() |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 281 | |
Christophe Favergeon | 8cb3730 | 2020-05-13 13:06:58 +0200 | [diff] [blame] | 282 | def getGroup(a): |
| 283 | return(re.sub(r'^(.+)(F64|F32|F16|Q31|Q15|Q7|U32|U16|U8|S32|S16|S8)$',r'\1',a)) |
| 284 | |
| 285 | def addOneBenchmark(elem,fullPath,db,group,runid): |
Christophe Favergeon | 74a31ba | 2019-09-09 09:14:18 +0100 | [diff] [blame] | 286 | if os.path.isfile(fullPath): |
| 287 | full=pd.read_csv(fullPath,dtype={'OLDID': str} ,keep_default_na = False) |
Christophe Favergeon | 256f2da | 2019-09-10 14:56:10 +0200 | [diff] [blame] | 288 | fullDate = datetime.datetime.now() |
| 289 | full['DATE'] = fullDate |
Christophe Favergeon | 74a31ba | 2019-09-09 09:14:18 +0100 | [diff] [blame] | 290 | if group: |
Christophe Favergeon | 8cb3730 | 2020-05-13 13:06:58 +0200 | [diff] [blame] | 291 | tableName = getGroup(group) |
Christophe Favergeon | 74a31ba | 2019-09-09 09:14:18 +0100 | [diff] [blame] | 292 | else: |
Christophe Favergeon | 8cb3730 | 2020-05-13 13:06:58 +0200 | [diff] [blame] | 293 | tableName = getGroup(elem.data["class"]) |
Christophe Favergeon | 74a31ba | 2019-09-09 09:14:18 +0100 | [diff] [blame] | 294 | conn = sqlite3.connect(db) |
Christophe Favergeon | 512b148 | 2020-02-07 11:25:11 +0100 | [diff] [blame] | 295 | createTableIfMissing(conn,elem,tableName,full) |
Christophe Favergeon | 8cb3730 | 2020-05-13 13:06:58 +0200 | [diff] [blame] | 296 | config = addRows(conn,elem,tableName,full,runid) |
Christophe Favergeon | 256f2da | 2019-09-10 14:56:10 +0200 | [diff] [blame] | 297 | addConfig(conn,config,fullDate) |
Christophe Favergeon | 74a31ba | 2019-09-09 09:14:18 +0100 | [diff] [blame] | 298 | conn.close() |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 299 | |
| 300 | |
Christophe Favergeon | 8cb3730 | 2020-05-13 13:06:58 +0200 | [diff] [blame] | 301 | def addToDB(benchmark,dbpath,elem,group,runid): |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 302 | if not elem.data["deprecated"]: |
| 303 | if elem.params: |
| 304 | benchPath = os.path.join(benchmark,elem.fullPath(),"fullBenchmark.csv") |
| 305 | print("Processing %s" % benchPath) |
Christophe Favergeon | 8cb3730 | 2020-05-13 13:06:58 +0200 | [diff] [blame] | 306 | addOneBenchmark(elem,benchPath,dbpath,group,runid) |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 307 | |
| 308 | for c in elem.children: |
Christophe Favergeon | 8cb3730 | 2020-05-13 13:06:58 +0200 | [diff] [blame] | 309 | addToDB(benchmark,dbpath,c,group,runid) |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 310 | |
| 311 | |
| 312 | |
| 313 | parser = argparse.ArgumentParser(description='Generate summary benchmarks') |
| 314 | |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 315 | parser.add_argument('-f', nargs='?',type = str, default="Output.pickle", help="Pickle") |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 316 | parser.add_argument('-b', nargs='?',type = str, default="FullBenchmark", help="Full Benchmark dir path") |
Christophe Favergeon | 97ce6fd | 2019-07-29 07:44:23 +0200 | [diff] [blame] | 317 | #parser.add_argument('-e', action='store_true', help="Embedded test") |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 318 | parser.add_argument('-o', nargs='?',type = str, default="bench.db", help="Benchmark database") |
Christophe Favergeon | 8cb3730 | 2020-05-13 13:06:58 +0200 | [diff] [blame] | 319 | parser.add_argument('-r', nargs='?',type = int, default=0, help="Run ID") |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 320 | |
Christophe Favergeon | 4fa1e23 | 2020-05-15 12:28:17 +0200 | [diff] [blame^] | 321 | parser.add_argument('others', nargs=argparse.REMAINDER, help="Suite class") |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 322 | |
| 323 | args = parser.parse_args() |
| 324 | |
| 325 | if args.f is not None: |
Christophe Favergeon | 6f8eee9 | 2019-10-09 12:21:27 +0100 | [diff] [blame] | 326 | #p = parse.Parser() |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 327 | # Parse the test description file |
Christophe Favergeon | 6f8eee9 | 2019-10-09 12:21:27 +0100 | [diff] [blame] | 328 | #root = p.parse(args.f) |
| 329 | root=parse.loadRoot(args.f) |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 330 | d.deprecate(root,args.others) |
| 331 | if args.others: |
| 332 | group=args.others[0] |
| 333 | else: |
| 334 | group=None |
Christophe Favergeon | 8cb3730 | 2020-05-13 13:06:58 +0200 | [diff] [blame] | 335 | addToDB(args.b,args.o,root,group,args.r) |
Christophe Favergeon | 37b8622 | 2019-07-17 11:49:00 +0200 | [diff] [blame] | 336 | |
| 337 | else: |
| 338 | parser.print_help() |