Commit 0b3926aa authored by bratell@opera.com's avatar bratell@opera.com

Added PRESUBMIT.py for binary_size tools.

Make the tests run for every commit to make sure tests and code
stay in sync and are both working.

BUG=

Review URL: https://codereview.chromium.org/296003007

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@272496 0039d316-1c4b-4281-b951-d872f2087c98
parent 0fd58696
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""binary_size presubmit script
See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
for more details about the presubmit API built into gcl.
"""
def CommonChecks(input_api, output_api):
output = []
output.extend(input_api.canned_checks.RunPylint(input_api, output_api))
output.extend(
input_api.canned_checks.RunUnitTestsInDirectory(
input_api, output_api,
input_api.PresubmitLocalPath(),
whitelist=[r'.+_unittest\.py$']))
if input_api.is_committing:
output.extend(input_api.canned_checks.PanProjectChecks(input_api,
output_api,
owners_check=False))
return output
def CheckChangeOnUpload(input_api, output_api):
return CommonChecks(input_api, output_api)
def CheckChangeOnCommit(input_api, output_api):
return CommonChecks(input_api, output_api)
...@@ -107,117 +107,6 @@ def Compare(symbols1, symbols2): ...@@ -107,117 +107,6 @@ def Compare(symbols1, symbols2):
return (added, removed, changed, unchanged) return (added, removed, changed, unchanged)
def TestCompare():
# List entries have form: symbol_name, symbol_type, symbol_size, file_path
symbol_list1 = (
# File with one symbol, left as-is.
( 'unchanged', 't', 1000, '/file_unchanged' ),
# File with one symbol, changed.
( 'changed', 't', 1000, '/file_all_changed' ),
# File with one symbol, deleted.
( 'removed', 't', 1000, '/file_all_deleted' ),
# File with two symbols, one unchanged, one changed, same bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_changed' ),
( 'changed', 't', 1000, '/file_pair_unchanged_changed' ),
# File with two symbols, one unchanged, one deleted, same bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_removed' ),
( 'removed', 't', 1000, '/file_pair_unchanged_removed' ),
# File with two symbols, one unchanged, one added, same bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_added' ),
# File with two symbols, one unchanged, one changed, different bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_changed' ),
( 'changed', '@', 1000, '/file_pair_unchanged_diffbuck_changed' ),
# File with two symbols, one unchanged, one deleted, different bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_removed' ),
( 'removed', '@', 1000, '/file_pair_unchanged_diffbuck_removed' ),
# File with two symbols, one unchanged, one added, different bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_added' ),
# File with four symbols, one added, one removed, one changed, one unchanged
( 'size_changed', 't', 1000, '/file_tetra' ),
( 'removed', 't', 1000, '/file_tetra' ),
( 'unchanged', 't', 1000, '/file_tetra' ),
)
symbol_list2 = (
# File with one symbol, left as-is.
( 'unchanged', 't', 1000, '/file_unchanged' ),
# File with one symbol, changed.
( 'changed', 't', 2000, '/file_all_changed' ),
# File with two symbols, one unchanged, one changed, same bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_changed' ),
( 'changed', 't', 2000, '/file_pair_unchanged_changed' ),
# File with two symbols, one unchanged, one deleted, same bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_removed' ),
# File with two symbols, one unchanged, one added, same bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_added' ),
( 'added', 't', 1000, '/file_pair_unchanged_added' ),
# File with two symbols, one unchanged, one changed, different bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_changed' ),
( 'changed', '@', 2000, '/file_pair_unchanged_diffbuck_changed' ),
# File with two symbols, one unchanged, one deleted, different bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_removed' ),
# File with two symbols, one unchanged, one added, different bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_added' ),
( 'added', '@', 1000, '/file_pair_unchanged_diffbuck_added' ),
# File with four symbols, one added, one removed, one changed, one unchanged
( 'size_changed', 't', 2000, '/file_tetra' ),
( 'unchanged', 't', 1000, '/file_tetra' ),
( 'added', 't', 1000, '/file_tetra' ),
# New file with one symbol added
( 'added', 't', 1000, '/file_new' ),
)
# Here we go
(added, removed, changed, unchanged) = Compare(symbol_list1, symbol_list2)
# File with one symbol, left as-is.
assert ('/file_unchanged', 't', 'unchanged', 1000, 1000) in unchanged
# File with one symbol, changed.
assert ('/file_all_changed', 't', 'changed', 1000, 2000) in changed
# File with one symbol, deleted.
assert ('/file_all_deleted', 't', 'removed', 1000, None) in removed
# New file with one symbol added
assert ('/file_new', 't', 'added', None, 1000) in added
# File with two symbols, one unchanged, one changed, same bucket
assert ('/file_pair_unchanged_changed',
't', 'unchanged', 1000, 1000) in unchanged
assert ('/file_pair_unchanged_changed',
't', 'changed', 1000, 2000) in changed
# File with two symbols, one unchanged, one removed, same bucket
assert ('/file_pair_unchanged_removed',
't', 'unchanged', 1000, 1000) in unchanged
assert ('/file_pair_unchanged_removed',
't', 'removed', 1000, None) in removed
# File with two symbols, one unchanged, one added, same bucket
assert ('/file_pair_unchanged_added',
't', 'unchanged', 1000, 1000) in unchanged
assert ('/file_pair_unchanged_added',
't', 'added', None, 1000) in added
# File with two symbols, one unchanged, one changed, different bucket
assert ('/file_pair_unchanged_diffbuck_changed',
't', 'unchanged', 1000, 1000) in unchanged
assert ('/file_pair_unchanged_diffbuck_changed',
'@', 'changed', 1000, 2000) in changed
# File with two symbols, one unchanged, one removed, different bucket
assert ('/file_pair_unchanged_diffbuck_removed',
't', 'unchanged', 1000, 1000) in unchanged
assert ('/file_pair_unchanged_diffbuck_removed',
'@', 'removed', 1000, None) in removed
# File with two symbols, one unchanged, one added, different bucket
assert ('/file_pair_unchanged_diffbuck_added',
't', 'unchanged', 1000, 1000) in unchanged
assert ('/file_pair_unchanged_diffbuck_added',
'@', 'added', None, 1000) in added
# File with four symbols, one added, one removed, one changed, one unchanged
assert ('/file_tetra', 't', 'size_changed', 1000, 2000) in changed
assert ('/file_tetra', 't', 'unchanged', 1000, 1000) in unchanged
assert ('/file_tetra', 't', 'added', None, 1000) in added
assert ('/file_tetra', 't', 'removed', 1000, None) in removed
# Now check final stats.
CrunchStats(added, removed, changed, unchanged, True, True)
def CrunchStats(added, removed, changed, unchanged, showsources, showsymbols): def CrunchStats(added, removed, changed, unchanged, showsources, showsymbols):
"""Outputs to stdout a summary of changes based on the symbol lists.""" """Outputs to stdout a summary of changes based on the symbol lists."""
print 'Symbol statistics:' print 'Symbol statistics:'
...@@ -284,7 +173,7 @@ def CrunchStats(added, removed, changed, unchanged, showsources, showsymbols): ...@@ -284,7 +173,7 @@ def CrunchStats(added, removed, changed, unchanged, showsources, showsymbols):
sources_with_removed_symbols | sources_with_removed_symbols |
sources_with_changed_symbols | sources_with_changed_symbols |
maybe_unchanged_sources) maybe_unchanged_sources)
print 'Source stats: ' print 'Source stats:'
print(' %d sources encountered.' % len(allFiles)) print(' %d sources encountered.' % len(allFiles))
print(' %d completely new.' % len(new_sources)) print(' %d completely new.' % len(new_sources))
print(' %d removed completely.' % len(removed_sources)) print(' %d removed completely.' % len(removed_sources))
...@@ -379,14 +268,8 @@ def main(): ...@@ -379,14 +268,8 @@ def main():
help='show all symbol information; implies --showfiles') help='show all symbol information; implies --showfiles')
parser.add_option('--verbose', action='store_true', default=False, parser.add_option('--verbose', action='store_true', default=False,
help='output internal debugging stuff') help='output internal debugging stuff')
parser.add_option('--selftest', action='store_true', default=False,
help='run internal diagnosis')
opts, _args = parser.parse_args() opts, _args = parser.parse_args()
if opts.selftest:
TestCompare()
return
if not opts.nm1: if not opts.nm1:
parser.error('--nm1 is required') parser.error('--nm1 is required')
if not opts.nm2: if not opts.nm2:
......
#!/usr/bin/env python
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Check that explain_binary_size_delta seems to work."""
import cStringIO
import sys
import unittest
import explain_binary_size_delta
class ExplainBinarySizeDeltaTest(unittest.TestCase):
def testCompare(self):
# List entries have form: symbol_name, symbol_type, symbol_size, file_path
symbol_list1 = (
# File with one symbol, left as-is.
( 'unchanged', 't', 1000, '/file_unchanged' ),
# File with one symbol, changed.
( 'changed', 't', 1000, '/file_all_changed' ),
# File with one symbol, deleted.
( 'removed', 't', 1000, '/file_all_deleted' ),
# File with two symbols, one unchanged, one changed, same bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_changed' ),
( 'changed', 't', 1000, '/file_pair_unchanged_changed' ),
# File with two symbols, one unchanged, one deleted, same bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_removed' ),
( 'removed', 't', 1000, '/file_pair_unchanged_removed' ),
# File with two symbols, one unchanged, one added, same bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_added' ),
# File with two symbols, one unchanged, one changed, different bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_changed' ),
( 'changed', '@', 1000, '/file_pair_unchanged_diffbuck_changed' ),
# File with two symbols, one unchanged, one deleted, different bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_removed' ),
( 'removed', '@', 1000, '/file_pair_unchanged_diffbuck_removed' ),
# File with two symbols, one unchanged, one added, different bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_added' ),
# File with four symbols, one added, one removed,
# one changed, one unchanged
( 'size_changed', 't', 1000, '/file_tetra' ),
( 'removed', 't', 1000, '/file_tetra' ),
( 'unchanged', 't', 1000, '/file_tetra' ),
)
symbol_list2 = (
# File with one symbol, left as-is.
( 'unchanged', 't', 1000, '/file_unchanged' ),
# File with one symbol, changed.
( 'changed', 't', 2000, '/file_all_changed' ),
# File with two symbols, one unchanged, one changed, same bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_changed' ),
( 'changed', 't', 2000, '/file_pair_unchanged_changed' ),
# File with two symbols, one unchanged, one deleted, same bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_removed' ),
# File with two symbols, one unchanged, one added, same bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_added' ),
( 'added', 't', 1000, '/file_pair_unchanged_added' ),
# File with two symbols, one unchanged, one changed, different bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_changed' ),
( 'changed', '@', 2000, '/file_pair_unchanged_diffbuck_changed' ),
# File with two symbols, one unchanged, one deleted, different bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_removed' ),
# File with two symbols, one unchanged, one added, different bucket
( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_added' ),
( 'added', '@', 1000, '/file_pair_unchanged_diffbuck_added' ),
# File with four symbols, one added, one removed,
# one changed, one unchanged
( 'size_changed', 't', 2000, '/file_tetra' ),
( 'unchanged', 't', 1000, '/file_tetra' ),
( 'added', 't', 1000, '/file_tetra' ),
# New file with one symbol added
( 'added', 't', 1000, '/file_new' ),
)
# Here we go
(added, removed, changed, unchanged) = \
explain_binary_size_delta.Compare(symbol_list1, symbol_list2)
# File with one symbol, left as-is.
assert ('/file_unchanged', 't', 'unchanged', 1000, 1000) in unchanged
# File with one symbol, changed.
assert ('/file_all_changed', 't', 'changed', 1000, 2000) in changed
# File with one symbol, deleted.
assert ('/file_all_deleted', 't', 'removed', 1000, None) in removed
# New file with one symbol added
assert ('/file_new', 't', 'added', None, 1000) in added
# File with two symbols, one unchanged, one changed, same bucket
assert ('/file_pair_unchanged_changed',
't', 'unchanged', 1000, 1000) in unchanged
assert ('/file_pair_unchanged_changed',
't', 'changed', 1000, 2000) in changed
# File with two symbols, one unchanged, one removed, same bucket
assert ('/file_pair_unchanged_removed',
't', 'unchanged', 1000, 1000) in unchanged
assert ('/file_pair_unchanged_removed',
't', 'removed', 1000, None) in removed
# File with two symbols, one unchanged, one added, same bucket
assert ('/file_pair_unchanged_added',
't', 'unchanged', 1000, 1000) in unchanged
assert ('/file_pair_unchanged_added',
't', 'added', None, 1000) in added
# File with two symbols, one unchanged, one changed, different bucket
assert ('/file_pair_unchanged_diffbuck_changed',
't', 'unchanged', 1000, 1000) in unchanged
assert ('/file_pair_unchanged_diffbuck_changed',
'@', 'changed', 1000, 2000) in changed
# File with two symbols, one unchanged, one removed, different bucket
assert ('/file_pair_unchanged_diffbuck_removed',
't', 'unchanged', 1000, 1000) in unchanged
assert ('/file_pair_unchanged_diffbuck_removed',
'@', 'removed', 1000, None) in removed
# File with two symbols, one unchanged, one added, different bucket
assert ('/file_pair_unchanged_diffbuck_added',
't', 'unchanged', 1000, 1000) in unchanged
assert ('/file_pair_unchanged_diffbuck_added',
'@', 'added', None, 1000) in added
# File with four symbols, one added, one removed, one changed, one unchanged
assert ('/file_tetra', 't', 'size_changed', 1000, 2000) in changed
assert ('/file_tetra', 't', 'unchanged', 1000, 1000) in unchanged
assert ('/file_tetra', 't', 'added', None, 1000) in added
assert ('/file_tetra', 't', 'removed', 1000, None) in removed
# Now check final stats.
orig_stdout = sys.stdout
output_collector = cStringIO.StringIO()
sys.stdout = output_collector
try:
explain_binary_size_delta.CrunchStats(added, removed, changed,
unchanged, True, True)
finally:
sys.stdout = orig_stdout
result = output_collector.getvalue()
expected_output = """\
Symbol statistics:
4 added, totalling 4000 bytes across 4 sources
4 removed, totalling 4000 bytes removed across 4 sources
4 changed, resulting in a net change of 4000 bytes \
(4000 bytes before, 8000 bytes after) across 4 sources
8 unchanged, totalling 8000 bytes
Source stats:
11 sources encountered.
1 completely new.
1 removed completely.
8 partially changed.
1 completely unchanged.
Per-source Analysis:
Source: /file_all_changed
Change: 1000 bytes (gained 1000, lost 0)
Changed symbols:
changed type=t, delta=1000 bytes (was 1000 bytes, now 2000 bytes)
Source: /file_all_deleted
Change: -1000 bytes (gained 0, lost 1000)
Removed symbols:
removed type=t, size=1000 bytes
Source: /file_new
Change: 1000 bytes (gained 1000, lost 0)
New symbols:
added type=t, size=1000 bytes
Source: /file_pair_unchanged_added
Change: 1000 bytes (gained 1000, lost 0)
New symbols:
added type=t, size=1000 bytes
Source: /file_pair_unchanged_changed
Change: 1000 bytes (gained 1000, lost 0)
Changed symbols:
changed type=t, delta=1000 bytes (was 1000 bytes, now 2000 bytes)
Source: /file_pair_unchanged_diffbuck_added
Change: 1000 bytes (gained 1000, lost 0)
New symbols:
added type=@, size=1000 bytes
Source: /file_pair_unchanged_diffbuck_changed
Change: 1000 bytes (gained 1000, lost 0)
Changed symbols:
changed type=@, delta=1000 bytes (was 1000 bytes, now 2000 bytes)
Source: /file_pair_unchanged_diffbuck_removed
Change: -1000 bytes (gained 0, lost 1000)
Removed symbols:
removed type=@, size=1000 bytes
Source: /file_pair_unchanged_removed
Change: -1000 bytes (gained 0, lost 1000)
Removed symbols:
removed type=t, size=1000 bytes
Source: /file_tetra
Change: 1000 bytes (gained 2000, lost 1000)
New symbols:
added type=t, size=1000 bytes
Removed symbols:
removed type=t, size=1000 bytes
Changed symbols:
size_changed type=t, delta=1000 bytes (was 1000 bytes, now 2000 bytes)
"""
self.maxDiff = None
self.assertMultiLineEqual(expected_output, result)
print "explain_binary_size_delta_unittest: All tests passed"
if __name__ == '__main__':
unittest.main()
...@@ -36,7 +36,7 @@ elf_symbolizer_path = os.path.abspath(os.path.join( ...@@ -36,7 +36,7 @@ elf_symbolizer_path = os.path.abspath(os.path.join(
'android', 'android',
'pylib')) 'pylib'))
sys.path.append(elf_symbolizer_path) sys.path.append(elf_symbolizer_path)
import symbols.elf_symbolizer as elf_symbolizer import symbols.elf_symbolizer as elf_symbolizer # pylint: disable=F0401
# TODO(andrewhayden): Only used for legacy reports. Delete. # TODO(andrewhayden): Only used for legacy reports. Delete.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment