Update of /cvsroot/boost/boost/tools/regression/xsl_reports/runner
In directory
sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv20263/tools/regression/xsl_reports/runner
Modified Files:
collect_and_upload_logs.py regression.py
Log Message:
Add submit of log results to dart server specified with "--dart-server=" option.
Index: collect_and_upload_logs.py
===================================================================
RCS file:
/cvsroot/boost/boost/tools/regression/xsl_reports/runner/collect_and_upload_logs.py,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- collect_and_upload_logs.py 29 Jan 2007 09:18:04 -0000 1.23
+++ collect_and_upload_logs.py 20 May 2007 06:24:42 -0000 1.24
@@ -10,6 +10,8 @@
import ftplib
import time
import stat
+import xml.dom.minidom
+import xmlrpclib
import os.path
import string
@@ -42,6 +44,85 @@
utils.log( 'Walking directory "%s" ...' % input_dir )
os.path.walk( input_dir, process_test_log_files, test_results_writer )
+dart_status_from_result = {
+ 'succeed': 'passed',
+ 'fail': 'failed',
+ '': 'notrun'
+ }
+
+def publish_test_logs(
+ input_dirs,
+ runner_id, tag, platform, comment_file, timestamp, user, source, run_type,
+ dart_server = None,
+ **unused
+ ):
+ __log__ = 1
+ utils.log( 'Publishing test logs ...' )
+ dart_rpc = None
+ dart_dom = {}
+
+ def _publish_test_log_files_ ( unused, dir, names ):
+ for file in names:
+ if os.path.basename( file ) == 'test_log.xml':
+ utils.log( 'Publishing test log "%s"' % os.path.join(dir,file)
)
+ if dart_server:
+ log_dom = xml.dom.minidom.parse(os.path.join(dir,file))
+ test = {
+ 'library':
log_dom.documentElement.getAttribute('library'),
+ 'test-name':
log_dom.documentElement.getAttribute('test-name'),
+ 'toolset':
log_dom.documentElement.getAttribute('toolset')
+ }
+ if not dart_dom.has_key(test['toolset']):
+ dart_dom[test['toolset']] =
xml.dom.minidom.parseString(
+'''<?xml version="1.0" encoding="UTF-8"?>
+<DartSubmission version="2.0" createdby="collect_and_upload_logs.py">
+ <Site>%(site)s</Site>
+ <BuildName>%(buildname)s</BuildName>
+ <Track>%(track)s</Track>
+ <DateTimeStamp>%(datetimestamp)s</DateTimeStamp>
+</DartSubmission>
+''' % {
+ 'site': runner_id,
+ 'buildname': "%s -- %s (%s)" %
(platform,test['toolset'],run_type),
+ 'track': 'Nightly',
+ 'datetimestamp' : timestamp
+ } )
+ submission_dom = dart_dom[test['toolset']]
+ for node in log_dom.documentElement.childNodes:
+ if node.nodeType == xml.dom.Node.ELEMENT_NODE:
+ test_dom = xml.dom.minidom.parseString('''<?xml
version="1.0" encoding="UTF-8"?>
+<Test>
+ <Name>.Test.Boost.%(tag)s.%(library)s.%(test-name)s.%(type)s</Name>
+ <Status>%(result)s</Status>
+ <Measurement name="Toolset" type="text/string">%(toolset)s</Measurement>
+ <Measurement name="Timestamp"
type="text/string">%(timestamp)s</Measurement>
+ <Measurement name="Log" type="text/text">%(log)s</Measurement>
+</Test>
+ ''' % {
+ 'tag': tag,
+ 'library': test['library'],
+ 'test-name': test['test-name'],
+ 'toolset': test['toolset'],
+ 'type': node.nodeName,
+ 'result':
dart_status_from_result[node.getAttribute('result')],
+ 'timestamp':
node.getAttribute('timestamp'),
+ 'log':
xml.sax.saxutils.escape(node.firstChild.data)
+ })
+ submission_dom.documentElement.appendChild(
+ test_dom.documentElement.cloneNode(1) )
+
+ for input_dir in input_dirs:
+ utils.log( 'Walking directory "%s" ...' % input_dir )
+ os.path.walk( input_dir, _publish_test_log_files_, None )
+ if dart_server:
+ try:
+ dart_rpc = xmlrpclib.ServerProxy('http://%s/Boost_%s/Command/' %
(dart_server,tag))
+ for dom in dart_dom.values():
+ #~ utils.log('Dart XML: %s' % dom.toxml('utf-8'))
+ dart_rpc.Submit.put(xmlrpclib.Binary(dom.toxml('utf-8')))
+ except Exception, e:
+ utils.log('Dart server error: %s' % e)
+
def upload_to_ftp( tag, results_file, ftp_proxy, debug_level ):
ftp_site = 'fx.meta-comm.com'
@@ -132,9 +213,17 @@
, user
, source
, run_type
+ , dart_server = None
, **unused
):
+ timestamp = time.strftime( '%Y-%m-%dT%H:%M:%SZ', read_timestamp(
timestamp_file ) )
+
+ if dart_server:
+ publish_test_logs( [ results_dir ],
+ runner_id, tag, platform, comment_file, timestamp, user, source,
run_type,
+ dart_server = dart_server )
+
results_file = os.path.join( results_dir, '%s.xml' % runner_id )
results_writer = open( results_file, 'w' )
utils.log( 'Collecting test logs into "%s"...' % results_file )
@@ -147,7 +236,7 @@
'tag': tag
, 'platform': platform
, 'runner': runner_id
- , 'timestamp': time.strftime( '%Y-%m-%dT%H:%M:%SZ',
read_timestamp( timestamp_file ) )
+ , 'timestamp': timestamp
, 'source': source
, 'run-type': run_type
}
@@ -205,6 +294,7 @@
, ftp_proxy = None
, debug_level = 0
, send_bjam_log = False
+ , dart_server = None
, **unused
):
@@ -218,6 +308,7 @@
, user
, source
, run_type
+ , dart_server = dart_server
)
upload_logs(
@@ -229,6 +320,7 @@
, debug_level
, send_bjam_log
, timestamp_file
+ , dart_server = dart_server
)
@@ -247,6 +339,7 @@
, 'debug-level='
, 'send-bjam-log'
, 'help'
+ , 'dart-server='
]
options = {
@@ -259,6 +352,8 @@
, '--run-type' : 'full'
, '--ftp-proxy' : None
, '--debug-level' : 0
+ , '--dart-server' : None
+
}
utils.accept_args( args_spec, args, options, usage )
@@ -276,6 +371,7 @@
, 'ftp_proxy' : options[ '--ftp-proxy' ]
, 'debug_level' : int(options[ '--debug-level' ])
, 'send_bjam_log' : options.has_key( '--send-bjam-log' )
+ , 'dart_server' : options[ '--dart-server' ]
}
@@ -308,6 +404,7 @@
\t--ftp-proxy FTP proxy server (e.g. 'ftpproxy', optional)
\t--debug-level debugging level; controls the amount of debugging
\t output printed; 0 by default (no debug output)
+\t--dart-server The dart server to send results to.
''' % '\n\t'.join( commands.keys() )
Index: regression.py
===================================================================
RCS file:
/cvsroot/boost/boost/tools/regression/xsl_reports/runner/regression.py,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -d -r1.70 -r1.71
--- regression.py 20 Feb 2007 10:26:23 -0000 1.70
+++ regression.py 20 May 2007 06:24:42 -0000 1.71
@@ -630,6 +630,7 @@
, comment
, incremental
, args
+ , dart_server = None
, **unused
):
import_utils()
@@ -667,6 +668,7 @@
, user
, source
, run_type
+ , dart_server
)
def collect_book( **unused ):
@@ -692,13 +694,14 @@
, ftp_proxy
, debug_level
, send_bjam_log
+ , dart_server = None
, **unused
):
import_utils()
from runner import upload_logs
retry(
upload_logs
- , ( regression_results, runner, tag, user, ftp_proxy, debug_level,
send_bjam_log, timestamp_path )
+ , ( regression_results, runner, tag, user, ftp_proxy, debug_level,
send_bjam_log, timestamp_path, dart_server )
)
def upload_book( tag, runner, ftp_proxy, debug_level, **unused ):
@@ -769,6 +772,7 @@
, ftp_proxy = None
, debug_level = 0
, v2 = 1
+ , dart_server = None
, args = []
):
@@ -809,7 +813,7 @@
if toolsets != '': # --toolset=,
test( toolsets, bjam_options, monitored, timeout, v2, [] )
collect_logs( tag, runner, platform, user, comment, incremental,
[] )
- upload_logs( tag, runner, user, ftp_proxy, debug_level,
send_bjam_log )
+ upload_logs( tag, runner, user, ftp_proxy, debug_level,
send_bjam_log, dart_server )
if book:
build_book()
collect_book()
@@ -877,6 +881,7 @@
, 'help'
, 'v2'
, 'v1'
+ , 'dart-server='
]
options = {
@@ -896,6 +901,7 @@
, '--proxy' : None
, '--debug-level' : 0
, '--ftp-proxy' : None
+ , '--dart-server' : None
}
( option_pairs, other_args ) = getopt.getopt( args, '', args_spec )
@@ -928,6 +934,7 @@
, 'ftp_proxy' : options[ '--ftp-proxy' ]
, 'debug_level' : int(options[ '--debug-level' ])
, 'v2' : not options.has_key( '--v1' )
+ , 'dart_server' : options[ '--dart-server' ]
, 'args' : other_args
}
@@ -986,6 +993,7 @@
\t output printed; 0 by default (no debug output)
\t--v1 Use Boost.Build V1
\t--v2 Use Boost.Build V2 (default)
+\t--dart-server The dart server to send results to.
''' % '\n\t'.join( commands.keys() )
print 'Example:\n\t%s --runner=Metacomm\n' % os.path.basename( sys.argv[0]
)
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Boost-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/boost-cvs