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 |