def testSmoothness(self):
        ps = self.CreateStorySetFromFileInUnittestDataDir(
            'scrollable_page.html')
        measurement = smoothness.Smoothness()
        results = self.RunMeasurement(measurement, ps, options=self._options)
        self.assertEquals(0, len(results.failures))

        frame_times = results.FindAllPageSpecificValuesNamed('frame_times')
        self.assertEquals(len(frame_times), 1)
        self.assertGreater(frame_times[0].GetRepresentativeNumber(), 0)

        mean_frame_time = results.FindAllPageSpecificValuesNamed(
            'mean_frame_time')
        self.assertEquals(len(mean_frame_time), 1)
        self.assertGreater(mean_frame_time[0].GetRepresentativeNumber(), 0)

        frame_time_discrepancy = results.FindAllPageSpecificValuesNamed(
            'frame_time_discrepancy')
        self.assertEquals(len(frame_time_discrepancy), 1)
        self.assertGreater(frame_time_discrepancy[0].GetRepresentativeNumber(),
                           0)

        percentage_smooth = results.FindAllPageSpecificValuesNamed(
            'percentage_smooth')
        self.assertEquals(len(percentage_smooth), 1)
        self.assertGreaterEqual(percentage_smooth[0].GetRepresentativeNumber(),
                                0)

        mean_input_event_latency = results.FindAllPageSpecificValuesNamed(
            'mean_input_event_latency')
        if mean_input_event_latency:
            self.assertEquals(len(mean_input_event_latency), 1)
            self.assertGreater(
                mean_input_event_latency[0].GetRepresentativeNumber(), 0)
    def testSyntheticDelayConfiguration(self):
        test_page = page.Page('http://dummy', None)
        test_page.synthetic_delays = {
            'cc.BeginMainFrame': {
                'target_duration': 0.012
            },
            'cc.DrawAndSwap': {
                'target_duration': 0.012,
                'mode': 'alternating'
            },
            'gpu.PresentingFrame': {
                'target_duration': 0.012
            }
        }

        tab = FakeTab()
        measurement = smoothness.Smoothness()
        measurement.WillStartBrowser(tab.browser.platform)
        measurement.WillNavigateToPage(test_page, tab)

        expected_synthetic_delay = set([
            'DELAY(cc.BeginMainFrame;0.012000;static)',
            'DELAY(cc.DrawAndSwap;0.012000;alternating)',
            'DELAY(gpu.PresentingFrame;0.012000;static)',
        ])
        config = tab.browser.platform.tracing_controller.config
        actual_synthetic_delay = (
            config.chrome_trace_config.category_filter.synthetic_delays)

        if expected_synthetic_delay != actual_synthetic_delay:
            sys.stderr.write('Expected category filter: %s\n' %
                             repr(expected_synthetic_delay))
            sys.stderr.write('Actual category filter filter: %s\n' %
                             repr(actual_synthetic_delay))
        self.assertEquals(expected_synthetic_delay, actual_synthetic_delay)
Exemple #3
0
  def testSyntheticDelayConfiguration(self):
    test_page = page.Page('http://dummy', None)
    test_page.synthetic_delays = {
        'cc.BeginMainFrame': { 'target_duration': 0.012 },
        'cc.DrawAndSwap': { 'target_duration': 0.012, 'mode': 'alternating' },
        'gpu.PresentingFrame': { 'target_duration': 0.012 }
    }

    tab = FakeTab()
    measurement = smoothness.Smoothness()
    measurement.WillRunActions(test_page, tab)

    expected_category_filter = [
        'DELAY(cc.BeginMainFrame;0.012000;static)',
        'DELAY(cc.DrawAndSwap;0.012000;alternating)',
        'DELAY(gpu.PresentingFrame;0.012000;static)',
        'benchmark',
        'webkit.console'
    ]
    actual_category_filter = tab.browser.category_filter.split(',')
    actual_category_filter.sort()
    if expected_category_filter != actual_category_filter:
      sys.stderr.write("Expected category filter: %s\n" %
                       repr(expected_category_filter))
      sys.stderr.write("Actual category filter filter: %s\n" %
                       repr(actual_category_filter))
    self.assertEquals(expected_category_filter, actual_category_filter)
