Bug 961147 - Easy way to get NSPR logs from tryserver mochitests, r=ted

This commit is contained in:
Honza Bambas 2014-01-22 18:54:49 +01:00
Родитель 21a96f60c5
Коммит bb82d984bf
1 изменённых файлов: 27 добавлений и 0 удалений

Просмотреть файл

@ -12,6 +12,7 @@ import sys
SCRIPT_DIR = os.path.abspath(os.path.realpath(os.path.dirname(__file__))) SCRIPT_DIR = os.path.abspath(os.path.realpath(os.path.dirname(__file__)))
sys.path.insert(0, SCRIPT_DIR); sys.path.insert(0, SCRIPT_DIR);
import glob
import json import json
import mozcrash import mozcrash
import mozinfo import mozinfo
@ -26,6 +27,7 @@ import tempfile
import time import time
import traceback import traceback
import urllib2 import urllib2
import zipfile
from automationutils import environment, getDebuggerInfo, isURL, KeyValueParseError, parseKeyValue, processLeakLog, systemMemory, dumpScreen, ShutdownLeaks from automationutils import environment, getDebuggerInfo, isURL, KeyValueParseError, parseKeyValue, processLeakLog, systemMemory, dumpScreen, ShutdownLeaks
from datetime import datetime from datetime import datetime
@ -50,6 +52,16 @@ def resetGlobalLog():
log.addHandler(handler) log.addHandler(handler)
resetGlobalLog() resetGlobalLog()
###########################
# Option for NSPR logging #
###########################
# Set the desired log modules you want an NSPR log be produced by a try run for, or leave blank to disable the feature.
# This will be passed to NSPR_LOG_MODULES environment variable. Try run will then put a download link for the log file
# on tbpl.mozilla.org.
NSPR_LOG_MODULES = ""
#################### ####################
# PROCESS HANDLING # # PROCESS HANDLING #
#################### ####################
@ -648,6 +660,15 @@ class Mochitest(MochitestUtilsMixin):
if options.fatalAssertions: if options.fatalAssertions:
browserEnv["XPCOM_DEBUG_BREAK"] = "stack-and-abort" browserEnv["XPCOM_DEBUG_BREAK"] = "stack-and-abort"
# Produce an NSPR log, is setup (see NSPR_LOG_MODULES global at the top of
# this script).
self.nsprLogs = NSPR_LOG_MODULES and "MOZ_UPLOAD_DIR" in os.environ
if self.nsprLogs:
browserEnv["NSPR_LOG_MODULES"] = NSPR_LOG_MODULES
browserEnv["NSPR_LOG_FILE"] = "%s/nspr.log" % tempfile.gettempdir()
browserEnv["GECKO_SEPARATE_NSPR_LOGS"] = "1"
return browserEnv return browserEnv
def cleanup(self, manifest, options): def cleanup(self, manifest, options):
@ -1041,6 +1062,12 @@ class Mochitest(MochitestUtilsMixin):
self.stopWebSocketServer(options) self.stopWebSocketServer(options)
processLeakLog(self.leak_report_file, options.leakThreshold) processLeakLog(self.leak_report_file, options.leakThreshold)
if self.nsprLogs:
with zipfile.ZipFile("%s/nsprlog.zip" % browserEnv["MOZ_UPLOAD_DIR"], "w", zipfile.ZIP_DEFLATED) as logzip:
for logfile in glob.glob("%s/nspr*.log*" % tempfile.gettempdir()):
logzip.write(logfile)
os.remove(logfile)
log.info("runtests.py | Running tests: end.") log.info("runtests.py | Running tests: end.")
if manifest is not None: if manifest is not None: