conf["resourceLocation"]="" conf["libraryVersionRevision"]=omc.sendExpression('getVersion(%s)' % library) if conf.get("fmi") and fmisimulatorversion: conf["libraryVersionRevision"] = conf["libraryVersionRevision"] + " " + fmisimulatorversion librarySourceFile=omc.sendExpression('getSourceFile(%s)' % library) lastChange=(librarySourceFile[:-3]+".last_change") if not librarySourceFile.endswith("package.mo") else (os.path.dirname(librarySourceFile)+".last_change") if os.path.exists(lastChange): conf["libraryLastChange"] = " %s (revision %s)" % (conf["libraryVersionRevision"],"\n".join(open(lastChange).readlines()).strip()) else: conf["libraryLastChange"] = conf["libraryVersionRevision"] if conf.get("fmi") and fmisimulatorversion: conf["libraryVersionRevision"] = conf["libraryVersionRevision"] + " " + fmisimulatorversion conf["libraryLastChange"] = conf["libraryLastChange"] + " " + fmisimulatorversion res=omc.sendExpression('{c for c guard isExperiment(c) and not regexBool(typeNameString(x), "^Modelica_Synchronous\\.WorkInProgress") in getClassNames(%s, recursive=true)}' % library) libName=shared.libname(library, conf) v = cursor.execute("""SELECT date,libversion,libname,branch,omcversion FROM [libversion] NATURAL JOIN [omcversion] WHERE libversion=? AND libname=? AND branch=? AND omcversion=? AND confighash=? ORDER BY date DESC LIMIT 1""", (conf["libraryLastChange"],libName,branch,omc_version,confighash)).fetchone() if libName in stats_by_libname or libName in skipped_libs: raise Exception("Duplicate libName found: %s" % libName) if v is None: stats_by_libname[libName] = {"conf":conf, "stats":[]} tests = tests + [(r,library,libName,libName+"_"+r,conf) for r in res] print("Running library %s" % libName) else: print("Skipping %s as we already have results for it: %s" % (libName,str(v))) skipped_libs[libName] = v[0] print("Checked which libraries to run") sys.stdout.flush()
dates = {} dates_str = {} fields = ["exectime", "parsing", "frontend", "backend", "simcode", "templates", "compile", "simulate", "verify"] entryhead = "<tr><th>Branch</th><th>Total</th><th>Parsing</th><th>Frontend</th><th>Backend</th><th>SimCode</th><th>Templates</th><th>Compilation</th><th>Simulation</th><th>Verification</th>\n" libs = {} import cgi, sqlite3, time, datetime from omcommon import friendlyStr, multiple_replace configs_lst = [shared.readConfig(c) for c in configs] configs = [] for c in configs_lst: configs = configs + c libnames = set(shared.libname(library,conf) for (library,conf) in configs) conn = sqlite3.connect('sqlite3.db') cursor = conn.cursor() nmodels = {} nsimulate = {} exectime = {} for branch in branches: cursor.execute("SELECT date FROM [%s] ORDER BY date DESC LIMIT 1" % branch) v = cursor.fetchone()[0] dates_str[branch] = str(datetime.datetime.fromtimestamp(v).strftime('%Y-%m-%d %H:%M:%S')) cursor.execute('''CREATE INDEX IF NOT EXISTS [idx_%s_date] ON [%s](date)''' % (branch,branch)) dates[branch] = {}