c.execute("SELECT count(id) FROM jobs WHERE done=1;")
nodone, = c.fetchone()
+ c.execute("SELECT count(id) FROM jobs WHERE started=1;")
+ nostarted, = c.fetchone()
+
c.execute("SELECT sum(workloadestm) FROM jobs WHERE done=1;")
wldone, = c.fetchone()
if wldone == None:
perdone = 100.0*float(nodone)/float(nototal)
perwl = 100.0*float(wldone)/float(wltotal)
- print("%d (%.1f%%) of %d jobs done. %.1f%% of the workload finished." % \
- (nodone, perdone, nototal, perwl))
+ print("%d (%.1f%%) of %d jobs and %.1f%% of the workload done. %d jobs are running." % \
+ (nodone, perdone, nototal, perwl, nostarted-nodone))
def createPropertiesTable(conn, propdef):
conn.execute("BEGIN EXCLUSIVE")
return exitcode, out, err
def processJob(conn, jobid):
- print("Process job %d" % (jobid))
c = conn.cursor()
c.execute("SELECT cmd FROM jobs WHERE id=?", (jobid,))
cmd, = c.fetchone()
+ print("Process job %d: %s" % (jobid, cmd))
+
ec, out, err = runCmd(cmd)
c.execute("UPDATE jobs SET exitcode=?, done=1 WHERE id=?;", (ec, jobid))
"""Print usage text of this program"""
print("""
-Take the jobs defined in jobs table of the given database and process one job
+Take the jobs defined in the jobs table of the given database and process one
after the other. Multiple instances may be launched against the same database.
Usage:
- {0} [OPTIONS] [COMMANDS] -d database
+ {0} [OPTIONS] [COMMANDS] -d DB
{0} -h
COMMANDS:
- -c cmdfn add jobs from the file with list of commands
+ -c FILE add each line as a job resp. job's command to DB
-h print this text
-s print status information
- -w work on the database
+ -w do work and process jobs
OPTIONS:
- -d database the database to process
- -n num in -w mode, only perform num-many jobs
- -p cols-def create properties table with SQL column spec
- -v print output of the job's command
+ -d DB the database to process
+ -n NUM in -w mode, only process num-many jobs
+ -p COL-DEF create properties table with SQL column spec
+ -v verbose output
Commands may be combined in one call of {0}.
A list of jobs may be importet line-by-line from a file using the -c option.
-Every job may output to stdout or stderr a string of the form
+Every job may output to stdout or stderr one or more strings of the form
DB-PROPERTIES: {{ "key": "value", "key2": 1.23, "key3": True }}
It is assumed that a table 'properties' exists with the columns jobid, key,
key2, and key3. The corresponding values are inserted into this table. Using
The jobs table also contains a 'workloadestm' column that is used when
estimating the finished workload so far. The entries default to 1 and may be
-set externally.
+adjusted.
Examples:
# create cmds.sh with jobs