build/leaktest.py.in
author Ehsan Akhgari <ehsan@mozilla.com>
Wed, 22 Aug 2012 11:56:38 -0400
changeset 102997 a16372ce30b5f6b747246b01fcd215a4bf3b6342
parent 94475 f4157e8c410708d76703f19e4dfb61859bfe32d8
child 108067 2f9d00b31660f9e972abc0018ff6edb2a4aeb110
permissions -rw-r--r--
Bug 579517 - Part 1: Automated conversion of NSPR numeric types to stdint types in Gecko; r=bsmedberg This patch was generated by a script. Here's the source of the script for future reference: function convert() { echo "Converting $1 to $2..." find . ! -wholename "*nsprpub*" \ ! -wholename "*security/nss*" \ ! -wholename "*/.hg*" \ ! -wholename "obj-ff-dbg*" \ ! -name nsXPCOMCID.h \ ! -name prtypes.h \ -type f \ \( -iname "*.cpp" \ -o -iname "*.h" \ -o -iname "*.c" \ -o -iname "*.cc" \ -o -iname "*.idl" \ -o -iname "*.ipdl" \ -o -iname "*.ipdlh" \ -o -iname "*.mm" \) | \ xargs -n 1 sed -i -e "s/\b$1\b/$2/g" } convert PRInt8 int8_t convert PRUint8 uint8_t convert PRInt16 int16_t convert PRUint16 uint16_t convert PRInt32 int32_t convert PRUint32 uint32_t convert PRInt64 int64_t convert PRUint64 uint64_t convert PRIntn int convert PRUintn unsigned convert PRSize size_t convert PROffset32 int32_t convert PROffset64 int64_t convert PRPtrdiff ptrdiff_t convert PRFloat64 double

#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)
    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,
                               # leaktest builds are slow, give up and
                               # don't use a timeout.
                               extraArgs, timeout=None)
    sys.exit(status)