Commit 6568dde8 authored by Juan Antonio Navarro Perez's avatar Juan Antonio Navarro Perez Committed by Commit Bot

[tools/perf] Migrate clients to new RunMeasurement API

The 'options' argument has been replaced with a new 'run_options',
where callers are expected to pass a fully formed options object with
all settings required to run benchmark stories.

This also requires clients to provide an output_dir suitably wired
to a temp_dir for tests.

Bug: 985712
Change-Id: If26078caa61f7b0a006906420899109d1f4e9a8b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1720839
Commit-Queue: Juan Antonio Navarro Pérez <perezju@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarRavi Mistry <rmistry@chromium.org>
Reviewed-by: default avatarCaleb Rouleau <crouleau@chromium.org>
Cr-Commit-Position: refs/heads/master@{#683517}
parent a645b9ca
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.
import os import os
import shutil
import tempfile
import unittest import unittest
from telemetry import decorators from telemetry import decorators
...@@ -24,11 +26,15 @@ class BlinkPerfTest(page_test_test_case.PageTestTestCase): ...@@ -24,11 +26,15 @@ class BlinkPerfTest(page_test_test_case.PageTestTestCase):
'..', '..', '..', 'third_party', 'blink', 'perf_tests', '..', '..', '..', 'third_party', 'blink', 'perf_tests',
'resources') 'resources')
def setUp(self): def setUp(self):
self._options = options_for_unittests.GetCopy() self._options = options_for_unittests.GetRunOptions(
output_dir=tempfile.mkdtemp())
# pylint: disable=protected-access # pylint: disable=protected-access
self._measurement = blink_perf._BlinkPerfMeasurement() self._measurement = blink_perf._BlinkPerfMeasurement()
# pylint: enable=protected-access # pylint: enable=protected-access
def tearDown(self):
shutil.rmtree(self._options.output_dir)
def _CreateStorySetForTestFile(self, test_file_name): def _CreateStorySetForTestFile(self, test_file_name):
story_set = story.StorySet(base_dir=self._BLINK_PERF_TEST_DATA_DIR, story_set = story.StorySet(base_dir=self._BLINK_PERF_TEST_DATA_DIR,
serving_dirs={self._BLINK_PERF_TEST_DATA_DIR, serving_dirs={self._BLINK_PERF_TEST_DATA_DIR,
...@@ -41,9 +47,10 @@ class BlinkPerfTest(page_test_test_case.PageTestTestCase): ...@@ -41,9 +47,10 @@ class BlinkPerfTest(page_test_test_case.PageTestTestCase):
return story_set return story_set
def testBlinkPerfTracingMetricsForMeasureTime(self): def testBlinkPerfTracingMetricsForMeasureTime(self):
results = self.RunMeasurement(measurement=self._measurement, results = self.RunMeasurement(
ps=self._CreateStorySetForTestFile('append-child-measure-time.html'), self._measurement,
options=self._options) self._CreateStorySetForTestFile('append-child-measure-time.html'),
run_options=self._options)
self.assertFalse(results.had_failures) self.assertFalse(results.had_failures)
self.assertEquals(len(list(results.IterRunsWithTraces())), 1) self.assertEquals(len(list(results.IterRunsWithTraces())), 1)
...@@ -62,10 +69,11 @@ class BlinkPerfTest(page_test_test_case.PageTestTestCase): ...@@ -62,10 +69,11 @@ class BlinkPerfTest(page_test_test_case.PageTestTestCase):
self.assertGreater(update_layout_trees[0].mean, 0.001) self.assertGreater(update_layout_trees[0].mean, 0.001)
def testBlinkPerfTracingMetricsForMeasureFrameTime(self): def testBlinkPerfTracingMetricsForMeasureFrameTime(self):
results = self.RunMeasurement(measurement=self._measurement, results = self.RunMeasurement(
ps=self._CreateStorySetForTestFile( self._measurement,
self._CreateStorySetForTestFile(
'color-changes-measure-frame-time.html'), 'color-changes-measure-frame-time.html'),
options=self._options) run_options=self._options)
self.assertFalse(results.had_failures) self.assertFalse(results.had_failures)
self.assertEquals(len(list(results.IterRunsWithTraces())), 1) self.assertEquals(len(list(results.IterRunsWithTraces())), 1)
...@@ -85,10 +93,11 @@ class BlinkPerfTest(page_test_test_case.PageTestTestCase): ...@@ -85,10 +93,11 @@ class BlinkPerfTest(page_test_test_case.PageTestTestCase):
self.assertGreater(frame_view_painttrees[0].mean, 0.001) self.assertGreater(frame_view_painttrees[0].mean, 0.001)
def testBlinkPerfTracingMetricsForMeasurePageLoadTime(self): def testBlinkPerfTracingMetricsForMeasurePageLoadTime(self):
results = self.RunMeasurement(measurement=self._measurement, results = self.RunMeasurement(
ps=self._CreateStorySetForTestFile( self._measurement,
self._CreateStorySetForTestFile(
'simple-html-measure-page-load-time.html'), 'simple-html-measure-page-load-time.html'),
options=self._options) run_options=self._options)
self.assertFalse(results.had_failures) self.assertFalse(results.had_failures)
self.assertEquals(len(list(results.IterRunsWithTraces())), 1) self.assertEquals(len(list(results.IterRunsWithTraces())), 1)
...@@ -109,10 +118,10 @@ class BlinkPerfTest(page_test_test_case.PageTestTestCase): ...@@ -109,10 +118,10 @@ class BlinkPerfTest(page_test_test_case.PageTestTestCase):
@decorators.Disabled('mac') # Flaky on mac: crbug.com/960554 @decorators.Disabled('mac') # Flaky on mac: crbug.com/960554
def testBlinkPerfTracingMetricsForMeasureAsync(self): def testBlinkPerfTracingMetricsForMeasureAsync(self):
results = self.RunMeasurement(measurement=self._measurement, results = self.RunMeasurement(
ps=self._CreateStorySetForTestFile( self._measurement,
'simple-blob-measure-async.html'), self._CreateStorySetForTestFile('simple-blob-measure-async.html'),
options=self._options) run_options=self._options)
self.assertFalse(results.had_failures) self.assertFalse(results.had_failures)
self.assertEquals(len(list(results.IterRunsWithTraces())), 1) self.assertEquals(len(list(results.IterRunsWithTraces())), 1)
...@@ -147,19 +156,19 @@ class BlinkPerfTest(page_test_test_case.PageTestTestCase): ...@@ -147,19 +156,19 @@ class BlinkPerfTest(page_test_test_case.PageTestTestCase):
self.assertGreater(read_data[0].mean, 0.001) self.assertGreater(read_data[0].mean, 0.001)
def testBlinkPerfLifecycleMethods(self): def testBlinkPerfLifecycleMethods(self):
results = self.RunMeasurement(measurement=self._measurement, results = self.RunMeasurement(
ps=self._CreateStorySetForTestFile( self._measurement,
'lifecycle-methods.html'), self._CreateStorySetForTestFile('lifecycle-methods.html'),
options=self._options) run_options=self._options)
self.assertFalse(results.had_failures) self.assertFalse(results.had_failures)
self.assertEquals(len(list(results.IterRunsWithTraces())), 0) self.assertEquals(len(list(results.IterRunsWithTraces())), 0)
def testExtraChromeCategories(self): def testExtraChromeCategories(self):
self._options.extra_chrome_categories = 'cc,blink' self._options.extra_chrome_categories = 'cc,blink'
results = self.RunMeasurement(measurement=self._measurement, results = self.RunMeasurement(
ps=self._CreateStorySetForTestFile( self._measurement,
'lifecycle-methods.html'), self._CreateStorySetForTestFile('lifecycle-methods.html'),
options=self._options) run_options=self._options)
self.assertFalse(results.had_failures) self.assertFalse(results.had_failures)
self.assertEquals(len(list(results.IterRunsWithTraces())), 1) self.assertEquals(len(list(results.IterRunsWithTraces())), 1)
......
...@@ -15,8 +15,9 @@ from contrib.cluster_telemetry import screenshot ...@@ -15,8 +15,9 @@ from contrib.cluster_telemetry import screenshot
class ScreenshotUnitTest(page_test_test_case.PageTestTestCase): class ScreenshotUnitTest(page_test_test_case.PageTestTestCase):
def setUp(self): def setUp(self):
self._options = options_for_unittests.GetCopy()
self._png_outdir = tempfile.mkdtemp('_png_test') self._png_outdir = tempfile.mkdtemp('_png_test')
self._options = options_for_unittests.GetRunOptions(
output_dir=self._png_outdir)
def tearDown(self): def tearDown(self):
shutil.rmtree(self._png_outdir) shutil.rmtree(self._png_outdir)
...@@ -25,12 +26,13 @@ class ScreenshotUnitTest(page_test_test_case.PageTestTestCase): ...@@ -25,12 +26,13 @@ class ScreenshotUnitTest(page_test_test_case.PageTestTestCase):
def testScreenshot(self): def testScreenshot(self):
# Screenshots for Cluster Telemetry purposes currently only supported on # Screenshots for Cluster Telemetry purposes currently only supported on
# Linux platform. # Linux platform.
page_set = self.CreateStorySetFromFileInUnittestDataDir( story_set = self.CreateStorySetFromFileInUnittestDataDir(
'screenshot_test.html') 'screenshot_test.html')
measurement = screenshot.Screenshot(self._png_outdir) measurement = screenshot.Screenshot(self._png_outdir)
self.RunMeasurement(measurement, page_set, options=self._options) self.RunMeasurement(measurement, story_set, run_options=self._options)
path = self._png_outdir + '/' + page_set.stories[0].file_safe_name + '.png' path = os.path.join(
self._png_outdir, story_set.stories[0].file_safe_name + '.png')
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertTrue(os.path.isfile(path)) self.assertTrue(os.path.isfile(path))
self.assertTrue(os.access(path, os.R_OK)) self.assertTrue(os.access(path, os.R_OK))
......
...@@ -2,6 +2,9 @@ ...@@ -2,6 +2,9 @@
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.
import shutil
import tempfile
from contrib.oilpan import oilpan_gc_times from contrib.oilpan import oilpan_gc_times
from telemetry import decorators from telemetry import decorators
...@@ -92,7 +95,11 @@ class OilpanGCTimesTest(page_test_test_case.PageTestTestCase): ...@@ -92,7 +95,11 @@ class OilpanGCTimesTest(page_test_test_case.PageTestTestCase):
_GC_REASONS = ['precise', 'conservative', 'idle'] _GC_REASONS = ['precise', 'conservative', 'idle']
def setUp(self): def setUp(self):
self._options = options_for_unittests.GetCopy() self._options = options_for_unittests.GetRunOptions(
output_dir=tempfile.mkdtemp())
def tearDowmn(self):
shutil.rmtree(self._options.output_dir)
# Disable for accessing private API of _OilpanGCTimesBase. # Disable for accessing private API of _OilpanGCTimesBase.
# pylint: disable=protected-access # pylint: disable=protected-access
...@@ -148,10 +155,11 @@ class OilpanGCTimesTest(page_test_test_case.PageTestTestCase): ...@@ -148,10 +155,11 @@ class OilpanGCTimesTest(page_test_test_case.PageTestTestCase):
@decorators.Disabled('all') @decorators.Disabled('all')
def testForSmoothness(self): def testForSmoothness(self):
ps = self.CreateStorySetFromFileInUnittestDataDir( story_set = self.CreateStorySetFromFileInUnittestDataDir(
'create_many_objects.html') 'create_many_objects.html')
measurement = oilpan_gc_times.OilpanGCTimesForSmoothness() measurement = oilpan_gc_times.OilpanGCTimesForSmoothness()
results = self.RunMeasurement(measurement, ps, options=self._options) results = self.RunMeasurement(
measurement, story_set, run_options=self._options)
self.assertFalse(results.had_failures) self.assertFalse(results.had_failures)
gc_events = [] gc_events = []
...@@ -162,10 +170,11 @@ class OilpanGCTimesTest(page_test_test_case.PageTestTestCase): ...@@ -162,10 +170,11 @@ class OilpanGCTimesTest(page_test_test_case.PageTestTestCase):
@decorators.Disabled('all') @decorators.Disabled('all')
def testForBlinkPerf(self): def testForBlinkPerf(self):
ps = self.CreateStorySetFromFileInUnittestDataDir( story_set = self.CreateStorySetFromFileInUnittestDataDir(
'create_many_objects.html') 'create_many_objects.html')
measurement = oilpan_gc_times.OilpanGCTimesForBlinkPerf() measurement = oilpan_gc_times.OilpanGCTimesForBlinkPerf()
results = self.RunMeasurement(measurement, ps, options=self._options) results = self.RunMeasurement(
measurement, story_set, run_options=self._options)
self.assertFalse(results.had_failures) self.assertFalse(results.had_failures)
gc_events = [] gc_events = []
......
...@@ -15,8 +15,9 @@ from measurements import multipage_skpicture_printer ...@@ -15,8 +15,9 @@ from measurements import multipage_skpicture_printer
class MultipageSkpicturePrinterUnitTest(page_test_test_case.PageTestTestCase): class MultipageSkpicturePrinterUnitTest(page_test_test_case.PageTestTestCase):
def setUp(self): def setUp(self):
self._options = options_for_unittests.GetCopy()
self._mskp_outdir = tempfile.mkdtemp('_mskp_test') self._mskp_outdir = tempfile.mkdtemp('_mskp_test')
self._options = options_for_unittests.GetRunOptions(
output_dir=self._mskp_outdir)
def tearDown(self): def tearDown(self):
shutil.rmtree(self._mskp_outdir) shutil.rmtree(self._mskp_outdir)
...@@ -24,7 +25,7 @@ class MultipageSkpicturePrinterUnitTest(page_test_test_case.PageTestTestCase): ...@@ -24,7 +25,7 @@ class MultipageSkpicturePrinterUnitTest(page_test_test_case.PageTestTestCase):
# Picture printing is not supported on all platforms. # Picture printing is not supported on all platforms.
@decorators.Disabled('android', 'chromeos') @decorators.Disabled('android', 'chromeos')
def testSkpicturePrinter(self): def testSkpicturePrinter(self):
ps = self.CreateStorySetFromFileInUnittestDataDir('blank.html') story_set = self.CreateStorySetFromFileInUnittestDataDir('blank.html')
measurement = multipage_skpicture_printer.MultipageSkpicturePrinter( measurement = multipage_skpicture_printer.MultipageSkpicturePrinter(
self._mskp_outdir) self._mskp_outdir)
self.RunMeasurement(measurement, ps, options=self._options) self.RunMeasurement(measurement, story_set, run_options=self._options)
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
# found in the LICENSE file. # found in the LICENSE file.
import logging import logging
import shutil
import tempfile
from telemetry import decorators from telemetry import decorators
from telemetry.page import legacy_page_test from telemetry.page import legacy_page_test
...@@ -22,17 +24,22 @@ class RasterizeAndRecordMicroUnitTest(page_test_test_case.PageTestTestCase): ...@@ -22,17 +24,22 @@ class RasterizeAndRecordMicroUnitTest(page_test_test_case.PageTestTestCase):
""" """
def setUp(self): def setUp(self):
self._options = options_for_unittests.GetCopy() self._options = options_for_unittests.GetRunOptions(
output_dir=tempfile.mkdtemp())
self._options.browser_options.wpr_mode = wpr_modes.WPR_OFF self._options.browser_options.wpr_mode = wpr_modes.WPR_OFF
def tearDown(self):
shutil.rmtree(self._options.output_dir)
@decorators.Disabled('win', 'chromeos', 'linux') @decorators.Disabled('win', 'chromeos', 'linux')
def testRasterizeAndRecordMicro(self): def testRasterizeAndRecordMicro(self):
ps = self.CreateStorySetFromFileInUnittestDataDir('blank.html') story_set = self.CreateStorySetFromFileInUnittestDataDir('blank.html')
measurement = rasterize_and_record_micro.RasterizeAndRecordMicro( measurement = rasterize_and_record_micro.RasterizeAndRecordMicro(
rasterize_repeat=1, record_repeat=1, start_wait_time=0.0, rasterize_repeat=1, record_repeat=1, start_wait_time=0.0,
report_detailed_results=True) report_detailed_results=True)
try: try:
results = self.RunMeasurement(measurement, ps, options=self._options) results = self.RunMeasurement(
measurement, story_set, run_options=self._options)
except legacy_page_test.TestNotSupportedOnPlatformError as failure: except legacy_page_test.TestNotSupportedOnPlatformError as failure:
logging.warning(str(failure)) logging.warning(str(failure))
return return
......
...@@ -15,8 +15,9 @@ from measurements import skpicture_printer ...@@ -15,8 +15,9 @@ from measurements import skpicture_printer
class SkpicturePrinterUnitTest(page_test_test_case.PageTestTestCase): class SkpicturePrinterUnitTest(page_test_test_case.PageTestTestCase):
def setUp(self): def setUp(self):
self._options = options_for_unittests.GetCopy()
self._skp_outdir = tempfile.mkdtemp('_skp_test') self._skp_outdir = tempfile.mkdtemp('_skp_test')
self._options = options_for_unittests.GetRunOptions(
output_dir=self._skp_outdir)
def tearDown(self): def tearDown(self):
shutil.rmtree(self._skp_outdir) shutil.rmtree(self._skp_outdir)
...@@ -24,9 +25,10 @@ class SkpicturePrinterUnitTest(page_test_test_case.PageTestTestCase): ...@@ -24,9 +25,10 @@ class SkpicturePrinterUnitTest(page_test_test_case.PageTestTestCase):
# Picture printing is not supported on all platforms. # Picture printing is not supported on all platforms.
@decorators.Disabled('android', 'chromeos') @decorators.Disabled('android', 'chromeos')
def testSkpicturePrinter(self): def testSkpicturePrinter(self):
ps = self.CreateStorySetFromFileInUnittestDataDir('blank.html') story_set = self.CreateStorySetFromFileInUnittestDataDir('blank.html')
measurement = skpicture_printer.SkpicturePrinter(self._skp_outdir) measurement = skpicture_printer.SkpicturePrinter(self._skp_outdir)
results = self.RunMeasurement(measurement, ps, options=self._options) results = self.RunMeasurement(
measurement, story_set, run_options=self._options)
saved_picture_count = results.FindAllPageSpecificValuesNamed( saved_picture_count = results.FindAllPageSpecificValuesNamed(
'saved_picture_count') 'saved_picture_count')
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment