зеркало из https://github.com/mozilla/gecko-dev.git
Bug 961147 - Easy way to get NSPR logs from tryserver mochitests, r=ted
This commit is contained in:
Родитель
21a96f60c5
Коммит
bb82d984bf
|
@ -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:
|
||||||
|
|
Загрузка…
Ссылка в новой задаче