scyther/gui/make-bsub.py
2020-10-27 22:09:03 +01:00

70 lines
1.3 KiB
Python
Executable File

#!/usr/bin/env python
#
import sys
import json
import math
"""
Given a file of Scyther verification tests to do (json file), create a shell file to run them all using bsub.
Arguments:
[1] Filename of json stuff
[2] Step count: how many verification tasks go into one job
[3] Additional commands to send to bsub (e.g. "-W 1:00")
"""
def countlines(fn):
count = 0
fh = open(fn,'r')
for l in fh:
count = count + 1
fh.close()
return count
def marker(jobcount,todo):
left = todo - jobcount
dperc = int((100 * jobcount) / todo)
print("echo \"Sent %i out of %i jobs, hence %i left. %i%% done.\"" % (jobcount,todo,left,dperc))
def main(fn,step,optlist):
todo = math.ceil(countlines(fn) / int(step))
fh = open(fn,'r')
ln = 1
buf = 0
s = ""
jobcount = 0
done = 0
for l in fh:
if buf == 0:
s = "bsub %s ./json-scyther.py %s" % (" ".join(optlist),fn)
s += " %i" % (ln)
buf = buf + 1
done = done + 1
if buf >= int(step):
print (s)
s = ""
buf = 0
jobcount = jobcount + 1
if jobcount % 10 == 0:
"""
After ten jobs, display progress info
"""
marker(jobcount,todo)
ln = ln + 1
print (s)
marker(jobcount,todo)
fh.close()
if __name__ == '__main__':
""" Usage: filename, step, options to send to bsub
"""
main(sys.argv[1],sys.argv[2],sys.argv[3:])