Chromium Code Reviews| Index: chrome/test/functional/perf.py |
| diff --git a/chrome/test/functional/perf.py b/chrome/test/functional/perf.py |
| index 3af55c6d1a76988542f546e85db08877154514a6..66246d9ecf696b5dfd28662e9f9c44e903037930 100644 |
| --- a/chrome/test/functional/perf.py |
| +++ b/chrome/test/functional/perf.py |
| @@ -262,6 +262,49 @@ class BenchmarkPerfTest(BasePerfTest): |
| '%s_%s-%s' % ('score', 'V8Benchmark', benchmark_name), |
| int(benchmark_score)) |
| + def testSunSpider(self): |
| + """Runs the SunSpider javascript benchmark suite.""" |
| + url = self.GetFileURLForDataPath('sunspider', 'sunspider-driver.html') |
| + self.assertTrue(self.AppendTab(pyauto.GURL(url)), |
| + msg='Failed to append tab for SunSpider benchmark suite.') |
| + |
| + js_is_done = """ |
| + var done = false; |
| + if (document.getElementById("console")) |
| + done = true; |
| + window.domAutomationController.send(JSON.stringify(done)); |
| + """ |
| + self.assertTrue( |
| + self.WaitUntil( |
| + lambda: self.ExecuteJavascript(js_is_done, tab_index=1) == 'true', |
| + timeout=300, retry_sleep=1), |
| + msg='Timed out when waiting for SunSpider benchmark score.') |
| + |
| + js_get_results = """ |
| + window.domAutomationController.send( |
| + document.getElementById("console").innerHTML); |
| + """ |
| + # Append '<br>' to the result to simplify regular expression matching. |
| + results = self.ExecuteJavascript(js_get_results, tab_index=1) + '<br>' |
| + total_pattern = 'Total:\s*([\d.]+)ms' |
| + total = re.search(total_pattern, results).group(1) |
|
Nirnimesh
2011/10/28 07:36:49
merge with previous line
dennis_jeffrey
2011/10/28 22:29:41
Done.
|
| + logging.info('Total: %.2f ms' % float(total)) |
| + self._OutputPerfGraphValue('%s_%s' % ('ms', 'SunSpider-total'), |
|
Nirnimesh
2011/10/28 07:36:49
why not use 'ms_SunSpider-total' directly?
dennis_jeffrey
2011/10/28 22:29:41
Done.
|
| + float(total)) |
| + |
| + category_pattern = '\s\s(\w+):.+?<br><br>' |
| + result_pattern = '<br>\s\s\s\s([\w-]+):\s*([\d.]+)ms' |
| + for match_category in re.finditer(category_pattern, results): |
| + category_name = match_category.group(1) |
| + for match_result in re.finditer(result_pattern, match_category.group(0)): |
| + result_name = match_result.group(1) |
| + result_value = match_result.group(2) |
| + logging.info('Result %s-%s: %.2f ms', category_name, result_name, |
| + float(result_value)) |
| + self._OutputPerfGraphValue( |
| + '%s_%s-%s-%s' % ('ms', 'SunSpider', category_name, result_name), |
|
Nirnimesh
2011/10/28 07:36:49
Include ms_Sunspider in the format itself.
dennis_jeffrey
2011/10/28 22:29:41
Done.
|
| + float(result_value)) |
| + |
| class LiveWebappLoadTest(BasePerfTest): |
| """Tests that involve performance measurements of live webapps. |