summaryrefslogtreecommitdiff
path: root/tools/regression/src/smoke.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/regression/src/smoke.py')
-rwxr-xr-xtools/regression/src/smoke.py197
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)