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