Exemple #4
0
  def testSyntheticDelayConfiguration(self):
    test_page = page.Page('http://dummy', None)
    test_page.synthetic_delays = {
        'cc.BeginMainFrame': { 'target_duration': 0.012 },
        'cc.DrawAndSwap': { 'target_duration': 0.012, 'mode': 'alternating' },
        'gpu.PresentingFrame': { 'target_duration': 0.012 }
    }

    tab = FakeTab()
    measurement = smoothness.Smoothness()
    measurement.WillStartBrowser(tab.browser.platform)
    measurement.WillNavigateToPage(test_page, tab)
    measurement.WillRunActions(test_page, tab)

    expected_category_filter = set([
        'DELAY(cc.BeginMainFrame;0.012000;static)',
        'DELAY(cc.DrawAndSwap;0.012000;alternating)',
        'DELAY(gpu.PresentingFrame;0.012000;static)',
        'benchmark'
    ])
    tracing_controller = tab.browser.platform.tracing_controller
    actual_category_filter = (
      tracing_controller.category_filter.included_categories)

    # FIXME: Put blink.console into the expected above and remove these two
    # remove entries when the blink.console change has rolled into chromium.
    actual_category_filter.remove('webkit.console')
    actual_category_filter.remove('blink.console')

    if expected_category_filter != actual_category_filter:
      sys.stderr.write("Expected category filter: %s\n" %
                       repr(expected_category_filter))
      sys.stderr.write("Actual category filter filter: %s\n" %
                       repr(actual_category_filter))
    self.assertEquals(expected_category_filter, actual_category_filter)
Exemple #5
0
  def testRepaint(self):
    ps = self.CreateEmptyPageSet()
    ps.AddStory(TestRepaintPage(ps, ps.base_dir))
    measurement = smoothness.Smoothness()
    results = self.RunMeasurement(measurement, ps, options=self._options)
    self.assertEquals(0, len(results.failures))

    frame_times = results.FindAllPageSpecificValuesNamed('frame_times')
    self.assertEquals(len(frame_times), 1)
    self.assertGreater(frame_times[0].GetRepresentativeNumber(), 0)

    mean_frame_time = results.FindAllPageSpecificValuesNamed('mean_frame_time')
    self.assertEquals(len(mean_frame_time), 1)
    self.assertGreater(mean_frame_time[0].GetRepresentativeNumber(), 0)

    frame_time_discrepancy = results.FindAllPageSpecificValuesNamed(
        'frame_time_discrepancy')
    self.assertEquals(len(frame_time_discrepancy), 1)
    self.assertGreater(frame_time_discrepancy[0].GetRepresentativeNumber(), 0)

    percentage_smooth = results.FindAllPageSpecificValuesNamed(
        'percentage_smooth')
    self.assertEquals(len(percentage_smooth), 1)
    self.assertGreaterEqual(percentage_smooth[0].GetRepresentativeNumber(), 0)

    # Make sure that we don't have extra timeline based metrics that are not
    # related to smoothness.
    mainthread_jank = results.FindAllPageSpecificValuesNamed(
        'responsive-total_big_jank_thread_time')
    self.assertEquals(len(mainthread_jank), 0)
Exemple #6
0
  def testSmoothness(self):
    ps = self.CreatePageSetFromFileInUnittestDataDir('scrollable_page.html')
    measurement = smoothness.Smoothness()
    results = self.RunMeasurement(measurement, ps, options=self._options)
    self.assertEquals(0, len(results.failures))

    frame_times = results.FindAllPageSpecificValuesNamed('frame_times')
    self.assertEquals(len(frame_times), 1)
    self.assertGreater(frame_times[0].GetRepresentativeNumber(), 0)

    mean_frame_time = results.FindAllPageSpecificValuesNamed('mean_frame_time')
    self.assertEquals(len(mean_frame_time), 1)
    self.assertGreater(mean_frame_time[0].GetRepresentativeNumber(), 0)

    jank = results.FindAllPageSpecificValuesNamed('jank')
    self.assertEquals(len(jank), 1)
    self.assertGreater(jank[0].GetRepresentativeNumber(), 0)

    mostly_smooth = results.FindAllPageSpecificValuesNamed('mostly_smooth')
    self.assertEquals(len(mostly_smooth), 1)
    self.assertGreaterEqual(mostly_smooth[0].GetRepresentativeNumber(), 0)

    mean_mouse_wheel_latency = results.FindAllPageSpecificValuesNamed(
        'mean_mouse_wheel_latency')
    if mean_mouse_wheel_latency:
      self.assertEquals(len(mean_mouse_wheel_latency), 1)
      self.assertGreater(
          mean_mouse_wheel_latency[0].GetRepresentativeNumber(), 0)

    mean_touch_scroll_latency = results.FindAllPageSpecificValuesNamed(
        'mean_touch_scroll_latency')
    if mean_touch_scroll_latency:
      self.assertEquals(len(mean_touch_scroll_latency), 1)
      self.assertGreater(
          mean_touch_scroll_latency[0].GetRepresentativeNumber(), 0)
    def testSyntheticDelayConfiguration(self):
        test_page = page.Page('http://dummy', None)
        test_page.synthetic_delays = {
            'cc.BeginMainFrame': {
                'target_duration': 0.012
            },
            'cc.DrawAndSwap': {
                'target_duration': 0.012,
                'mode': 'alternating'
            },
            'gpu.SwapBuffers': {
                'target_duration': 0.012
            }
        }

        tab = FakeTab()
        measurement = smoothness.Smoothness()
        measurement.WillRunActions(test_page, tab)

        expected_category_filter = [
            'DELAY(cc.BeginMainFrame;0.012000;static)',
            'DELAY(cc.DrawAndSwap;0.012000;alternating)',
            'DELAY(gpu.SwapBuffers;0.012000;static)', 'benchmark',
            'webkit.console'
        ]
        self.assertEquals(expected_category_filter,
                          sorted(tab.browser.category_filter.split(',')))
    def testSmoothness(self):
        ps = self.CreateStorySetFromFileInUnittestDataDir(
            'scrollable_page.html')
        measurement = smoothness.Smoothness()
        results = self.RunMeasurement(measurement, ps, options=self._options)
        self.assertFalse(results.had_failures)
        stat = rendering_util.ExtractStat(results)

        self.assertGreater(stat['frame_times'].mean, 0)
        self.assertGreaterEqual(stat['percentage_smooth'].mean, 0)
