CMSIS-DSP: Improvement to testing scripts
diff --git a/CMSIS/DSP/Testing/addToDB.py b/CMSIS/DSP/Testing/addToDB.py
index 4d7b668..5b43cff 100755
--- a/CMSIS/DSP/Testing/addToDB.py
+++ b/CMSIS/DSP/Testing/addToDB.py
@@ -22,12 +22,13 @@
MKBOOLFIELD=['HARDFP', 'FASTMATH', 'NEON', 'HELIUM','UNROLL', 'ROUNDING','OPTIMIZED']
MKINTFIELD=['ID', 'CYCLES']
MKDATEFIELD=['DATE']
-MKKEYFIELD=['CATEGORY', 'PLATFORM', 'CORE', 'COMPILER','TYPE']
+MKKEYFIELD=['CATEGORY', 'PLATFORM', 'CORE', 'COMPILER','TYPE',"RUN"]
MKKEYFIELDID={'CATEGORY':'categoryid',
'PLATFORM':'platformid',
'CORE':'coreid',
'COMPILER':'compilerid',
- 'TYPE':'typeid'}
+ 'TYPE':'typeid',
+ 'RUN':'runid'}
# For table value extraction
VALSTRFIELD=['NAME','VERSION']
@@ -56,7 +57,7 @@
colsToKeep=[]
cols = list(full.columns)
params = list(elem.params.full)
- common = diff(cols + ["TYPE"] , ['OLDID'] + params)
+ common = diff(cols + ["TYPE","RUN"] , ['OLDID'] + params)
for field in common:
if field in MKSTRFIELD:
@@ -76,7 +77,7 @@
sql = "CREATE TABLE %s (" % tableName
cols = list(full.columns)
params = list(elem.params.full)
- common = diff(cols + ["TYPE"] , ['OLDID'] + params)
+ common = diff(cols + ["TYPE","RUN"] , ['OLDID'] + params)
sql += "%sid INTEGER PRIMARY KEY" % (tableName)
start = ","
@@ -103,6 +104,7 @@
sql += "FOREIGN KEY(platformid) REFERENCES PLATFORM(platformid),"
sql += "FOREIGN KEY(coreid) REFERENCES CORE(coreid),"
sql += "FOREIGN KEY(compilerid) REFERENCES COMPILER(compilerid)"
+ sql += "FOREIGN KEY(runid) REFERENCES RUN(runid)"
sql += " )"
conn.execute(sql)
@@ -143,7 +145,7 @@
return(None)
-def addRows(conn,elem,tableName,full):
+def addRows(conn,elem,tableName,full,runid=0):
# List of columns we have in DB which is
# different from the columns in the table
compilerid = 0
@@ -211,6 +213,7 @@
keys[field]=row[field]
+ keys['RUN']=runid
# Get foreign keys and create missing data
for field in common:
if field in VALKEYFIELD:
@@ -261,31 +264,34 @@
conn.execute("INSERT INTO CONFIG(compilerid,platformid,coreid,date) VALUES(?,?,?,?)" ,(config['compilerid'],config['platformid'],config['coreid'],fullDate))
conn.commit()
-def addOneBenchmark(elem,fullPath,db,group):
+def getGroup(a):
+ return(re.sub(r'^(.+)(F64|F32|F16|Q31|Q15|Q7|U32|U16|U8|S32|S16|S8)$',r'\1',a))
+
+def addOneBenchmark(elem,fullPath,db,group,runid):
if os.path.isfile(fullPath):
full=pd.read_csv(fullPath,dtype={'OLDID': str} ,keep_default_na = False)
fullDate = datetime.datetime.now()
full['DATE'] = fullDate
if group:
- tableName = group
+ tableName = getGroup(group)
else:
- tableName = elem.data["class"]
+ tableName = getGroup(elem.data["class"])
conn = sqlite3.connect(db)
createTableIfMissing(conn,elem,tableName,full)
- config = addRows(conn,elem,tableName,full)
+ config = addRows(conn,elem,tableName,full,runid)
addConfig(conn,config,fullDate)
conn.close()
-def addToDB(benchmark,dbpath,elem,group):
+def addToDB(benchmark,dbpath,elem,group,runid):
if not elem.data["deprecated"]:
if elem.params:
benchPath = os.path.join(benchmark,elem.fullPath(),"fullBenchmark.csv")
print("Processing %s" % benchPath)
- addOneBenchmark(elem,benchPath,dbpath,group)
+ addOneBenchmark(elem,benchPath,dbpath,group,runid)
for c in elem.children:
- addToDB(benchmark,dbpath,c,group)
+ addToDB(benchmark,dbpath,c,group,runid)
@@ -295,6 +301,7 @@
parser.add_argument('-b', nargs='?',type = str, default="FullBenchmark", help="Full Benchmark dir path")
#parser.add_argument('-e', action='store_true', help="Embedded test")
parser.add_argument('-o', nargs='?',type = str, default="bench.db", help="Benchmark database")
+parser.add_argument('-r', nargs='?',type = int, default=0, help="Run ID")
parser.add_argument('others', nargs=argparse.REMAINDER)
@@ -310,7 +317,7 @@
group=args.others[0]
else:
group=None
- addToDB(args.b,args.o,root,group)
+ addToDB(args.b,args.o,root,group,args.r)
else:
parser.print_help()
\ No newline at end of file