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

Unified Diff: tools/telemetry/telemetry/csv_page_benchmark_results_unittest.py

Issue 11779041: [telemetry] Add support for BenchmarkResults that vary from page to page (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: nitfix Created 7 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/csv_page_benchmark_results_unittest.py
diff --git a/tools/telemetry/telemetry/csv_page_benchmark_results_unittest.py b/tools/telemetry/telemetry/csv_page_benchmark_results_unittest.py
new file mode 100644
index 0000000000000000000000000000000000000000..db57b3520e4bbbad1aed07153744634a0cd394e0
--- /dev/null
+++ b/tools/telemetry/telemetry/csv_page_benchmark_results_unittest.py
@@ -0,0 +1,106 @@
+# Copyright (c) 2012 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+import StringIO
+import csv
+import os
+import unittest
+
+from telemetry.csv_page_benchmark_results import CsvPageBenchmarkResults
+from telemetry.page_set import PageSet
+
+def _MakePageSet():
+ return PageSet.FromDict({
+ "description": "hello",
+ "archive_path": "foo.wpr",
+ "pages": [
+ {"url": "http://www.foo.com/"},
+ {"url": "http://www.bar.com/"}
+ ]
+ }, os.path.dirname(__file__))
+
+class NonPrintingCsvPageBenchmarkResults(CsvPageBenchmarkResults):
+ def __init__(self, *args):
+ super(NonPrintingCsvPageBenchmarkResults, self).__init__(*args)
+
+ def _PrintPerfResult(self, *args):
+ pass
+
+class CsvPageBenchmarkResultsTest(unittest.TestCase):
+ def setUp(self):
+ self._output = StringIO.StringIO()
+ self._page_set = _MakePageSet()
+
+ @property
+ def lines(self):
+ lines = StringIO.StringIO(self._output.getvalue()).readlines()
+ return lines
+
+ @property
+ def output_header_row(self):
+ rows = list(csv.reader(self.lines))
+ return rows[0]
+
+ @property
+ def output_data_rows(self):
+ rows = list(csv.reader(self.lines))
+ return rows[1:]
+
+ def test_with_output_after_every_page(self):
+ results = NonPrintingCsvPageBenchmarkResults(csv.writer(self._output), True)
+ results.WillMeasurePage(self._page_set[0])
+ results.Add('foo', 'seconds', 3)
+ results.DidMeasurePage()
+ self.assertEquals(
+ self.output_header_row,
+ ['url', 'foo (seconds)'])
+ self.assertEquals(
+ self.output_data_rows[0],
+ [self._page_set[0].url, '3'])
+
+ results.WillMeasurePage(self._page_set[1])
+ results.Add('foo', 'seconds', 4)
+ results.DidMeasurePage()
+ self.assertEquals(
+ len(self.output_data_rows),
+ 2)
+ self.assertEquals(
+ self.output_data_rows[1],
+ [self._page_set[1].url, '4'])
+
+ def test_with_output_after_every_page_and_inconsistency(self):
+ results = NonPrintingCsvPageBenchmarkResults(csv.writer(self._output), True)
+ results.WillMeasurePage(self._page_set[0])
+ results.Add('foo', 'seconds', 3)
+ results.DidMeasurePage()
+
+ # We printed foo, now change to bar
+ results.WillMeasurePage(self._page_set[1])
+ results.Add('bar', 'seconds', 4)
+
+ self.assertRaises(
+ Exception,
+ lambda: results.DidMeasurePage()) # pylint: disable=W0108
+
+ def test_with_output_at_print_summary_time(self):
+ results = NonPrintingCsvPageBenchmarkResults(csv.writer(self._output),
+ False)
+ results.WillMeasurePage(self._page_set[0])
+ results.Add('foo', 'seconds', 3)
+ results.DidMeasurePage()
+
+ results.WillMeasurePage(self._page_set[1])
+ results.Add('bar', 'seconds', 4)
+ results.DidMeasurePage()
+
+ results.PrintSummary('tag')
+
+ self.assertEquals(
+ self.output_header_row,
+ ['url', 'bar (seconds)', 'foo (seconds)'])
+ self.assertEquals(
+ self.output_data_rows,
+ [[self._page_set[0].url, '-', '3'],
+ [self._page_set[1].url, '4', '-']])
+
+
« no previous file with comments | « tools/telemetry/telemetry/csv_page_benchmark_results.py ('k') | tools/telemetry/telemetry/multi_page_benchmark.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698