Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(404)

Side by Side Diff: tools/unittests/run_benchmarks_test.py

Issue 313603002: Let benchmark runner exit with proper return codes. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « tools/run_benchmarks.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2014 the V8 project authors. All rights reserved. 2 # Copyright 2014 the V8 project authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 from collections import namedtuple 6 from collections import namedtuple
7 import coverage 7 import coverage
8 import json 8 import json
9 from mock import DEFAULT 9 from mock import DEFAULT
10 from mock import MagicMock 10 from mock import MagicMock
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 os.chdir = MagicMock(side_effect=chdir) 118 os.chdir = MagicMock(side_effect=chdir)
119 119
120 def _CallMain(self, *args): 120 def _CallMain(self, *args):
121 self._test_output = path.join(TEST_WORKSPACE, "results.json") 121 self._test_output = path.join(TEST_WORKSPACE, "results.json")
122 all_args=[ 122 all_args=[
123 "--json-test-results", 123 "--json-test-results",
124 self._test_output, 124 self._test_output,
125 self._test_input, 125 self._test_input,
126 ] 126 ]
127 all_args += args 127 all_args += args
128 run_benchmarks.Main(all_args) 128 return run_benchmarks.Main(all_args)
129 129
130 def _LoadResults(self): 130 def _LoadResults(self):
131 with open(self._test_output) as f: 131 with open(self._test_output) as f:
132 return json.load(f) 132 return json.load(f)
133 133
134 def _VerifyResults(self, suite, units, traces): 134 def _VerifyResults(self, suite, units, traces):
135 self.assertEquals([ 135 self.assertEquals([
136 {"units": units, 136 {"units": units,
137 "graphs": [suite, trace["name"]], 137 "graphs": [suite, trace["name"]],
138 "results": trace["results"]} for trace in traces], 138 "results": trace["results"]} for trace in traces],
(...skipping 11 matching lines...) Expand all
150 expected = [] 150 expected = []
151 for arg in args: 151 for arg in args:
152 a = [path.join(path.dirname(self.base), arg[0])] 152 a = [path.join(path.dirname(self.base), arg[0])]
153 a += arg[1:] 153 a += arg[1:]
154 expected.append(((a,), {"timeout": 60})) 154 expected.append(((a,), {"timeout": 60}))
155 self.assertEquals(expected, commands.Execute.call_args_list) 155 self.assertEquals(expected, commands.Execute.call_args_list)
156 156
157 def testOneRun(self): 157 def testOneRun(self):
158 self._WriteTestInput(V8_JSON) 158 self._WriteTestInput(V8_JSON)
159 self._MockCommand(["."], ["x\nRichards: 1.234\nDeltaBlue: 10657567\ny\n"]) 159 self._MockCommand(["."], ["x\nRichards: 1.234\nDeltaBlue: 10657567\ny\n"])
160 self._CallMain() 160 self.assertEquals(0, self._CallMain())
161 self._VerifyResults("test", "score", [ 161 self._VerifyResults("test", "score", [
162 {"name": "Richards", "results": ["1.234"]}, 162 {"name": "Richards", "results": ["1.234"]},
163 {"name": "DeltaBlue", "results": ["10657567"]}, 163 {"name": "DeltaBlue", "results": ["10657567"]},
164 ]) 164 ])
165 self._VerifyErrors([]) 165 self._VerifyErrors([])
166 self._VerifyMock(path.join("out", "x64.release", "d7"), "--flag", "run.js") 166 self._VerifyMock(path.join("out", "x64.release", "d7"), "--flag", "run.js")
167 167
168 def testTwoRuns_Units_SuiteName(self): 168 def testTwoRuns_Units_SuiteName(self):
169 test_input = dict(V8_JSON) 169 test_input = dict(V8_JSON)
170 test_input["run_count"] = 2 170 test_input["run_count"] = 2
171 test_input["name"] = "v8" 171 test_input["name"] = "v8"
172 test_input["units"] = "ms" 172 test_input["units"] = "ms"
173 self._WriteTestInput(test_input) 173 self._WriteTestInput(test_input)
174 self._MockCommand([".", "."], 174 self._MockCommand([".", "."],
175 ["Richards: 100\nDeltaBlue: 200\n", 175 ["Richards: 100\nDeltaBlue: 200\n",
176 "Richards: 50\nDeltaBlue: 300\n"]) 176 "Richards: 50\nDeltaBlue: 300\n"])
177 self._CallMain() 177 self.assertEquals(0, self._CallMain())
178 self._VerifyResults("v8", "ms", [ 178 self._VerifyResults("v8", "ms", [
179 {"name": "Richards", "results": ["50", "100"]}, 179 {"name": "Richards", "results": ["50", "100"]},
180 {"name": "DeltaBlue", "results": ["300", "200"]}, 180 {"name": "DeltaBlue", "results": ["300", "200"]},
181 ]) 181 ])
182 self._VerifyErrors([]) 182 self._VerifyErrors([])
183 self._VerifyMock(path.join("out", "x64.release", "d7"), "--flag", "run.js") 183 self._VerifyMock(path.join("out", "x64.release", "d7"), "--flag", "run.js")
184 184
185 def testTwoRuns_SubRegexp(self): 185 def testTwoRuns_SubRegexp(self):
186 test_input = dict(V8_JSON) 186 test_input = dict(V8_JSON)
187 test_input["run_count"] = 2 187 test_input["run_count"] = 2
188 del test_input["results_regexp"] 188 del test_input["results_regexp"]
189 test_input["benchmarks"][0]["results_regexp"] = "^Richards: (.+)$" 189 test_input["benchmarks"][0]["results_regexp"] = "^Richards: (.+)$"
190 test_input["benchmarks"][1]["results_regexp"] = "^DeltaBlue: (.+)$" 190 test_input["benchmarks"][1]["results_regexp"] = "^DeltaBlue: (.+)$"
191 self._WriteTestInput(test_input) 191 self._WriteTestInput(test_input)
192 self._MockCommand([".", "."], 192 self._MockCommand([".", "."],
193 ["Richards: 100\nDeltaBlue: 200\n", 193 ["Richards: 100\nDeltaBlue: 200\n",
194 "Richards: 50\nDeltaBlue: 300\n"]) 194 "Richards: 50\nDeltaBlue: 300\n"])
195 self._CallMain() 195 self.assertEquals(0, self._CallMain())
196 self._VerifyResults("test", "score", [ 196 self._VerifyResults("test", "score", [
197 {"name": "Richards", "results": ["50", "100"]}, 197 {"name": "Richards", "results": ["50", "100"]},
198 {"name": "DeltaBlue", "results": ["300", "200"]}, 198 {"name": "DeltaBlue", "results": ["300", "200"]},
199 ]) 199 ])
200 self._VerifyErrors([]) 200 self._VerifyErrors([])
201 self._VerifyMock(path.join("out", "x64.release", "d7"), "--flag", "run.js") 201 self._VerifyMock(path.join("out", "x64.release", "d7"), "--flag", "run.js")
202 202
203 def testNestedSuite(self): 203 def testNestedSuite(self):
204 self._WriteTestInput(V8_NESTED_SUITES_JSON) 204 self._WriteTestInput(V8_NESTED_SUITES_JSON)
205 self._MockCommand(["delta_blue", "sub/leaf", "richards"], 205 self._MockCommand(["delta_blue", "sub/leaf", "richards"],
206 ["DeltaBlue: 200\n", 206 ["DeltaBlue: 200\n",
207 "Simple: 1 ms.\n", 207 "Simple: 1 ms.\n",
208 "Simple: 2 ms.\n", 208 "Simple: 2 ms.\n",
209 "Simple: 3 ms.\n", 209 "Simple: 3 ms.\n",
210 "Richards: 100\n", 210 "Richards: 100\n",
211 "Richards: 50\n"]) 211 "Richards: 50\n"])
212 self._CallMain() 212 self.assertEquals(0, self._CallMain())
213 self.assertEquals([ 213 self.assertEquals([
214 {"units": "score", 214 {"units": "score",
215 "graphs": ["test", "Richards"], 215 "graphs": ["test", "Richards"],
216 "results": ["50", "100"]}, 216 "results": ["50", "100"]},
217 {"units": "ms", 217 {"units": "ms",
218 "graphs": ["test", "Sub", "Leaf"], 218 "graphs": ["test", "Sub", "Leaf"],
219 "results": ["3", "2", "1"]}, 219 "results": ["3", "2", "1"]},
220 {"units": "score", 220 {"units": "score",
221 "graphs": ["test", "DeltaBlue"], 221 "graphs": ["test", "DeltaBlue"],
222 "results": ["200"]}, 222 "results": ["200"]},
223 ], self._LoadResults()["traces"]) 223 ], self._LoadResults()["traces"])
224 self._VerifyErrors([]) 224 self._VerifyErrors([])
225 self._VerifyMockMultiple( 225 self._VerifyMockMultiple(
226 (path.join("out", "x64.release", "d7"), "--flag", "file1.js", 226 (path.join("out", "x64.release", "d7"), "--flag", "file1.js",
227 "file2.js", "run.js"), 227 "file2.js", "run.js"),
228 (path.join("out", "x64.release", "d7"), "--flag", "file1.js", 228 (path.join("out", "x64.release", "d7"), "--flag", "file1.js",
229 "file2.js", "run.js"), 229 "file2.js", "run.js"),
230 (path.join("out", "x64.release", "d8"), "--flag", "run.js"), 230 (path.join("out", "x64.release", "d8"), "--flag", "run.js"),
231 (path.join("out", "x64.release", "d8"), "--flag", "run.js"), 231 (path.join("out", "x64.release", "d8"), "--flag", "run.js"),
232 (path.join("out", "x64.release", "d8"), "--flag", "run.js"), 232 (path.join("out", "x64.release", "d8"), "--flag", "run.js"),
233 (path.join("out", "x64.release", "d8"), "--flag", "--flag2", "run.js")) 233 (path.join("out", "x64.release", "d8"), "--flag", "--flag2", "run.js"))
234 234
235 def testBuildbot(self): 235 def testBuildbot(self):
236 self._WriteTestInput(V8_JSON) 236 self._WriteTestInput(V8_JSON)
237 self._MockCommand(["."], ["Richards: 1.234\nDeltaBlue: 10657567\n"]) 237 self._MockCommand(["."], ["Richards: 1.234\nDeltaBlue: 10657567\n"])
238 self._CallMain("--buildbot") 238 self.assertEquals(0, self._CallMain("--buildbot"))
239 self._VerifyResults("test", "score", [ 239 self._VerifyResults("test", "score", [
240 {"name": "Richards", "results": ["1.234"]}, 240 {"name": "Richards", "results": ["1.234"]},
241 {"name": "DeltaBlue", "results": ["10657567"]}, 241 {"name": "DeltaBlue", "results": ["10657567"]},
242 ]) 242 ])
243 self._VerifyErrors([]) 243 self._VerifyErrors([])
244 self._VerifyMock(path.join("out", "Release", "d7"), "--flag", "run.js") 244 self._VerifyMock(path.join("out", "Release", "d7"), "--flag", "run.js")
245 245
246 def testRegexpNoMatch(self): 246 def testRegexpNoMatch(self):
247 self._WriteTestInput(V8_JSON) 247 self._WriteTestInput(V8_JSON)
248 self._MockCommand(["."], ["x\nRichaards: 1.234\nDeltaBlue: 10657567\ny\n"]) 248 self._MockCommand(["."], ["x\nRichaards: 1.234\nDeltaBlue: 10657567\ny\n"])
249 self._CallMain() 249 self.assertEquals(1, self._CallMain())
250 self._VerifyResults("test", "score", [ 250 self._VerifyResults("test", "score", [
251 {"name": "Richards", "results": []}, 251 {"name": "Richards", "results": []},
252 {"name": "DeltaBlue", "results": ["10657567"]}, 252 {"name": "DeltaBlue", "results": ["10657567"]},
253 ]) 253 ])
254 self._VerifyErrors( 254 self._VerifyErrors(
255 ["Regexp \"^Richards: (.+)$\" didn't match for benchmark Richards."]) 255 ["Regexp \"^Richards: (.+)$\" didn't match for benchmark Richards."])
256 self._VerifyMock(path.join("out", "x64.release", "d7"), "--flag", "run.js") 256 self._VerifyMock(path.join("out", "x64.release", "d7"), "--flag", "run.js")
OLDNEW
« no previous file with comments | « tools/run_benchmarks.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698