diff -r 000000000000 -r 6474c204b198 build/leaktest.py.in --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/build/leaktest.py.in Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,53 @@ +#literal #!/usr/bin/python +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import SimpleHTTPServer +import SocketServer +import threading +import os +import sys +import logging +from getopt import getopt +from automation import Automation + +PORT = 8888 +SCRIPT_DIR = os.path.abspath(os.path.realpath(os.path.dirname(sys.argv[0]))) +PROFILE_DIRECTORY = os.path.abspath(os.path.join(SCRIPT_DIR, "./leakprofile")) +os.chdir(SCRIPT_DIR) + +class EasyServer(SocketServer.TCPServer): + allow_reuse_address = True + +if __name__ == '__main__': + automation = Automation() + DIST_BIN = os.path.join(SCRIPT_DIR, automation.DIST_BIN) + opts, extraArgs = getopt(sys.argv[1:], 'l:') + if len(opts) > 0: + try: + automation.log.addHandler(logging.FileHandler(opts[0][1], "w")) + except: + automation.log.info("Unable to open logfile " + opts[0][1] + \ + "ONLY logging to stdout.") + + httpd = EasyServer(("", PORT), SimpleHTTPServer.SimpleHTTPRequestHandler) + t = threading.Thread(target=httpd.serve_forever) + t.setDaemon(True) + t.start() + + automation.setServerInfo("localhost", PORT) + + # keep a profile reference so that it is not cleaned up immediately via __del__ + profile = automation.initializeProfile(PROFILE_DIRECTORY) + + browserEnv = automation.environment() + + if not "XPCOM_DEBUG_BREAK" in browserEnv: + browserEnv["XPCOM_DEBUG_BREAK"] = "stack" + url = "http://localhost:%d/bloatcycle.html" % PORT + appPath = os.path.join(SCRIPT_DIR, automation.DEFAULT_APP) + status = automation.runApp(url, browserEnv, appPath, PROFILE_DIRECTORY, + extraArgs, timeout=1800) + sys.exit(status)