[gs-cvs] rev 8812 - trunk/cluster/tti
giles at ghostscript.com
giles at ghostscript.com
Mon Jun 30 16:16:45 PDT 2008
Author: giles
Date: 2008-06-30 16:16:45 -0700 (Mon, 30 Jun 2008)
New Revision: 8812
Modified:
trunk/cluster/tti/reg_dispatch-pcl.py
trunk/cluster/tti/reg_dispatch.py
trunk/cluster/tti/regress.py
Log:
Synchronize various changes from the running versions.
Modified: trunk/cluster/tti/reg_dispatch-pcl.py
===================================================================
--- trunk/cluster/tti/reg_dispatch-pcl.py 2008-06-30 18:15:51 UTC (rev 8811)
+++ trunk/cluster/tti/reg_dispatch-pcl.py 2008-06-30 23:16:45 UTC (rev 8812)
@@ -169,7 +169,9 @@
nodes -= 1
else:
ppn = ''
- resources = 'nodes=%d:%s:run%s,walltime=20:00' % (nodes, cluster, ppn)
+ if nodes > 12:
+ nodes = 12
+ resources = 'nodes=%d:%s:run%s,cput=10000' % (nodes, cluster, ppn)
if ppn:
ppnhelp = '(' + ppn[-1] + ' cpus per node)'
else:
@@ -224,7 +226,7 @@
# update successful
return True
-def runrev(workdir=None, rev=None, report=None):
+def runrev(workdir=None, rev=None, report=None, exe='main/obj/pcl6'):
if not rev: rev = getrev()
if not report: report = "regression-r" + rev + ".log"
# remove the report if it exists since we use this to check completion
@@ -232,11 +234,15 @@
start = time.time()
cmd = 'bwpython ../regress.py'
cmd += ' --batch --update'
- cmd += ' --exe main/obj/pcl6'
+ cmd += ' --exe ' + exe
pbsjob(cmd, resources=None, workdir=workdir, stdout=report)
# wait for the run to finish
while not os.path.exists(report):
time.sleep(20)
+ if os.path.getsize(report) < 1:
+ f = open(report)
+ f.write("[report empty -- regression failed]\n")
+ f.close()
print "report is ready as '" + report + "'. total time %d seconds" % int(time.time() - start)
ircfile(report, rev)
mailfile(report, rev)
@@ -259,8 +265,13 @@
if not os.path.exists(os.path.join(workdir, "reg_baseline.txt")):
os.system("cp reg_baseline.txt " + workdir)
log("running regression on ghostpcl-r" + rev)
- report = "regression-r" + rev + ".log"
- runrev(workdir, rev, report)
+ report = "ghostpcl-r" + rev + ".log"
+ runrev(workdir, rev, report, 'main/obj/pcl6')
+ report = "ghostxps-r" + rev + ".log"
+ runrev(workdir, rev, report, 'xps/obj/gxps')
+ if os.path.exists(os.path.join(workdir, 'svg/obj/gsvg')):
+ report = "ghostsvg-r" + rev + ".log"
+ runrev(workdir, rev, report, 'svg/obj/gsvg')
os.system("cp " + os.path.join(workdir, "reg_baseline.txt ") + " .")
# cleanup old directories to keep disk space reasonable (15 days old)
os.system("find . -maxdepth 1 -ctime +15 -name 'ghostpcl-r*' -exec rm -fr '{}' \\;")
Modified: trunk/cluster/tti/reg_dispatch.py
===================================================================
--- trunk/cluster/tti/reg_dispatch.py 2008-06-30 18:15:51 UTC (rev 8811)
+++ trunk/cluster/tti/reg_dispatch.py 2008-06-30 23:16:45 UTC (rev 8812)
@@ -111,14 +111,20 @@
if not resources:
cluster, nodes = choosecluster()
if nodes > 1 and cluster == 'red' or cluster == 'green':
- # red reports two cpus per node
+ # these report two cpus per node
nodes /= 2
ppn = ':ppn=2'
# hack: work around a corner case
if nodes > 1: nodes = nodes - 1
else:
ppn = ''
- resources = 'nodes=%d:%s:run%s,walltime=20:00' % (nodes, cluster, ppn)
+ # limit runs to 12 nodes (24 cpus)
+ if nodes > 12:
+ nodes = 12
+ # pcput is the CPU time per process. Recent runs complete in about 6000 sec
+ # resources = 'nodes=%d:%s:run%s,cput=10000' % (nodes, cluster, ppn)
+ # perform test on a single node to see what is hanging
+ resources = 'nodes=%d:%s:run%s,cput=10000' % (nodes, cluster, ppn)
print 'requesting', nodes, 'nodes on', cluster
if stdout: jobname = stdout + '.pbs'
else: jobname = 'regress.pbs'
Modified: trunk/cluster/tti/regress.py
===================================================================
--- trunk/cluster/tti/regress.py 2008-06-30 18:15:51 UTC (rev 8811)
+++ trunk/cluster/tti/regress.py 2008-06-30 23:16:45 UTC (rev 8812)
@@ -75,22 +75,26 @@
# public test suite
self.tests += ['tests_public/pcl/*']
# Quality Logic suites
- self.tests += ['tests_private/pcl/pcl5cfts/fts.*',
- 'tests_private/pcl/pcl5efts/fts.*',
- 'tests_private/pcl/pcl5ccet/*.BIN']
- if basename.find('pspcl') >= 0 or basename.find('gs') >= 0:
+ self.tests += ['tests_private/pcl/*/*', 'tests_private/xl/*/*']
+ # we can't use find() for 'gs' because it also matches 'gsvg'
+ if basename.find('pspcl') >= 0 or basename == 'gs':
# public test suite
self.tests += ['tests_public/ps/*', 'tests_public/pdf/*']
# the normal comparefiles suite
self.tests += ['tests_private/comparefiles/*.ps',
'tests_private/comparefiles/*.pdf',
'tests_private/comparfiles/*.ai']
- # Quality Logic CED suite
+ # Quality Logic CET suite
self.tests += ['tests_private/ps/ps3cet/*.PS']
if basename.find('xps') >= 0:
# Quality Logic suites
- self.tests += ['tests_private/xps/xpsfts-a4/*.xps',
- 'tests_private/xps/atx/*.xps']
+ self.tests += ['tests_private/xps/xpsfts-a4/*.xps']
+ # ATS tests take more cpu time than we can spare
+ #self.tests += ['tests_private/xps/ats/*-Native.xps']
+ if basename.find('svg') >= 0:
+ # W3C test suite
+ self.tests += ['tests_public/svg/svgw3c-1.2-tiny/svg/*.svg',
+ 'tests_public/svg/svgw3c-1.1-full/svg/*.svg']
# global configuration instance
conf = Conf()
@@ -178,8 +182,9 @@
def report(self):
if not conf.batch:
print '-'*72
- print 'ran %d tests in %.3f seconds on %d nodes\n' % \
- (len(self.tests), self.elapsed, MPI.size)
+ print 'ran %d tests with %s in %.3f seconds on %d nodes\n' % \
+ (len(self.tests), os.path.basename(conf.exe),
+ self.elapsed, MPI.size)
if self.fails:
print 'FAILED %d of %d tests' % \
(len(self.fails),len(self.tests))
@@ -247,11 +252,10 @@
self.dpi = dpi
self.exe = conf.exe
self.opts = "-dQUIET -dSAFER -dNOPAUSE -dBATCH -K1000000"
- self.opts += " -dSAFER -dBATCH"
- self.opts += " -Z@"
+ self.opts += " -dSAFER -dBATCH -dMaxBitmap=30000000"
+ self.opts += " -Z:@"
self.opts += " -sDEVICE=%s -r%d" % (device, dpi)
- #self.psopts = '-dMaxBitmap=40000000 -dJOBSERVER ./lib/gs_cet.ps'
- self.psopts = '-dMaxBitmap=30000000 -dNOOUTERSAVE -dJOBSERVER -c false 0 startjob pop -f'
+ self.psopts = '-dJOBSERVER'
def description(self):
return 'Checking ' + self.file
@@ -260,17 +264,17 @@
scratch = os.path.join('/tmp', os.path.basename(self.file) + '.md5')
# add psopts if it's a postscript file
if self.file[-3:].lower() == '.ps' or \
- self.file[-4:].lower() == '.eps' or \
- self.file[-4:].lower() == '.pdf' or \
- self.file[-3:].lower() == '.ai':
+ self.file[-4:].lower() == '.eps' :
cmd = '%s %s -sOutputFile="|md5sum>%s" %s - < %s ' % \
(self.exe, self.opts, scratch, self.psopts, self.file)
else:
cmd = '%s %s -sOutputFile="|md5sum>%s" %s' % \
(self.exe, self.opts, scratch, self.file)
+ sys.stderr.write("Running: %s\n" % cmd)
run = os.popen(cmd)
msg = run.readlines()
code = run.close()
+ sys.stderr.write("Finished: %s\n" % cmd)
if code:
self.result = ErrorResult(''.join(msg))
return
@@ -359,6 +363,7 @@
if conf.update:
if len(suite.fails):
print 'Updating baselines for the failed tests.'
+ print
for test in suite.fails:
db[test.file] = test.result.msg
db.save()
More information about the gs-cvs
mailing list