Bug 522299 - fix linux bustage.
[mozilla-central.git] / build / leaktest.py.in
blobfa490a974d3744a684fade117f1f41858b88f998
1 #literal #!/usr/bin/python
3 # ***** BEGIN LICENSE BLOCK *****
4 # Version: MPL 1.1/GPL 2.0/LGPL 2.1
6 # The contents of this file are subject to the Mozilla Public License Version
7 # 1.1 (the "License"); you may not use this file except in compliance with
8 # the License. You may obtain a copy of the License at
9 # http://www.mozilla.org/MPL/
11 # Software distributed under the License is distributed on an "AS IS" basis,
12 # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13 # for the specific language governing rights and limitations under the
14 # License.
16 # The Original Code is mozilla.org code.
18 # The Initial Developer of the Original Code is
19 # Mozilla Foundation.
20 # Portions created by the Initial Developer are Copyright (C) 1998
21 # the Initial Developer. All Rights Reserved.
23 # Contributor(s):
24 # Robert Sayre <sayrer@gmail.com>
25 # Jeff Walden <jwalden+bmo@mit.edu>
26 # Ben Hearsum <bhearsum@mozilla.com>
28 # Alternatively, the contents of this file may be used under the terms of
29 # either the GNU General Public License Version 2 or later (the "GPL"), or
30 # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
31 # in which case the provisions of the GPL or the LGPL are applicable instead
32 # of those above. If you wish to allow use of your version of this file only
33 # under the terms of either the GPL or the LGPL, and not to allow others to
34 # use your version of this file under the terms of the MPL, indicate your
35 # decision by deleting the provisions above and replace them with the notice
36 # and other provisions required by the GPL or the LGPL. If you do not delete
37 # the provisions above, a recipient may use your version of this file under
38 # the terms of any one of the MPL, the GPL or the LGPL.
40 # ***** END LICENSE BLOCK *****
42 import SimpleHTTPServer
43 import SocketServer
44 import threading
45 import os
46 import sys
47 import logging
48 from getopt import getopt
49 import automation
51 PORT = 8888
52 SCRIPT_DIR = os.path.abspath(os.path.realpath(os.path.dirname(sys.argv[0])))
53 PROFILE_DIRECTORY = os.path.abspath(os.path.join(SCRIPT_DIR, "./leakprofile"))
54 DIST_BIN = os.path.join(SCRIPT_DIR, automation.DIST_BIN)
55 os.chdir(SCRIPT_DIR)
57 class EasyServer(SocketServer.TCPServer):
58 allow_reuse_address = True
60 if __name__ == '__main__':
61 opts, extraArgs = getopt(sys.argv[1:], 'l:')
62 if len(opts) > 0:
63 try:
64 automation.log.addHandler(logging.FileHandler(opts[0][1], "w"))
65 except:
66 automation.log.info("Unable to open logfile " + opts[0][1] + \
67 "ONLY logging to stdout.")
69 httpd = EasyServer(("", PORT), SimpleHTTPServer.SimpleHTTPRequestHandler)
70 t = threading.Thread(target=httpd.serve_forever)
71 t.setDaemon(True)
72 t.start()
74 automation.initializeProfile(PROFILE_DIRECTORY)
75 browserEnv = automation.environment()
77 if not "XPCOM_DEBUG_BREAK" in browserEnv:
78 browserEnv["XPCOM_DEBUG_BREAK"] = "stack"
79 url = "http://localhost:%d/bloatcycle.html" % PORT
80 appPath = os.path.join(SCRIPT_DIR, automation.DEFAULT_APP)
81 status = automation.runApp(url, browserEnv, appPath, PROFILE_DIRECTORY,
82 extraArgs)
83 sys.exit(status)