2 # Copyright (c) 2013 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 """Unit tests for update_perf_expectations."""
7 from StringIO
import StringIO
9 import make_expectations
as perf_ex_lib
10 import update_perf_expectations
as upe_mod
13 # A separate .json file contains the list of test cases we'll use.
14 # The tests used to be defined inline here, but are >80 characters in length.
15 # Now they are expected to be defined in file ./sample_test_cases.json.
16 # Create a dictionary of tests using .json file.
17 all_tests
= perf_ex_lib
.ConvertJsonIntoDict(
18 perf_ex_lib
.ReadFile('sample_test_cases.json'))
20 all_tests_keys
= all_tests
.keys()
23 def VerifyPreparedTests(self
, tests_to_update
, reva
, revb
):
24 # Work with a copy of the set of tests.
25 all_tests_copy
= copy
.deepcopy(all_tests
)
26 upe_mod
.PrepareTestsForUpdate(tests_to_update
, all_tests_copy
, reva
, revb
)
27 # Make sure reva < revb
32 # Run through all tests and make sure only those that were
33 # specified to be modified had their 'sha1' value removed.
34 for test_key
in all_tests_keys
:
35 new_test_value
= all_tests_copy
[test_key
]
36 original_test_value
= all_tests
[test_key
]
37 if test_key
in tests_to_update
:
38 # Make sure there is no "sha1".
39 self
.assertFalse('sha1' in new_test_value
)
40 # Make sure reva and revb values are correctly set.
41 self
.assertEqual(reva
, new_test_value
['reva'])
42 self
.assertEqual(revb
, new_test_value
['revb'])
44 # Make sure there is an "sha1" value
45 self
.assertTrue('sha1' in new_test_value
)
46 # Make sure the sha1, reva and revb values have not changed.
47 self
.assertEqual(original_test_value
['sha1'], new_test_value
['sha1'])
48 self
.assertEqual(original_test_value
['reva'], new_test_value
['reva'])
49 self
.assertEqual(original_test_value
['revb'], new_test_value
['revb'])
52 class UpdatePerfExpectationsTest(unittest
.TestCase
):
53 def testFilterMatch(self
):
54 """Verifies different regular expressions test filter."""
56 # Tests to update specified by a single literal string.
57 tests_to_update
= 'win-release/media_tests_av_perf/fps/tulip2.webm'
58 expected_tests_list
= ['win-release/media_tests_av_perf/fps/tulip2.webm']
59 self
.assertEqual(expected_tests_list
,
60 upe_mod
.GetMatchingTests(tests_to_update
,
63 # Tests to update specified by a single reg-ex
64 tests_to_update
= 'win-release/media_tests_av_perf/fps.*'
65 expected_tests_list
= ['win-release/media_tests_av_perf/fps/crowd1080.webm',
66 'win-release/media_tests_av_perf/fps/crowd2160.webm',
67 'win-release/media_tests_av_perf/fps/crowd360.webm',
68 'win-release/media_tests_av_perf/fps/crowd480.webm',
69 'win-release/media_tests_av_perf/fps/crowd720.webm',
70 'win-release/media_tests_av_perf/fps/tulip2.m4a',
71 'win-release/media_tests_av_perf/fps/tulip2.mp3',
72 'win-release/media_tests_av_perf/fps/tulip2.mp4',
73 'win-release/media_tests_av_perf/fps/tulip2.ogg',
74 'win-release/media_tests_av_perf/fps/tulip2.ogv',
75 'win-release/media_tests_av_perf/fps/tulip2.wav',
76 'win-release/media_tests_av_perf/fps/tulip2.webm']
77 actual_list
= upe_mod
.GetMatchingTests(tests_to_update
,
80 self
.assertEqual(expected_tests_list
, actual_list
)
82 # Tests to update are specified by a single reg-ex, spanning multiple OSes.
83 tests_to_update
= '.*-release/media_tests_av_perf/fps.*'
84 expected_tests_list
= ['linux-release/media_tests_av_perf/fps/tulip2.m4a',
85 'linux-release/media_tests_av_perf/fps/tulip2.mp3',
86 'linux-release/media_tests_av_perf/fps/tulip2.mp4',
87 'linux-release/media_tests_av_perf/fps/tulip2.ogg',
88 'linux-release/media_tests_av_perf/fps/tulip2.ogv',
89 'linux-release/media_tests_av_perf/fps/tulip2.wav',
90 'win-release/media_tests_av_perf/fps/crowd1080.webm',
91 'win-release/media_tests_av_perf/fps/crowd2160.webm',
92 'win-release/media_tests_av_perf/fps/crowd360.webm',
93 'win-release/media_tests_av_perf/fps/crowd480.webm',
94 'win-release/media_tests_av_perf/fps/crowd720.webm',
95 'win-release/media_tests_av_perf/fps/tulip2.m4a',
96 'win-release/media_tests_av_perf/fps/tulip2.mp3',
97 'win-release/media_tests_av_perf/fps/tulip2.mp4',
98 'win-release/media_tests_av_perf/fps/tulip2.ogg',
99 'win-release/media_tests_av_perf/fps/tulip2.ogv',
100 'win-release/media_tests_av_perf/fps/tulip2.wav',
101 'win-release/media_tests_av_perf/fps/tulip2.webm']
102 actual_list
= upe_mod
.GetMatchingTests(tests_to_update
,
105 self
.assertEqual(expected_tests_list
, actual_list
)
107 def testLinesFromInputFile(self
):
108 """Verifies different string formats specified in input file."""
110 # Tests to update have been specified by a single literal string in
112 # Use the StringIO class to mock a file object.
113 lines_from_file
= StringIO(
114 'win-release/media_tests_av_perf/fps/tulip2.webm')
115 contents
= lines_from_file
.read()
116 expected_tests_list
= ['win-release/media_tests_av_perf/fps/tulip2.webm']
117 actual_list
= upe_mod
.GetTestsToUpdate(contents
, all_tests_keys
)
119 self
.assertEqual(expected_tests_list
, actual_list
)
120 lines_from_file
.close()
122 # Tests to update specified by a single reg-ex in an input file.
123 lines_from_file
= StringIO('win-release/media_tests_av_perf/fps/tulip2.*\n')
124 contents
= lines_from_file
.read()
125 expected_tests_list
= ['win-release/media_tests_av_perf/fps/tulip2.m4a',
126 'win-release/media_tests_av_perf/fps/tulip2.mp3',
127 'win-release/media_tests_av_perf/fps/tulip2.mp4',
128 'win-release/media_tests_av_perf/fps/tulip2.ogg',
129 'win-release/media_tests_av_perf/fps/tulip2.ogv',
130 'win-release/media_tests_av_perf/fps/tulip2.wav',
131 'win-release/media_tests_av_perf/fps/tulip2.webm']
132 actual_list
= upe_mod
.GetTestsToUpdate(contents
, all_tests_keys
)
134 self
.assertEqual(expected_tests_list
, actual_list
)
135 lines_from_file
.close()
137 # Tests to update specified by multiple lines in an input file.
138 lines_from_file
= StringIO(
139 '.*-release/media_tests_av_perf/fps/tulip2.*\n'
140 'win-release/media_tests_av_perf/dropped_fps/tulip2.*\n'
141 'linux-release/media_tests_av_perf/audio_latency/latency')
142 contents
= lines_from_file
.read()
143 expected_tests_list
= [
144 'linux-release/media_tests_av_perf/audio_latency/latency',
145 'linux-release/media_tests_av_perf/fps/tulip2.m4a',
146 'linux-release/media_tests_av_perf/fps/tulip2.mp3',
147 'linux-release/media_tests_av_perf/fps/tulip2.mp4',
148 'linux-release/media_tests_av_perf/fps/tulip2.ogg',
149 'linux-release/media_tests_av_perf/fps/tulip2.ogv',
150 'linux-release/media_tests_av_perf/fps/tulip2.wav',
151 'win-release/media_tests_av_perf/dropped_fps/tulip2.wav',
152 'win-release/media_tests_av_perf/dropped_fps/tulip2.webm',
153 'win-release/media_tests_av_perf/fps/tulip2.m4a',
154 'win-release/media_tests_av_perf/fps/tulip2.mp3',
155 'win-release/media_tests_av_perf/fps/tulip2.mp4',
156 'win-release/media_tests_av_perf/fps/tulip2.ogg',
157 'win-release/media_tests_av_perf/fps/tulip2.ogv',
158 'win-release/media_tests_av_perf/fps/tulip2.wav',
159 'win-release/media_tests_av_perf/fps/tulip2.webm']
160 actual_list
= upe_mod
.GetTestsToUpdate(contents
, all_tests_keys
)
162 self
.assertEqual(expected_tests_list
, actual_list
)
163 lines_from_file
.close()
165 def testPreparingForUpdate(self
):
166 """Verifies that tests to be modified are changed as expected."""
168 'linux-release/media_tests_av_perf/audio_latency/latency',
169 'linux-release/media_tests_av_perf/fps/tulip2.m4a',
170 'linux-release/media_tests_av_perf/fps/tulip2.mp3',
171 'linux-release/media_tests_av_perf/fps/tulip2.mp4',
172 'linux-release/media_tests_av_perf/fps/tulip2.ogg',
173 'linux-release/media_tests_av_perf/fps/tulip2.ogv',
174 'linux-release/media_tests_av_perf/fps/tulip2.wav',
175 'win-release/media_tests_av_perf/dropped_fps/tulip2.wav',
176 'win-release/media_tests_av_perf/dropped_fps/tulip2.webm',
177 'win-release/media_tests_av_perf/fps/tulip2.mp3',
178 'win-release/media_tests_av_perf/fps/tulip2.mp4',
179 'win-release/media_tests_av_perf/fps/tulip2.ogg',
180 'win-release/media_tests_av_perf/fps/tulip2.ogv',
181 'win-release/media_tests_av_perf/fps/tulip2.wav',
182 'win-release/media_tests_av_perf/fps/tulip2.webm']
183 # Test regular positive integers.
186 VerifyPreparedTests(self
, tests_to_update
, reva
, revb
)
187 # Test negative values.
190 with self
.assertRaises(ValueError):
191 upe_mod
.PrepareTestsForUpdate(tests_to_update
, all_tests
, reva
, revb
)
192 # Test reva greater than revb.
195 upe_mod
.PrepareTestsForUpdate(tests_to_update
, all_tests
, reva
, revb
)
196 # Test non-integer values
199 with self
.assertRaises(ValueError):
200 upe_mod
.PrepareTestsForUpdate(tests_to_update
, all_tests
, reva
, revb
)
203 if __name__
== '__main__':