Bug 1536640 - Improve MOZ_LOG support in Android mochitest harness; r=bc

Unifies the mochitest MOZ_LOG file naming and archiving across desktop/android.
Notably the inclusion of pid and uuid for android log files helps generate
appropriate files for e10s on geckoview.

Differential Revision: https://phabricator.services.mozilla.com/D24262

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Geoff Brown 2019-03-25 14:55:20 +00:00
Родитель e1cc009c49
Коммит e8ee36fad6
2 изменённых файлов: 18 добавлений и 16 удалений

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

@ -102,9 +102,8 @@ list of valid flavors.
# Set the desired log modules you want a log be produced
# by a try run for, or leave blank to disable the feature.
# This will be passed to MOZ_LOG environment variable.
# Try run will then put a download link for all log files
# on tbpl.mozilla.org.
# Try run will then put a download link for a zip archive
# of all the log files on treeherder.
MOZ_LOG = ""
#####################
@ -2929,6 +2928,15 @@ toolbar#nav-bar {
self.killAndGetStack(browser_pid, utilityPath, debuggerInfo,
dump_screen=not debuggerInfo)
def archiveMozLogs(self):
if self.mozLogs:
with zipfile.ZipFile("{}/mozLogs.zip".format(os.environ["MOZ_UPLOAD_DIR"]),
"w", zipfile.ZIP_DEFLATED) as logzip:
for logfile in glob.glob("{}/moz*.log*".format(os.environ["MOZ_UPLOAD_DIR"])):
logzip.write(logfile, os.path.basename(logfile))
os.remove(logfile)
logzip.close()
class OutputHandler(object):
"""line output handler for mozrunner"""
@ -3115,13 +3123,7 @@ def run_test_harness(parser, options):
else:
result = runner.runTests(options)
if runner.mozLogs:
with zipfile.ZipFile("{}/mozLogs.zip".format(runner.browserEnv["MOZ_UPLOAD_DIR"]),
"w", zipfile.ZIP_DEFLATED) as logzip:
for logfile in glob.glob("{}/moz*.log*".format(runner.browserEnv["MOZ_UPLOAD_DIR"])):
logzip.write(logfile)
os.remove(logfile)
logzip.close()
runner.archiveMozLogs()
runner.message_logger.finish()
return result

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

@ -6,6 +6,7 @@ import os
import posixpath
import sys
import traceback
import uuid
sys.path.insert(
0, os.path.abspath(
@ -38,7 +39,6 @@ class MochiRemote(MochitestDesktop):
self.certdbNew = True
self.chromePushed = False
self.mozLogName = "moz.log"
self.device = ADBDevice(adb=options.adbPath or 'adb',
device=options.deviceSerial,
@ -311,11 +311,10 @@ class MochiRemote(MochitestDesktop):
# remove desktop environment not used on device
if "XPCOM_MEM_BLOAT_LOG" in browserEnv:
del browserEnv["XPCOM_MEM_BLOAT_LOG"]
# override mozLogs to avoid processing in MochitestDesktop base class
self.mozLogs = None
browserEnv["MOZ_LOG_FILE"] = os.path.join(
self.remoteMozLog,
self.mozLogName)
if self.mozLogs:
browserEnv["MOZ_LOG_FILE"] = os.path.join(
self.remoteMozLog,
"moz-pid=%PID-uid={}.log".format(str(uuid.uuid4())))
if options.dmd:
browserEnv['DMD'] = '1'
# Contents of remoteMozLog will be pulled from device and copied to the
@ -384,6 +383,7 @@ def run_test_harness(parser, options):
if not device_exception and options.log_mach is None and not options.verify:
mochitest.printDeviceInfo(printLogcat=True)
mochitest.archiveMozLogs()
mochitest.message_logger.finish()
return retVal