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

Reply via email to