# this summaries data from the Hudson server used for building and testing. # On my system, it looks at '/var/local/hudson-rt/jobs/autoplot-test032/builds/' but # the 'dir' parameter allows it to be pointed out a different directory. # Note the script editor automatically creates a GUI to specify the location. from javax.xml.parsers import ParserConfigurationException from javax.xml.parsers import DocumentBuilderFactory from javax.xml.xpath import XPath from javax.xml.xpath import XPathExpressionException from javax.xml.xpath import XPathFactory from javax.xml.xpath import XPathConstants from org.xml.sax import InputSource from org.virbo.dataset import DDataSet from java.io import File from java.io import FileInputStream from java.lang import Double dir= getParam( 'dir', '/var/local/hudson-rt/jobs/autoplot-test032/builds/', 'Directory containing builds $Y-$m-$d_$H-$M-$S' ) if ( dir[-1]!='/' ): dir=dir+'/' tp = TimeParser.create( '%Y-%m-%d_%H-%M-%S' ) print 'listing directory '+dir +'*-*-*_*-*-*' files= listDirectory(dir+'*-*-*_*-*-*') from org.virbo.dsutil import DataSetBuilder build= DataSetBuilder(2,100,2) for i in files: t= tp.parse(i).getTime( Units.us2000 ) file= File( dir + i + 'build.xml' ) if ( not file.exists() ): print 'didn''t find build.xml for ', dir + i continue myin= FileInputStream( file ) builder = DocumentBuilderFactory.newInstance().newDocumentBuilder() source = InputSource( myin ) initialDocument = builder.parse(source) factory= XPathFactory.newInstance() xpath= factory.newXPath() temps= xpath.evaluate( '/build/duration/text()', initialDocument, XPathConstants.NODESET ) ms= temps.item(0).nodeValue build.putValue( -1, 0, t ) build.putValue( -1, 1, Double.parseDouble(ms) ) build.nextRecord() myin.close() ds= build.getDataSet() if ( ds.length()==0 ): print 'nothin found' raise Exception('nothin found') print 'ds=', ds time= ds[:,0] time.putProperty( QDataSet.UNITS, Units.us2000 ) data= ds[:,1] / 1e3 data.putProperty( QDataSet.UNITS, Units.seconds ) data.putProperty( QDataSet.TITLE, 'Time to calculate '+ dir ) data.putProperty( QDataSet.SCALE_TYPE, 'linear' ) result= link( time, data )