OLD | NEW |
---|---|
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 | 2 |
3 """ | 3 """ |
4 Copyright 2014 Google Inc. | 4 Copyright 2014 Google Inc. |
5 | 5 |
6 Use of this source code is governed by a BSD-style license that can be | 6 Use of this source code is governed by a BSD-style license that can be |
7 found in the LICENSE file. | 7 found in the LICENSE file. |
8 | 8 |
9 Test imagepair.py | 9 Test imagepair.py |
10 """ | 10 """ |
11 | 11 |
12 # System-level imports | 12 # System-level imports |
13 import shutil | 13 import shutil |
14 import tempfile | 14 import tempfile |
15 import unittest | 15 import unittest |
16 | 16 |
17 # Local imports | 17 # Local imports |
18 import imagediffdb | 18 import imagediffdb |
19 import imagepair | 19 import imagepair |
20 | 20 |
21 | 21 |
22 IMG_URL_BASE = ('http://chromium-skia-gm.commondatastorage.googleapis.com/' | 22 IMG_URL_BASE = ('http://chromium-skia-gm.commondatastorage.googleapis.com/' |
23 'gm/bitmap-64bitMD5/') | 23 'gm/bitmap-64bitMD5/') |
24 ALT_IMG_URL_BASE = ('http://chromium-skia-gm.commondatastorage.googleapis.com/' | |
25 'test/gm/bitmap-64bitMD5/') | |
24 | 26 |
25 | 27 |
26 class ImagePairTest(unittest.TestCase): | 28 class ImagePairTest(unittest.TestCase): |
27 | 29 |
28 def setUp(self): | 30 def setUp(self): |
29 self.temp_dir = tempfile.mkdtemp() | 31 self.temp_dir = tempfile.mkdtemp() |
30 self.maxDiff = None | 32 self.maxDiff = None |
31 | 33 |
32 def tearDown(self): | 34 def tearDown(self): |
33 shutil.rmtree(self.temp_dir) | 35 shutil.rmtree(self.temp_dir) |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
67 # expected output: | 69 # expected output: |
68 { | 70 { |
69 'extraColumns': { | 71 'extraColumns': { |
70 'builder': 'MyBuilder', | 72 'builder': 'MyBuilder', |
71 'test': 'MyTest', | 73 'test': 'MyTest', |
72 }, | 74 }, |
73 'imageAUrl': 'arcofzorro/16206093933823793653.png', | 75 'imageAUrl': 'arcofzorro/16206093933823793653.png', |
74 'imageBUrl': 'arcofzorro/16206093933823793653.png', | 76 'imageBUrl': 'arcofzorro/16206093933823793653.png', |
75 'isDifferent': False, | 77 'isDifferent': False, |
76 }, | 78 }, |
79 # use alternate imageB base url: | |
epoger
2014/08/21 16:15:22
AFAICT, the different settings for this parameter
rmistry
2014/08/21 18:15:06
This parameter was read and exercised at line 209.
epoger
2014/08/21 18:25:06
I see that the parameter was read, but the paramet
rmistry
2014/08/21 19:07:01
The parameter's value did modify the results of th
epoger
2014/08/21 19:20:30
Ah, so you added a new file to GS ( gs://chromium-
| |
80 True, | |
epoger
2014/08/21 16:15:22
Assuming that this parameter is really being exerc
rmistry
2014/08/21 18:15:06
Used the tuple suggestion. Done.
| |
77 ], | 81 ], |
78 | 82 |
79 [ | 83 [ |
80 # inputs: | 84 # inputs: |
81 'arcofzorro/16206093933823793653.png', | 85 'arcofzorro/16206093933823793653.png', |
82 'arcofzorro/13786535001616823825.png', | 86 'arcofzorro/13786535001616823825.png', |
83 None, | 87 None, |
84 None, | 88 None, |
85 # expected output: | 89 # expected output: |
86 { | 90 { |
87 'differenceData': { | 91 'differenceData': { |
88 'maxDiffPerChannel': [255, 255, 247], | 92 'maxDiffPerChannel': [255, 255, 247], |
89 'numDifferingPixels': 662, | 93 'numDifferingPixels': 662, |
90 'percentDifferingPixels': 0.0662, | 94 'percentDifferingPixels': 0.0662, |
91 'perceptualDifference': 0.06620300000000157, | 95 'perceptualDifference': 0.06620300000000157, |
92 'diffUrl': 'arcofzorro_16206093933823793653_png_png-vs-' + | 96 'diffUrl': 'arcofzorro_16206093933823793653_png_png-vs-' + |
93 'arcofzorro_13786535001616823825_png_png.png', | 97 'arcofzorro_13786535001616823825_png_png.png', |
94 'whiteDiffUrl': 'arcofzorro_16206093933823793653_png_png' + | 98 'whiteDiffUrl': 'arcofzorro_16206093933823793653_png_png' + |
95 '-vs-arcofzorro_13786535001616823825_png_png.png', | 99 '-vs-arcofzorro_13786535001616823825_png_png.png', |
96 }, | 100 }, |
97 'imageAUrl': 'arcofzorro/16206093933823793653.png', | 101 'imageAUrl': 'arcofzorro/16206093933823793653.png', |
98 'imageBUrl': 'arcofzorro/13786535001616823825.png', | 102 'imageBUrl': 'arcofzorro/13786535001616823825.png', |
99 'isDifferent': True, | 103 'isDifferent': True, |
100 }, | 104 }, |
105 # use alternate imageB base url: | |
106 False, | |
101 ], | 107 ], |
102 | 108 |
103 [ | 109 [ |
104 # inputs: | 110 # inputs: |
105 'gradients_degenerate_2pt/10552995703607727960.png', | 111 'gradients_degenerate_2pt/10552995703607727960.png', |
106 'gradients_degenerate_2pt/11198253335583713230.png', | 112 'gradients_degenerate_2pt/11198253335583713230.png', |
107 { | 113 { |
108 'ignoreFailure': True, | 114 'ignoreFailure': True, |
109 'bugs': [1001, 1002], | 115 'bugs': [1001, 1002], |
110 }, | 116 }, |
(...skipping 23 matching lines...) Expand all Loading... | |
134 'extraColumns': { | 140 'extraColumns': { |
135 'builder': 'MyBuilder', | 141 'builder': 'MyBuilder', |
136 'test': 'MyTest', | 142 'test': 'MyTest', |
137 }, | 143 }, |
138 'imageAUrl': | 144 'imageAUrl': |
139 'gradients_degenerate_2pt/10552995703607727960.png', | 145 'gradients_degenerate_2pt/10552995703607727960.png', |
140 'imageBUrl': | 146 'imageBUrl': |
141 'gradients_degenerate_2pt/11198253335583713230.png', | 147 'gradients_degenerate_2pt/11198253335583713230.png', |
142 'isDifferent': True, | 148 'isDifferent': True, |
143 }, | 149 }, |
150 # use alternate imageB base url: | |
151 False, | |
144 ], | 152 ], |
145 | 153 |
146 # Test fix for http://skbug.com/2368 -- how do we handle an ImagePair | 154 # Test fix for http://skbug.com/2368 -- how do we handle an ImagePair |
147 # missing one of its images? | 155 # missing one of its images? |
148 [ | 156 [ |
149 # inputs: | 157 # inputs: |
150 'arcofzorro/16206093933823793653.png', | 158 'arcofzorro/16206093933823793653.png', |
151 'nonexistentDir/111111.png', | 159 'nonexistentDir/111111.png', |
152 { | 160 { |
153 'ignoreFailure': True, | 161 'ignoreFailure': True, |
(...skipping 10 matching lines...) Expand all Loading... | |
164 'ignoreFailure': True, | 172 'ignoreFailure': True, |
165 }, | 173 }, |
166 'extraColumns': { | 174 'extraColumns': { |
167 'builder': 'MyBuilder', | 175 'builder': 'MyBuilder', |
168 'test': 'MyTest', | 176 'test': 'MyTest', |
169 }, | 177 }, |
170 'imageAUrl': 'arcofzorro/16206093933823793653.png', | 178 'imageAUrl': 'arcofzorro/16206093933823793653.png', |
171 'imageBUrl': 'nonexistentDir/111111.png', | 179 'imageBUrl': 'nonexistentDir/111111.png', |
172 'isDifferent': True, | 180 'isDifferent': True, |
173 }, | 181 }, |
182 # use alternate imageB base url: | |
183 False, | |
174 ], | 184 ], |
175 | 185 |
176 # One of the two images is missing, but download_all_images=True so we | 186 # One of the two images is missing, but download_all_images=True so we |
177 # should download it anyway. | 187 # should download it anyway. |
178 [ | 188 [ |
179 # inputs: | 189 # inputs: |
180 None, | 190 None, |
181 'arcofzorro/13786535001616823825.png', | 191 'arcofzorro/13786535001616823825.png', |
182 None, | 192 None, |
183 None, | 193 None, |
184 # expected output: | 194 # expected output: |
185 { | 195 { |
186 'imageAUrl': None, | 196 'imageAUrl': None, |
187 'imageBUrl': 'arcofzorro/13786535001616823825.png', | 197 'imageBUrl': 'arcofzorro/13786535001616823825.png', |
188 'isDifferent': True, | 198 'isDifferent': True, |
189 }, | 199 }, |
200 # use alternate imageB base url: | |
201 False, | |
190 ], | 202 ], |
191 | 203 |
192 ] | 204 ] |
193 | 205 |
194 db = imagediffdb.ImageDiffDB(self.temp_dir) | 206 db = imagediffdb.ImageDiffDB(self.temp_dir) |
195 for selftest in selftests: | 207 for selftest in selftests: |
208 imageA_base_url = IMG_URL_BASE | |
209 if selftest[5]: | |
210 imageB_base_url = ALT_IMG_URL_BASE | |
211 else: | |
212 imageB_base_url = IMG_URL_BASE | |
196 image_pair = imagepair.ImagePair( | 213 image_pair = imagepair.ImagePair( |
197 image_diff_db=db, | 214 image_diff_db=db, |
198 base_url=IMG_URL_BASE, | 215 imageA_base_url=imageA_base_url, |
216 imageB_base_url=imageB_base_url, | |
199 imageA_relative_url=selftest[0], | 217 imageA_relative_url=selftest[0], |
200 imageB_relative_url=selftest[1], | 218 imageB_relative_url=selftest[1], |
201 expectations=selftest[2], | 219 expectations=selftest[2], |
202 extra_columns=selftest[3], | 220 extra_columns=selftest[3], |
203 download_all_images=True) | 221 download_all_images=True) |
204 self.assertEqual(image_pair.as_dict(), selftest[4]) | 222 self.assertEqual(image_pair.as_dict(), selftest[4]) |
205 | 223 |
206 | 224 |
207 def main(): | 225 def main(): |
208 suite = unittest.TestLoader().loadTestsFromTestCase(ImagePairTest) | 226 suite = unittest.TestLoader().loadTestsFromTestCase(ImagePairTest) |
209 unittest.TextTestRunner(verbosity=2).run(suite) | 227 unittest.TextTestRunner(verbosity=2).run(suite) |
210 | 228 |
211 | 229 |
212 if __name__ == '__main__': | 230 if __name__ == '__main__': |
213 main() | 231 main() |
OLD | NEW |