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
16 # The Original Code is mozilla.org code.
18 # The Initial Developer of the Original Code is
20 # Portions created by the Initial Developer are Copyright (C) 1998
21 # the Initial Developer. All Rights Reserved.
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
48 from getopt
import getopt
49 from automation
import Automation
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"))
56 class EasyServer(SocketServer
.TCPServer
):
57 allow_reuse_address
= True
59 if __name__
== '__main__':
60 automation
= Automation()
61 DIST_BIN
= os
.path
.join(SCRIPT_DIR
, automation
.DIST_BIN
)
62 opts
, extraArgs
= getopt(sys
.argv
[1:], 'l:')
65 automation
.log
.addHandler(logging
.FileHandler(opts
[0][1], "w"))
67 automation
.log
.info("Unable to open logfile " + opts
[0][1] + \
68 "ONLY logging to stdout.")
70 httpd
= EasyServer(("", PORT
), SimpleHTTPServer
.SimpleHTTPRequestHandler
)
71 t
= threading
.Thread(target
=httpd
.serve_forever
)
75 automation
.initializeProfile(PROFILE_DIRECTORY
)
76 browserEnv
= automation
.environment()
78 if not "XPCOM_DEBUG_BREAK" in browserEnv
:
79 browserEnv
["XPCOM_DEBUG_BREAK"] = "stack"
80 url
= "http://localhost:%d/bloatcycle.html" % PORT
81 appPath
= os
.path
.join(SCRIPT_DIR
, automation
.DEFAULT_APP
)
82 status
= automation
.runApp(url
, browserEnv
, appPath
, PROFILE_DIRECTORY
,
83 # leaktest builds are slow, give up and
84 # don't use a timeout.
85 extraArgs
, timeout
=None)