c.execute("SELECT sum(workloadestm) FROM jobs;")
wltotal, = c.fetchone()
- c.close()
- perdone = 100.0*float(nodone)/float(nototal)
- perwl = 100.0*float(wldone)/float(wltotal)
+ perdone = 0
+ perwl = 0
+ if nototal > 0:
+ perdone = 100.0*float(nodone)/float(nototal)
+ if wltotal > 0:
+ perwl = 100.0*float(wldone)/float(wltotal)
print("%d (%.1f%%) of %d jobs and %.1f%% of the workload done. %d jobs are running." % \
(nodone, perdone, nototal, perwl, nostarted-nodone))
+ print("Exit code stats:")
+ c.execute("SELECT exitcode, count(exitcode) AS cnt FROM jobs WHERE exitcode >= 0 GROUP BY exitcode ORDER BY exitcode ASC;")
+ for code, cnt in c.fetchall():
+ print(" %3s: %6s (%5.1f%%)" % (code, cnt, 100.0*float(cnt)/nodone))
+
+ c.close()
+
def createPropertiesTable(conn, propdef):
conn.execute("BEGIN EXCLUSIVE")
exitcode = proc.wait()
if verbose:
- print(out, err)
+ print out, err
return exitcode, out, err
c.execute("SELECT cmd FROM jobs WHERE id=?", (jobid,))
cmd, = c.fetchone()
- print("Process job %d: %s" % (jobid, cmd))
-
+ print "Job %d: '%s'..." % (jobid, cmd),
ec, out, err = runCmd(cmd)
+ if ec==0:
+ print " [OK]"
+ else:
+ print " [FAILED: %d]" % ec
+
c.execute("UPDATE jobs SET exitcode=?, done=1 WHERE id=?;", (ec, jobid))
propstr = []
# Create table, if necessary
c.execute("SELECT count(name) FROM sqlite_master WHERE name='jobs';")
if c.fetchone() == (0,):
- print("Creating jobs table.")
+ print "Creating jobs table."
conn.execute("CREATE TABLE jobs ( \
id INTEGER PRIMARY KEY AUTOINCREMENT, \
cmd STRING NOT NULL, \
print("No database given.")
sys.exit(os.EX_USAGE)
- conn = sqlite3.connect(dbfn)
+ conn = sqlite3.connect(dbfn, timeout=60)
createSchema(conn)
if status: