Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 #!/usr/bin/env python | |
| 2 # Copyright 2014 The Chromium Authors. All rights reserved. | |
| 3 # Use of this source code is governed by a BSD-style license that can be | |
| 4 # found in the LICENSE file. | |
| 5 | |
| 6 """Check that explain_binary_size_delta seems to work.""" | |
| 7 | |
| 8 import cStringIO | |
| 9 import sys | |
| 10 import unittest | |
| 11 | |
| 12 import explain_binary_size_delta | |
| 13 | |
|
Primiano Tucci (use gerrit)
2014/05/22 19:02:34
Nit: add extra line here
| |
| 14 class ExplainBinarySizeDeltaTest(unittest.TestCase): | |
| 15 | |
| 16 def testCompare(self): | |
| 17 # List entries have form: symbol_name, symbol_type, symbol_size, file_path | |
| 18 symbol_list1 = ( | |
| 19 # File with one symbol, left as-is. | |
| 20 ( 'unchanged', 't', 1000, '/file_unchanged' ), | |
| 21 # File with one symbol, changed. | |
| 22 ( 'changed', 't', 1000, '/file_all_changed' ), | |
| 23 # File with one symbol, deleted. | |
| 24 ( 'removed', 't', 1000, '/file_all_deleted' ), | |
| 25 # File with two symbols, one unchanged, one changed, same bucket | |
| 26 ( 'unchanged', 't', 1000, '/file_pair_unchanged_changed' ), | |
| 27 ( 'changed', 't', 1000, '/file_pair_unchanged_changed' ), | |
| 28 # File with two symbols, one unchanged, one deleted, same bucket | |
| 29 ( 'unchanged', 't', 1000, '/file_pair_unchanged_removed' ), | |
| 30 ( 'removed', 't', 1000, '/file_pair_unchanged_removed' ), | |
| 31 # File with two symbols, one unchanged, one added, same bucket | |
| 32 ( 'unchanged', 't', 1000, '/file_pair_unchanged_added' ), | |
| 33 # File with two symbols, one unchanged, one changed, different bucket | |
| 34 ( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_changed' ), | |
| 35 ( 'changed', '@', 1000, '/file_pair_unchanged_diffbuck_changed' ), | |
| 36 # File with two symbols, one unchanged, one deleted, different bucket | |
| 37 ( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_removed' ), | |
| 38 ( 'removed', '@', 1000, '/file_pair_unchanged_diffbuck_removed' ), | |
| 39 # File with two symbols, one unchanged, one added, different bucket | |
| 40 ( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_added' ), | |
| 41 # File with four symbols, one added, one removed, | |
| 42 # one changed, one unchanged | |
| 43 ( 'size_changed', 't', 1000, '/file_tetra' ), | |
| 44 ( 'removed', 't', 1000, '/file_tetra' ), | |
| 45 ( 'unchanged', 't', 1000, '/file_tetra' ), | |
| 46 ) | |
| 47 | |
| 48 symbol_list2 = ( | |
| 49 # File with one symbol, left as-is. | |
| 50 ( 'unchanged', 't', 1000, '/file_unchanged' ), | |
| 51 # File with one symbol, changed. | |
| 52 ( 'changed', 't', 2000, '/file_all_changed' ), | |
| 53 # File with two symbols, one unchanged, one changed, same bucket | |
| 54 ( 'unchanged', 't', 1000, '/file_pair_unchanged_changed' ), | |
| 55 ( 'changed', 't', 2000, '/file_pair_unchanged_changed' ), | |
| 56 # File with two symbols, one unchanged, one deleted, same bucket | |
| 57 ( 'unchanged', 't', 1000, '/file_pair_unchanged_removed' ), | |
| 58 # File with two symbols, one unchanged, one added, same bucket | |
| 59 ( 'unchanged', 't', 1000, '/file_pair_unchanged_added' ), | |
| 60 ( 'added', 't', 1000, '/file_pair_unchanged_added' ), | |
| 61 # File with two symbols, one unchanged, one changed, different bucket | |
| 62 ( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_changed' ), | |
| 63 ( 'changed', '@', 2000, '/file_pair_unchanged_diffbuck_changed' ), | |
| 64 # File with two symbols, one unchanged, one deleted, different bucket | |
| 65 ( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_removed' ), | |
| 66 # File with two symbols, one unchanged, one added, different bucket | |
| 67 ( 'unchanged', 't', 1000, '/file_pair_unchanged_diffbuck_added' ), | |
| 68 ( 'added', '@', 1000, '/file_pair_unchanged_diffbuck_added' ), | |
| 69 # File with four symbols, one added, one removed, | |
| 70 # one changed, one unchanged | |
| 71 ( 'size_changed', 't', 2000, '/file_tetra' ), | |
| 72 ( 'unchanged', 't', 1000, '/file_tetra' ), | |
| 73 ( 'added', 't', 1000, '/file_tetra' ), | |
| 74 # New file with one symbol added | |
| 75 ( 'added', 't', 1000, '/file_new' ), | |
| 76 ) | |
| 77 | |
| 78 # Here we go | |
| 79 (added, removed, changed, unchanged) = \ | |
| 80 explain_binary_size_delta.Compare(symbol_list1, symbol_list2) | |
| 81 | |
| 82 # File with one symbol, left as-is. | |
| 83 assert ('/file_unchanged', 't', 'unchanged', 1000, 1000) in unchanged | |
| 84 # File with one symbol, changed. | |
| 85 assert ('/file_all_changed', 't', 'changed', 1000, 2000) in changed | |
| 86 # File with one symbol, deleted. | |
| 87 assert ('/file_all_deleted', 't', 'removed', 1000, None) in removed | |
| 88 # New file with one symbol added | |
| 89 assert ('/file_new', 't', 'added', None, 1000) in added | |
| 90 # File with two symbols, one unchanged, one changed, same bucket | |
| 91 assert ('/file_pair_unchanged_changed', | |
| 92 't', 'unchanged', 1000, 1000) in unchanged | |
| 93 assert ('/file_pair_unchanged_changed', | |
| 94 't', 'changed', 1000, 2000) in changed | |
| 95 # File with two symbols, one unchanged, one removed, same bucket | |
| 96 assert ('/file_pair_unchanged_removed', | |
| 97 't', 'unchanged', 1000, 1000) in unchanged | |
| 98 assert ('/file_pair_unchanged_removed', | |
| 99 't', 'removed', 1000, None) in removed | |
| 100 # File with two symbols, one unchanged, one added, same bucket | |
| 101 assert ('/file_pair_unchanged_added', | |
| 102 't', 'unchanged', 1000, 1000) in unchanged | |
| 103 assert ('/file_pair_unchanged_added', | |
| 104 't', 'added', None, 1000) in added | |
| 105 # File with two symbols, one unchanged, one changed, different bucket | |
| 106 assert ('/file_pair_unchanged_diffbuck_changed', | |
| 107 't', 'unchanged', 1000, 1000) in unchanged | |
| 108 assert ('/file_pair_unchanged_diffbuck_changed', | |
| 109 '@', 'changed', 1000, 2000) in changed | |
| 110 # File with two symbols, one unchanged, one removed, different bucket | |
| 111 assert ('/file_pair_unchanged_diffbuck_removed', | |
| 112 't', 'unchanged', 1000, 1000) in unchanged | |
| 113 assert ('/file_pair_unchanged_diffbuck_removed', | |
| 114 '@', 'removed', 1000, None) in removed | |
| 115 # File with two symbols, one unchanged, one added, different bucket | |
| 116 assert ('/file_pair_unchanged_diffbuck_added', | |
| 117 't', 'unchanged', 1000, 1000) in unchanged | |
| 118 assert ('/file_pair_unchanged_diffbuck_added', | |
| 119 '@', 'added', None, 1000) in added | |
| 120 # File with four symbols, one added, one removed, one changed, one unchanged | |
| 121 assert ('/file_tetra', 't', 'size_changed', 1000, 2000) in changed | |
| 122 assert ('/file_tetra', 't', 'unchanged', 1000, 1000) in unchanged | |
| 123 assert ('/file_tetra', 't', 'added', None, 1000) in added | |
| 124 assert ('/file_tetra', 't', 'removed', 1000, None) in removed | |
| 125 | |
| 126 # Now check final stats. | |
| 127 orig_stdout = sys.stdout | |
| 128 output_collector = cStringIO.StringIO() | |
| 129 sys.stdout = output_collector | |
| 130 try: | |
| 131 explain_binary_size_delta.CrunchStats(added, removed, changed, | |
| 132 unchanged, True, True) | |
| 133 finally: | |
| 134 sys.stdout = orig_stdout | |
| 135 result = output_collector.getvalue() | |
| 136 | |
| 137 expected_output = """\ | |
| 138 Symbol statistics: | |
| 139 4 added, totalling 4000 bytes across 4 sources | |
| 140 4 removed, totalling 4000 bytes removed across 4 sources | |
| 141 4 changed, resulting in a net change of 4000 bytes \ | |
| 142 (4000 bytes before, 8000 bytes after) across 4 sources | |
| 143 8 unchanged, totalling 8000 bytes | |
| 144 Source stats: | |
| 145 11 sources encountered. | |
| 146 1 completely new. | |
| 147 1 removed completely. | |
| 148 8 partially changed. | |
| 149 1 completely unchanged. | |
| 150 Per-source Analysis: | |
| 151 Source: /file_all_changed | |
| 152 Change: 1000 bytes (gained 1000, lost 0) | |
| 153 Changed symbols: | |
| 154 changed type=t, delta=1000 bytes (was 1000 bytes, now 2000 bytes) | |
| 155 Source: /file_all_deleted | |
| 156 Change: -1000 bytes (gained 0, lost 1000) | |
| 157 Removed symbols: | |
| 158 removed type=t, size=1000 bytes | |
| 159 Source: /file_new | |
| 160 Change: 1000 bytes (gained 1000, lost 0) | |
| 161 New symbols: | |
| 162 added type=t, size=1000 bytes | |
| 163 Source: /file_pair_unchanged_added | |
| 164 Change: 1000 bytes (gained 1000, lost 0) | |
| 165 New symbols: | |
| 166 added type=t, size=1000 bytes | |
| 167 Source: /file_pair_unchanged_changed | |
| 168 Change: 1000 bytes (gained 1000, lost 0) | |
| 169 Changed symbols: | |
| 170 changed type=t, delta=1000 bytes (was 1000 bytes, now 2000 bytes) | |
| 171 Source: /file_pair_unchanged_diffbuck_added | |
| 172 Change: 1000 bytes (gained 1000, lost 0) | |
| 173 New symbols: | |
| 174 added type=@, size=1000 bytes | |
| 175 Source: /file_pair_unchanged_diffbuck_changed | |
| 176 Change: 1000 bytes (gained 1000, lost 0) | |
| 177 Changed symbols: | |
| 178 changed type=@, delta=1000 bytes (was 1000 bytes, now 2000 bytes) | |
| 179 Source: /file_pair_unchanged_diffbuck_removed | |
| 180 Change: -1000 bytes (gained 0, lost 1000) | |
| 181 Removed symbols: | |
| 182 removed type=@, size=1000 bytes | |
| 183 Source: /file_pair_unchanged_removed | |
| 184 Change: -1000 bytes (gained 0, lost 1000) | |
| 185 Removed symbols: | |
| 186 removed type=t, size=1000 bytes | |
| 187 Source: /file_tetra | |
| 188 Change: 1000 bytes (gained 2000, lost 1000) | |
| 189 New symbols: | |
| 190 added type=t, size=1000 bytes | |
| 191 Removed symbols: | |
| 192 removed type=t, size=1000 bytes | |
| 193 Changed symbols: | |
| 194 size_changed type=t, delta=1000 bytes (was 1000 bytes, now 2000 bytes) | |
| 195 """ | |
| 196 | |
| 197 self.maxDiff = None | |
| 198 self.assertMultiLineEqual(expected_output, result) | |
| 199 print "explain_binary_size_delta_unittest: All tests passed" | |
| 200 | |
| 201 | |
| 202 if __name__ == '__main__': | |
| 203 unittest.main() | |
| OLD | NEW |