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

Unified Diff: tools/heapcheck/heapcheck_test.py

Issue 596085: Make the heapheck runner recognize the sanity tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 10 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 | « tools/heapcheck/chrome_tests.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/heapcheck/heapcheck_test.py
===================================================================
--- tools/heapcheck/heapcheck_test.py (revision 38464)
+++ tools/heapcheck/heapcheck_test.py (working copy)
@@ -19,6 +19,7 @@
class HeapcheckWrapper(object):
TMP_FILE = 'heapcheck.log'
+ SANITY_TEST_SUPPRESSION = "Heapcheck sanity test"
def __init__(self, supp_files):
self._mode = 'strict'
@@ -58,21 +59,30 @@
# the purify_test.py script.)
return True
- def Analyze(self, log_lines):
+ def Analyze(self, log_lines, check_sanity=False):
"""Analyzes the app's output and applies suppressions to the reports.
Analyze() searches the logs for leak reports and tries to apply
suppressions to them. Unsuppressed reports and other log messages are
dumped as is.
+ If |check_sanity| is True, the list of suppressed reports is searched for a
+ report starting with SANITY_TEST_SUPPRESSION. If there isn't one, Analyze
+ returns 2 regardless of the unsuppressed reports.
+
Args:
- log_lines: An iterator over the app's log lines.
+ log_lines: An iterator over the app's log lines.
+ check_sanity: A flag that determines whether we should check the tool's
+ sanity.
Returns:
- 1, if unsuppressed reports remain in the output, 0 otherwise.
+ 2, if the sanity check fails,
+ 1, if unsuppressed reports remain in the output and the sanity check
+ passes,
+ 0, if all the errors are suppressed and the sanity check passes.
"""
leak_report = re.compile(
'Leak of ([0-9]*) bytes in ([0-9]*) objects allocated from:')
- stack_line = re.compile('\s*@\s*0x[0-9a-fA-F]*\s*(\S*)')
+ stack_line = re.compile('\s*@\s*[0-9a-fA-F]*\s*(\S*)')
return_code = 0
# leak signature: [number of bytes, number of objects]
cur_leak_signature = None
@@ -122,6 +132,7 @@
else:
print line
# Print the list of suppressions used.
+ is_sane = False
if used_suppressions:
print
print '-----------------------------------------------------'
@@ -129,6 +140,8 @@
print ' count bytes objects name'
histo = {}
for description in used_suppressions:
+ if description.startswith(HeapcheckWrapper.SANITY_TEST_SUPPRESSION):
+ is_sane = True
hits, bytes, objects = used_suppressions[description]
line = '%8d %8d %8d %s' % (hits, bytes, objects, description)
if hits in histo:
@@ -141,21 +154,24 @@
for line in histo[count]:
print line
print '-----------------------------------------------------'
+ if is_sane:
+ return return_code
+ else:
+ logging.error("Sanity check failed")
+ return 2
- return return_code
-
- def RunTestsAndAnalyze(self):
+ def RunTestsAndAnalyze(self, check_sanity):
self.Execute()
log_file = file(self.TMP_FILE, 'r')
- ret = self.Analyze(log_file)
+ ret = self.Analyze(log_file, check_sanity)
log_file.close()
return ret
- def Main(self, args):
+ def Main(self, args, check_sanity=False):
self._args = args
start = datetime.datetime.now()
retcode = -1
- retcode = self.RunTestsAndAnalyze()
+ retcode = self.RunTestsAndAnalyze(check_sanity)
end = datetime.datetime.now()
seconds = (end - start).seconds
hours = seconds / 3600
@@ -166,6 +182,8 @@
return retcode
-def RunTool(args, supp_files):
+def RunTool(args, supp_files, module):
tool = HeapcheckWrapper(supp_files)
- return tool.Main(args[1:])
+ MODULES_TO_SANITY_CHECK = ["base"]
+ check_sanity = module in MODULES_TO_SANITY_CHECK
+ return tool.Main(args[1:], check_sanity)
« no previous file with comments | « tools/heapcheck/chrome_tests.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698