Exemple #9
0
  def testSmoothnessForPageWithNoGesture(self):
    ps = self.CreateEmptyPageSet()
    ps.AddPage(AnimatedPage(ps))

    measurement = smoothness.Smoothness()
    results = self.RunMeasurement(measurement, ps, options=self._options)
    self.assertEquals(0, len(results.failures))

    mostly_smooth = results.FindAllPageSpecificValuesNamed('mostly_smooth')
    self.assertEquals(len(mostly_smooth), 1)
    self.assertGreaterEqual(mostly_smooth[0].GetRepresentativeNumber(), 0)
    def testSmoothnessSurfaceFlingerMetricsCalculated(self):
        ps = self.CreateStorySetFromFileInUnittestDataDir(
            'scrollable_page.html')
        measurement = smoothness.Smoothness()
        results = self.RunMeasurement(measurement, ps, options=self._options)
        self.assertFalse(results.had_failures)
        stat = rendering_util.ExtractStat(results)

        self.assertGreater(stat['avg_surface_fps'].mean, 0)
        self.assertGreater(stat['jank_count'].mean, -1)
        self.assertGreater(stat['frame_lengths'].mean, 0)
  def testSmoothness(self):
    ps = self.CreateStorySetFromFileInUnittestDataDir('scrollable_page.html')
    measurement = smoothness.Smoothness()
    results = self.RunMeasurement(measurement, ps, options=self._options)
    self.assertFalse(results.had_failures)

    frame_times = results.FindAllPageSpecificValuesNamed('frame_times')
    self.assertEquals(len(frame_times), 1)
    self.assertGreater(frame_times[0].GetRepresentativeNumber(), 0)

    percentage_smooth = results.FindAllPageSpecificValuesNamed(
        'percentage_smooth')
    self.assertEquals(len(percentage_smooth), 1)
    self.assertGreaterEqual(percentage_smooth[0].GetRepresentativeNumber(), 0)
Exemple #12
0
    def testSmoothnessWithTimelineMetric(self):
        ps = self.CreatePageSetFromFileInUnittestDataDir(
            'scrollable_page.html')
        measurement = smoothness.Smoothness()
        timeline_options = self._options
        timeline_options.metric = 'timeline'
        results = self.RunMeasurement(measurement,
                                      ps,
                                      options=timeline_options)
        self.assertEquals(0, len(results.failures))

        for category in timeline.TimelineThreadCategories.values():
            clock_time_name = timeline.ThreadTimePercentageName(category)
            clock_time = results.FindAllPageSpecificValuesNamed(
                clock_time_name)
            self.assertEquals(len(clock_time), 1)

            cpu_time_name = timeline.ThreadCPUTimePercentageName(category)
            cpu_time = results.FindAllPageSpecificValuesNamed(cpu_time_name)
            self.assertEquals(len(cpu_time), 1)
Exemple #13
0
  def testSmoothnessSurfaceFlingerMetricsCalculated(self):
    ps = self.CreatePageSetFromFileInUnittestDataDir('scrollable_page.html')
    measurement = smoothness.Smoothness()
    results = self.RunMeasurement(measurement, ps, options=self._options)
    self.assertEquals(0, len(results.failures))

    avg_surface_fps = results.FindAllPageSpecificValuesNamed('avg_surface_fps')
    self.assertEquals(1, len(avg_surface_fps))
    self.assertGreater(avg_surface_fps[0].GetRepresentativeNumber, 0)

    jank_count = results.FindAllPageSpecificValuesNamed('jank_count')
    self.assertEquals(1, len(jank_count))
    self.assertGreater(jank_count[0].GetRepresentativeNumber(), -1)

    max_frame_delay = results.FindAllPageSpecificValuesNamed('max_frame_delay')
    self.assertEquals(1, len(max_frame_delay))
    self.assertGreater(max_frame_delay[0].GetRepresentativeNumber, 0)

    frame_lengths = results.FindAllPageSpecificValuesNamed('frame_lengths')
    self.assertEquals(1, len(frame_lengths))
    self.assertGreater(frame_lengths[0].GetRepresentativeNumber, 0)