diff options
Diffstat (limited to 'tools/regression/src/smoke.py')
-rwxr-xr-x | tools/regression/src/smoke.py | 197 |
1 files changed, 0 insertions, 197 deletions
diff --git a/tools/regression/src/smoke.py b/tools/regression/src/smoke.py deleted file mode 100755 index 1b17cfaae..000000000 --- a/tools/regression/src/smoke.py +++ /dev/null @@ -1,197 +0,0 @@ -# smoke test - every so many minutes, check svn revision, and if changed: -# update working copy, run tests, upload results - -# Copyright Beman Dawes 2007 - -# Distributed under the Boost Software License, Version 1.0. (See accompanying -# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -# ---------------------------------------------------------------------------- # - -import os -import sys -import platform -import time -import ftplib - -# invoke the system command line processor -def cmd(command): - print "command:", command - os.system(command) - -# update SVN working copy -def update_working_copy(boost_path): - os.chdir(boost_path) - cmd("svn update") - -# get repository url -def repository_url(path, results_path): - url = "" - svn_info_file = results_path + "/svn_info.xml" - command = "svn info --xml " + path + " >" + svn_info_file - cmd(command) - f = open( svn_info_file, 'r' ) - svn_info = f.read() - f.close() - i = svn_info.find('//svn.boost.org') - if i >= 0: - url = svn_info[i:svn_info.find("</url>")] - return url - -# get revision number of a path, which may be a filesystem path or URL -def revision(path, results_path, test_name): - rev = 0 - svn_info_file = results_path + "/" + test_name + "-svn_info.xml" - command = "svn info --xml " + path + " >" + svn_info_file - cmd(command) - f = open( svn_info_file, 'r' ) - svn_info = f.read() - f.close() - i = svn_info.find( 'revision=' ) - if i >= 0: - i += 10 - while svn_info[i] >= '0' and svn_info[i] <= '9': - rev = rev*10 + int(svn_info[i]) - i += 1 - return rev - -# run bjam in current directory -def bjam(boost_path, args, output_path, test_name): - - # bjam seems to need BOOST_BUILD_PATH - #os.environ["BOOST_BUILD_PATH"]=boost_path + "/tools/build/v2" - - print "Begin bjam..." - command = "bjam --v2 --dump-tests -l180" - if args != "": command += " " + args - command += " >" + output_path + "/" + test_name +"-bjam.log 2>&1" - cmd(command) - -# run process_jam_log in current directory -def process_jam_log(boost_path, output_path, test_name): - print "Begin log processing..." - command = "process_jam_log " + boost_path + " <" +\ - output_path + "/" + test_name +"-bjam.log" - cmd(command) - -# run compiler_status in current directory -def compiler_status(boost_path, output_path, test_name): - print "Begin compiler status html creation... " - command = "compiler_status --v2 --ignore-pass --no-warn --locate-root " + boost_path + " " +\ - boost_path + " " + output_path + "/" + test_name + "-results.html " +\ - output_path + "/" + test_name + "-details.html " - cmd(command) - -# upload results via ftp -def upload_to_ftp(results_path, test_name, ftp_url, user, psw, debug_level): - - # to minimize the time web pages are not available, upload with temporary - # names and then rename to the permanent names - - i = 0 # dummy variable - os.chdir(results_path) - - tmp_results = "temp-" + test_name + "-results.html" - results = test_name + "-results.html" - tmp_details = "temp-" + test_name + "-details.html" - details = test_name + "-details.html" - - print "Uploading results via ftp..." - ftp = ftplib.FTP( ftp_url, user, psw ) - ftp.set_debuglevel( debug_level ) - - # ftp.cwd( site_path ) - - try: ftp.delete(tmp_results) - except: ++i - - f = open( results, 'rb' ) - ftp.storbinary( 'STOR %s' % tmp_results, f ) - f.close() - - try: ftp.delete(tmp_details) - except: ++i - - f = open( details, 'rb' ) - ftp.storbinary( 'STOR %s' % tmp_details, f ) - f.close() - - try: ftp.delete(results) - except: ++i - - try: ftp.delete(details) - except: ++i - - ftp.rename(tmp_results, results) - ftp.rename(tmp_details, details) - - ftp.dir() - ftp.quit() - -def commit_results(results_path, test_name, rev): - print "Commit results..." - cwd = os.getcwd() - os.chdir(results_path) - command = "svn commit --non-interactive -m "+'"'+str(rev)+'" '+test_name+"-results.html" - cmd(command) - os.chdir(cwd) - - -# ---------------------------------------------------------------------------- # - -if len(sys.argv) < 7: - print "Invoke with: minutes boost-path test-name results-path ftp-url user psw [bjam-args]" - print " boost-path must be path for a boost svn working directory." - print " results-path must be path for a svn working directory where an" - print " svn commit test-name+'-results.html' is valid." - print "Warning: This program hangs or crashes on network failures." - exit() - -minutes = int(sys.argv[1]) -boost_path = sys.argv[2] -test_name = sys.argv[3] -results_path = sys.argv[4] -ftp_url = sys.argv[5] -user = sys.argv[6] -psw = sys.argv[7] -if len(sys.argv) > 8: bjam_args = sys.argv[8] -else: bjam_args = "" - -os.chdir(boost_path) # convert possible relative path -boost_path = os.getcwd() # to absolute path - -print "minutes is ", minutes -print "boost_path is ", boost_path -print "test_name is ", test_name -print "results_path is ", results_path -print "ftp_url is ", ftp_url -print "user is ", user -print "psw is ", psw -print 'bjam args are "' + bjam_args + '"' - -url = repository_url(boost_path, results_path) -print "respository url is ", url - -first = 1 -while 1: - working_rev = revision(boost_path, results_path, test_name) - repos_rev = revision("http:" + url, results_path, test_name) - print "Working copy revision: ", working_rev, " repository revision: ", repos_rev - if first or working_rev != repos_rev: - first = 0 - start_time = time.time() - print - print "start at", time.strftime("%H:%M:%S", time.localtime()) - update_working_copy(boost_path) - os.chdir(boost_path+"/status") - bjam(boost_path, bjam_args, results_path, test_name) - process_jam_log(boost_path, results_path, test_name) - compiler_status(boost_path, results_path, test_name) - upload_to_ftp(results_path, test_name, ftp_url, user, psw, 0) - commit_results(results_path, test_name,revision(boost_path, results_path, test_name)) - elapsed_time = time.time() - start_time - print elapsed_time/60.0, "minutes elapsed time" - print - - print "sleep ", minutes, "minutes..." - time.sleep(60 * minutes) |