gecko-dev/build/leaktest.py.in

54 lines
1.8 KiB
Python

#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)