author | Jonathan Griffin <jgriffin@mozilla.com> |
Wed, 03 Aug 2011 17:23:15 -0700 | |
changeset 74839 | 70994f9acb3a53636e70d1c3ebf109d9cf57ba98 |
parent 74460 | aca5afbed1883d081218aeb1d99c6f6ef5cfa2ba |
child 74840 | 3c22aef81976413404c4e068fb9abd637c72f4d1 |
push id | 235 |
push user | bzbarsky@mozilla.com |
push date | Tue, 27 Sep 2011 17:13:04 +0000 |
treeherder | mozilla-beta@2d1e082d176a [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | testonly, DONTBUILD |
bugs | 675123 |
milestone | 8.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
testing/tps/INSTALL.sh | file | annotate | diff | comparison | revisions | |
testing/tps/config.json | file | annotate | diff | comparison | revisions | |
testing/tps/config/README.txt | file | annotate | diff | comparison | revisions | |
testing/tps/config/config.json.in | file | annotate | diff | comparison | revisions | |
testing/tps/setup.py | file | annotate | diff | comparison | revisions | |
testing/tps/tps/cli.py | file | annotate | diff | comparison | revisions |
old mode 100644 new mode 100755 --- a/testing/tps/INSTALL.sh +++ b/testing/tps/INSTALL.sh @@ -50,22 +50,41 @@ cd ${TARGET} if [ -z "${VIRTUAL_ENV}" ] then echo "virtualenv wasn't installed correctly, aborting" exit 1 fi # install TPS cd ${CWD} -python setup.py develop +python setup.py install if [ "$?" -gt 0 ] then exit 1 fi +CONFIG="`find ${VIRTUAL_ENV} -name config.json.in`" +NEWCONFIG=${CONFIG:0:${#CONFIG}-3} + +cd "../../services/sync/tests/tps" +TESTDIR="`pwd`" + +cd "../../tps" +EXTDIR="`pwd`" + +sed 's|__TESTDIR__|'"${TESTDIR}"'|' "${CONFIG}" | sed 's|__EXTENSIONDIR__|'"${EXTDIR}"'|' > "${NEWCONFIG}" +rm ${CONFIG} + +echo +echo "***********************************************************************" echo echo "To run TPS, activate the virtualenv using:" echo " source ${TARGET}/${BIN_NAME}" echo "then execute tps using:" echo " runtps --binary=/path/to/firefox" echo echo "See runtps --help for all options" +echo +echo "To change your TPS config, please edit the file: " +echo "${NEWCONFIG}" +echo +echo "***********************************************************************"
deleted file mode 100644 --- a/testing/tps/config.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "account": { - "serverURL": "", - "admin-secret": "", - "username": "crossweaveservices@mozilla.com", - "password": "crossweaveservicescrossweaveservices", - "passphrase": "r-jwcbc-zgf42-fjn72-p5vpp-iypmi" - }, - "resultstore": { - "host": "brasstacks.mozilla.com", - "path": "/resultserv/post/" - }, - "email": { - "username": "crossweave@mozilla.com", - "password": "", - "passednotificationlist": ["crossweave@mozilla.com"], - "notificationlist": ["crossweave@mozilla.com"] - }, - "platform": "win32", - "os": "win7", - "es": "localhost:9200" -} -
new file mode 100644 --- /dev/null +++ b/testing/tps/config/README.txt @@ -0,0 +1,7 @@ +To edit the TPS configuration, do not edit config.json.in in the tree. +Instead, edit config.json inside your virtualenv; it will be located at +something like: + + (linux): /path/to/virtualenv/lib/python2.6/site-packages/tps-0.2.40-py2.6.egg/tps/config.json + (win): /path/to/virtualenv/Lib/site-packages/tps-0.2.40-py2.6.egg/tps/config.json +
new file mode 100644 --- /dev/null +++ b/testing/tps/config/config.json.in @@ -0,0 +1,25 @@ +{ + "account": { + "serverURL": "", + "admin-secret": "", + "username": "crossweaveservices@mozilla.com", + "password": "crossweaveservicescrossweaveservices", + "passphrase": "r-jwcbc-zgf42-fjn72-p5vpp-iypmi" + }, + "resultstore": { + "host": "brasstacks.mozilla.com", + "path": "/resultserv/post/" + }, + "email": { + "username": "crossweave@mozilla.com", + "password": "", + "passednotificationlist": ["crossweave@mozilla.com"], + "notificationlist": ["crossweave@mozilla.com"] + }, + "platform": "win32", + "os": "win7", + "es": "localhost:9200", + "testdir": "__TESTDIR__", + "extensiondir": "__EXTENSIONDIR__" +} +
--- a/testing/tps/setup.py +++ b/testing/tps/setup.py @@ -53,23 +53,26 @@ setup(name='tps', version=version, description='run automated multi-profile sync tests', long_description="""\ """, classifiers=[], # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers keywords='', author='Jonathan Griffin', author_email='jgriffin@mozilla.com', - url='http://hg.mozilla.org/services/tps', + url='http://hg.mozilla.org/services/services-central', license='MPL', dependency_links = [ "http://people.mozilla.org/~jgriffin/packages/" ], packages=find_packages(exclude=['ez_setup', 'examples', 'tests']), include_package_data=True, zip_safe=False, install_requires=deps, entry_points=""" # -*- Entry points: -*- [console_scripts] runtps = tps.cli:main """, + data_files=[ + ('tps', ['config/config.json.in']), + ], )
--- a/testing/tps/tps/cli.py +++ b/testing/tps/tps/cli.py @@ -33,16 +33,17 @@ # the provisions above, a recipient may use your version of this file under # the terms of any one of the MPL, the GPL or the LGPL. # # ***** END LICENSE BLOCK ***** import json import optparse import os +import sys import logging from threading import RLock from tps import TPSFirefoxRunner, TPSPulseMonitor, TPSTestRunner def main(): parser = optparse.OptionParser() @@ -71,35 +72,53 @@ def main(): parser.add_option("--binary", action = "store", type = "string", dest = "binary", default = None, help = "path to the Firefox binary, specified either as " "a local file or a url; if omitted, the PATH " "will be searched;") parser.add_option("--configfile", action = "store", type = "string", dest = "configfile", - default = "config.json", + default = None, help = "path to the config file to use " "[default: %default]") parser.add_option("--pulsefile", action = "store", type = "string", dest = "pulsefile", default = None, help = "path to file containing a pulse message in " "json format that you want to inject into the monitor") (options, args) = parser.parse_args() + configfile = options.configfile + if configfile is None: + if os.environ.get('VIRTUAL_ENV'): + configfile = os.path.join(os.path.dirname(__file__), 'config.json') + else: + raise Exception("Unable to find config.json in a VIRTUAL_ENV; you must " + "specify a config file using the --configfile option") + # load the config file - f = open(options.configfile, 'r') + f = open(configfile, 'r') configcontent = f.read() f.close() config = json.loads(configcontent) rlock = RLock() - extensionDir = os.path.join(os.getcwd(), "..", "..", "services", "sync", "tps") + extensionDir = config.get("extensiondir") + if not extensionDir or extensionDir == '__EXTENSIONDIR__': + extensionDir = os.path.join(os.getcwd(), "..", "..", "services", "sync", "tps") + else: + if sys.platform == 'win32': + # replace msys-style paths with proper Windows paths + import re + m = re.match('^\/\w\/', extensionDir) + if m: + extensionDir = "%s:/%s" % (m.group(0)[1:2], extensionDir[3:]) + extensionDir = extensionDir.replace("/", "\\") if options.binary is None: # If no binary is specified, start the pulse build monitor, and wait # until we receive build notifications before running tests. monitor = TPSPulseMonitor(extensionDir, config=config, autolog=options.autolog, emailresults=options.emailresults,