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