📄 collect_and_upload_logs.py
字号:
utils.log( 'Warning: timestamp file "%s" does not exist'% file ) utils.log( 'Using current UTC time (%s)' % result ) return result return time.gmtime( os.stat( file ).st_mtime )def collect_logs( results_dir , runner_id , tag , platform , comment_file , timestamp_file , user , source , run_type , dart_server = None , http_proxy = None , revision = '' , **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, http_proxy = http_proxy ) 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 ) results_xml = xml.sax.saxutils.XMLGenerator( results_writer ) results_xml.startDocument() results_xml.startElement( 'test-run' , { 'tag': tag , 'platform': platform , 'runner': runner_id , 'timestamp': timestamp , 'source': source , 'run-type': run_type , 'revision': revision } ) copy_comments( results_xml, comment_file ) collect_test_logs( [ results_dir ], results_writer ) results_xml.endElement( "test-run" ) results_xml.endDocument() results_writer.close() utils.log( 'Done writing "%s".' % results_file ) compress_file( results_file , os.path.join( results_dir,'%s.zip' % runner_id ) )def upload_logs( results_dir , runner_id , tag , user , ftp_proxy , debug_level , send_bjam_log = False , timestamp_file = None , dart_server = None , **unused ): logs_archive = os.path.join( results_dir, '%s.zip' % runner_id ) upload_to_ftp( tag, logs_archive, ftp_proxy, debug_level ) if send_bjam_log: bjam_log_path = os.path.join( results_dir, 'bjam.log' ) if not timestamp_file: timestamp_file = bjam_log_path timestamp = time.strftime( '%Y-%m-%d-%H-%M-%S', read_timestamp( timestamp_file ) ) logs_archive = os.path.join( results_dir, '%s.%s.log.zip' % ( runner_id, timestamp ) ) compress_file( bjam_log_path, logs_archive ) upload_to_ftp( '%s/logs' % tag, logs_archive, ftp_proxy, debug_level )def collect_and_upload_logs( results_dir , runner_id , tag , platform , comment_file , timestamp_file , user , source , run_type , revision = None , ftp_proxy = None , debug_level = 0 , send_bjam_log = False , dart_server = None , http_proxy = None , **unused ): collect_logs( results_dir , runner_id , tag , platform , comment_file , timestamp_file , user , source , run_type , revision = revision , dart_server = dart_server , http_proxy = http_proxy ) upload_logs( results_dir , runner_id , tag , user , ftp_proxy , debug_level , send_bjam_log , timestamp_file , dart_server = dart_server )def accept_args( args ): args_spec = [ 'locate-root=' , 'runner=' , 'tag=' , 'platform=' , 'comment=' , 'timestamp=' , 'source=' , 'run-type=' , 'user=' , 'ftp-proxy=' , 'proxy=' , 'debug-level=' , 'send-bjam-log' , 'help' , 'dart-server=' , 'revision=' ] options = { '--tag' : 'trunk' , '--platform' : sys.platform , '--comment' : 'comment.html' , '--timestamp' : 'timestamp' , '--user' : None , '--source' : 'SVN' , '--run-type' : 'full' , '--ftp-proxy' : None , '--proxy' : None , '--debug-level' : 0 , '--dart-server' : 'beta.boost.org:8081' , '--revision' : None } utils.accept_args( args_spec, args, options, usage ) return { 'results_dir' : options[ '--locate-root' ] , 'runner_id' : options[ '--runner' ] , 'tag' : options[ '--tag' ] , 'platform' : options[ '--platform'] , 'comment_file' : options[ '--comment' ] , 'timestamp_file' : options[ '--timestamp' ] , 'user' : options[ '--user' ] , 'source' : options[ '--source' ] , 'run_type' : options[ '--run-type' ] , 'ftp_proxy' : options[ '--ftp-proxy' ] , 'http_proxy' : options[ '--proxy' ] , 'debug_level' : int(options[ '--debug-level' ]) , 'send_bjam_log' : options.has_key( '--send-bjam-log' ) , 'dart_server' : options[ '--dart-server' ] , 'revision ' : options[ '--revision' ] }commands = { 'collect-and-upload' : collect_and_upload_logs , 'collect-logs' : collect_logs , 'upload-logs' : upload_logs }def usage(): print 'Usage: %s [command] [options]' % os.path.basename( sys.argv[0] ) print '''Commands:\t%sOptions:\t--locate-root directory to to scan for "test_log.xml" files\t--runner runner ID (e.g. "Metacomm")\t--timestamp path to a file which modification time will be used \t as a timestamp of the run ("timestamp" by default)\t--comment an HTML comment file to be inserted in the reports\t ("comment.html" by default)\t--tag the tag for the results ("trunk" by default)\t--user SourceForge user name for a shell account (optional)\t--source where Boost sources came from ("SVN" or "tarball";\t "SVN" by default)\t--run-type "incremental" or "full" ("full" by default)\t--send-bjam-log in addition to regular XML results, send in full bjam\t log of the regression run\t--proxy HTTP proxy server address and port (e.g.\t 'http://www.someproxy.com:3128', optional)\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() ) def main(): if len(sys.argv) > 1 and sys.argv[1] in commands: command = sys.argv[1] args = sys.argv[ 2: ] else: command = 'collect-and-upload' args = sys.argv[ 1: ] commands[ command ]( **accept_args( args ) )if __name__ != '__main__': import utilselse: # in absense of relative import... xsl_path = os.path.abspath( os.path.dirname( sys.argv[ 0 ] ) ) while os.path.basename( xsl_path ) != 'xsl_reports': xsl_path = os.path.dirname( xsl_path ) sys.path.append( xsl_path ) import utils main()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -