[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