author Ms2ger <>
Thu, 22 Aug 2013 08:56:00 +0200
changeset 143767 043b46d19b1c37a40a8ea651a856908487fb0f41
parent 140506 c22896a275640374218862768e95df771a709956
permissions -rw-r--r--
Bug 883284 - Part d: Move LIBXUL_LIBRARY into (f-j); r=bsmedberg

#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

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

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:
            automation.log.addHandler(logging.FileHandler(opts[0][1], "w"))
  "Unable to open logfile " + opts[0][1] + \
                                "ONLY logging to stdout.")

    httpd = EasyServer(("", PORT), SimpleHTTPServer.SimpleHTTPRequestHandler)
    t = threading.Thread(target=httpd.serve_forever)

    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)