Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(715)

Unified Diff: content/test/gpu/gpu_tests/gpu_integration_test.py

Issue 2459213003: Symbolize all unsymbolized minidumps upon unexpected test failure. (Closed)
Patch Set: Only symbolize minidumps for tests expected to pass, but which failed. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/test/gpu/gpu_tests/gpu_integration_test.py
diff --git a/content/test/gpu/gpu_tests/gpu_integration_test.py b/content/test/gpu/gpu_tests/gpu_integration_test.py
index 3c4e98d3d4b10d574ce1517231bb019d821c347a..ef6bb7e5287237f05a899844de9b628cfcbf73de 100644
--- a/content/test/gpu/gpu_tests/gpu_integration_test.py
+++ b/content/test/gpu/gpu_tests/gpu_integration_test.py
@@ -81,6 +81,14 @@ class GpuIntegrationTest(
# This is not an expected exception or test failure, so print
# the detail to the console.
exception_formatter.PrintFormattedException()
+ # Symbolize any crash dump (like from the GPU process) that
+ # might have happened but wasn't detected above. Note we don't
+ # do this for either 'fail' or 'flaky' expectations because
+ # there are still quite a few flaky failures in the WebGL test
+ # expectations, and since minidump symbolization is slow
+ # (upwards of one minute on a fast laptop), symbolizing all the
+ # stacks could slow down the tests' running time unacceptably.
+ self._SymbolizeUnsymbolizedMinidumps()
# This failure might have been caused by a browser or renderer
# crash, so restart the browser to make sure any state doesn't
# propagate to the next test iteration.
@@ -128,6 +136,25 @@ class GpuIntegrationTest(
logging.warning(
'%s was expected to fail, but passed.\n', test_name)
+ def _SymbolizeUnsymbolizedMinidumps(self):
+ # The fakes used for unit tests don't mock this entry point yet.
+ if not hasattr(self.browser, 'GetAllUnsymbolizedMinidumpPaths'):
+ return
+ i = 10
+ if self.browser.GetAllUnsymbolizedMinidumpPaths():
+ logging.error('Symbolizing minidump paths: ' + str(
+ self.browser.GetAllUnsymbolizedMinidumpPaths()))
+ else:
+ logging.error('No minidump paths to symbolize')
+ while i > 0 and self.browser.GetAllUnsymbolizedMinidumpPaths():
+ i = i - 1
+ sym = self.browser.SymbolizeMinidump(
+ self.browser.GetAllUnsymbolizedMinidumpPaths()[0])
+ if sym[0]:
+ logging.error('Symbolized minidump:\n' + sym[1])
+ else:
+ logging.error('Minidump symbolization failed:\n' + sym[1])
+
@classmethod
def GenerateGpuTests(cls, options):
"""Subclasses must implement this to yield (test_name, url, args)
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698