rasterize_and_record_micro_unittest.py revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# Copyright 2013 The Chromium Authors. All rights reserved.
2a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be
3a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)# found in the LICENSE file.
44ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch
54ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdochimport logging
64ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch
7a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)from measurements import rasterize_and_record_micro
8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)from telemetry.core import wpr_modes
94ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdochfrom telemetry.page import page_test
10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)from telemetry.unittest import options_for_unittests
116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)from telemetry.unittest import page_test_test_case
126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)from telemetry.unittest import test
13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class RasterizeAndRecordMicroUnitTest(page_test_test_case.PageTestTestCase):
16a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  """Smoke test for rasterize_and_record_micro measurement
17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
18a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)     Runs rasterize_and_record_micro measurement on a simple page and verifies
19a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)     that all metrics were added to the results. The test is purely functional,
20a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)     i.e. it only checks if the metrics are present and non-zero.
21a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  """
22a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  def setUp(self):
24a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    self._options = options_for_unittests.GetCopy()
25a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    self._options.browser_options.wpr_mode = wpr_modes.WPR_OFF
26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    self._options.rasterize_repeat = 1
27a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    self._options.record_repeat = 1
28a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    self._options.start_wait_time = 0.0
29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    self._options.report_detailed_results = True
30a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  @test.Disabled('win', 'chromeos')
32a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  def testRasterizeAndRecordMicro(self):
33a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    ps = self.CreatePageSetFromFileInUnittestDataDir('blank.html')
34a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    measurement = rasterize_and_record_micro.RasterizeAndRecordMicro()
354ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch    try:
364ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch      results = self.RunMeasurement(measurement, ps, options=self._options)
374ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch    except page_test.TestNotSupportedOnPlatformFailure as failure:
384ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch      logging.warning(str(failure))
394ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch      return
40a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    self.assertEquals(0, len(results.failures))
41a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
42a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    rasterize_time = results.FindAllPageSpecificValuesNamed('rasterize_time')
43a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    self.assertEquals(len(rasterize_time), 1)
44a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    self.assertGreater(rasterize_time[0].GetRepresentativeNumber(), 0)
45a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
46a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    record_time = results.FindAllPageSpecificValuesNamed('record_time')
47a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    self.assertEquals(len(record_time), 1)
48a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    self.assertGreater(record_time[0].GetRepresentativeNumber(), 0)
49a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
50a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    rasterized_pixels = results.FindAllPageSpecificValuesNamed(
51a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)        'pixels_rasterized')
52a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    self.assertEquals(len(rasterized_pixels), 1)
53a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    self.assertGreater(rasterized_pixels[0].GetRepresentativeNumber(), 0)
54a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
55a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    recorded_pixels = results.FindAllPageSpecificValuesNamed('pixels_recorded')
56a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    self.assertEquals(len(recorded_pixels), 1)
57a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    self.assertGreater(recorded_pixels[0].GetRepresentativeNumber(), 0)
58a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
59a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    pixels_rasterized_with_non_solid_color = \
60a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        results.FindAllPageSpecificValuesNamed(
61a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)            'pixels_rasterized_with_non_solid_color')
62a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    self.assertEquals(len(pixels_rasterized_with_non_solid_color), 1)
63a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    self.assertGreater(
64a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        pixels_rasterized_with_non_solid_color[0].GetRepresentativeNumber(), 0)
65a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
66a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    pixels_rasterized_as_opaque = \
67a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        results.FindAllPageSpecificValuesNamed('pixels_rasterized_as_opaque')
68a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    self.assertEquals(len(pixels_rasterized_as_opaque), 1)
69a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    self.assertGreater(
70a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        pixels_rasterized_as_opaque[0].GetRepresentativeNumber(), 0)
71a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
72a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    total_layers = results.FindAllPageSpecificValuesNamed('total_layers')
73a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    self.assertEquals(len(total_layers), 1)
74a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    self.assertGreater(total_layers[0].GetRepresentativeNumber(), 0)
75a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
76a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    total_picture_layers = \
77a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        results.FindAllPageSpecificValuesNamed('total_picture_layers')
78a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    self.assertEquals(len(total_picture_layers), 1)
79a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    self.assertGreater(total_picture_layers[0].GetRepresentativeNumber(), 0)
80a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
81a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    total_picture_layers_with_no_content = \
82a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        results.FindAllPageSpecificValuesNamed(
83a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)            'total_picture_layers_with_no_content')
84a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    self.assertEquals(len(total_picture_layers_with_no_content), 1)
85a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    self.assertGreater(
86a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        total_picture_layers_with_no_content[0].GetRepresentativeNumber(), 0)
87a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
88a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    total_picture_layers_off_screen = \
89a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        results.FindAllPageSpecificValuesNamed(
90a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)            'total_picture_layers_off_screen')
91a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    self.assertEquals(len(total_picture_layers_off_screen), 1)
92a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    self.assertEqual(
93a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        total_picture_layers_off_screen[0].GetRepresentativeNumber(), 0)
94a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
95a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
96