| Index: tools/perf/metrics/smoothness_unittest.py
|
| diff --git a/tools/perf/metrics/smoothness_unittest.py b/tools/perf/metrics/smoothness_unittest.py
|
| index e7b8778e94b8102efe98d4975b6a92f72718cc9e..2a42f9dd24e39b71792dc1934b87ab0ed74ed406 100644
|
| --- a/tools/perf/metrics/smoothness_unittest.py
|
| +++ b/tools/perf/metrics/smoothness_unittest.py
|
| @@ -4,43 +4,110 @@
|
| import unittest
|
|
|
| from metrics import smoothness
|
| +from metrics.gpu_rendering_stats import GpuRenderingStats
|
| from telemetry.page import page
|
| from telemetry.page.page_measurement_results import PageMeasurementResults
|
|
|
| class SmoothnessMetricsUnitTest(unittest.TestCase):
|
| + def testCalcResultsRealRenderStats(self):
|
| + mock_rendering_stats_deltas = {
|
| + 'totalTimeInSeconds': 1.0,
|
| + 'numFramesSentToScreen': 100,
|
| + 'droppedFrameCount': 20,
|
| + 'numImplThreadScrolls': 50,
|
| + 'numMainThreadScrolls': 50,
|
| + 'numLayersDrawn': 240,
|
| + 'numMissingTiles': 10,
|
| + 'textureUploadCount': 120,
|
| + 'totalTextureUploadTimeInSeconds': 1.2,
|
| + 'totalCommitCount': 130,
|
| + 'totalCommitTimeInSeconds': 1.3,
|
| + 'totalDeferredImageDecodeCount': 140,
|
| + 'totalDeferredImageDecodeTimeInSeconds': 1.4,
|
| + 'totalDeferredImageCacheHitCount': 30,
|
| + 'totalImageGatheringCount': 150,
|
| + 'totalImageGatheringTimeInSeconds': 1.5,
|
| + 'totalTilesAnalyzed': 160,
|
| + 'totalTileAnalysisTimeInSeconds': 1.6,
|
| + 'solidColorTilesAnalyzed': 40,
|
| + 'inputEventCount': 170,
|
| + 'totalInputLatency': 1.7,
|
| + 'touchUICount': 180,
|
| + 'totalTouchUILatency': 1.8,
|
| + 'touchAckedCount': 190,
|
| + 'totalTouchAckedLatency': 1.9,
|
| + 'scrollUpdateCount': 200,
|
| + 'totalScrollUpdateLatency': 2.0}
|
| + stats = GpuRenderingStats(mock_rendering_stats_deltas)
|
|
|
| - def testCalcResultsFromRAFRenderStats(self):
|
| - rendering_stats = {'droppedFrameCount': 5,
|
| - 'totalTimeInSeconds': 1,
|
| - 'numAnimationFrames': 10,
|
| - 'numFramesSentToScreen': 10}
|
| res = PageMeasurementResults()
|
| res.WillMeasurePage(page.Page('http://foo.com/', None))
|
| - smoothness.CalcScrollResults(rendering_stats, res)
|
| + smoothness.CalcResults(stats, res)
|
| res.DidMeasurePage()
|
| - self.assertEquals(50, res.page_results[0]['dropped_percent'].value)
|
| +
|
| + # Scroll Results
|
| + self.assertAlmostEquals(
|
| + 1.0 / 100.0 * 1000.0,
|
| + res.page_results[0]['mean_frame_time'].value, 2)
|
| + self.assertAlmostEquals(
|
| + 20.0 / 100.0 * 100.0,
|
| + res.page_results[0]['dropped_percent'].value)
|
| + self.assertAlmostEquals(
|
| + 50.0 / (50.0 + 50.0) * 100.0,
|
| + res.page_results[0]['percent_impl_scrolled'].value)
|
| self.assertAlmostEquals(
|
| - 100,
|
| - res.page_results[0]['mean_frame_time'].value, 2)
|
| + 240.0 / 100.0,
|
| + res.page_results[0]['average_num_layers_drawn'].value)
|
| + self.assertAlmostEquals(
|
| + 10.0 / 100.0,
|
| + res.page_results[0]['average_num_missing_tiles'].value)
|
|
|
| - def testCalcResultsRealRenderStats(self):
|
| - rendering_stats = {'numFramesSentToScreen': 60,
|
| - 'globalTotalTextureUploadTimeInSeconds': 0,
|
| - 'totalProcessingCommandsTimeInSeconds': 0,
|
| - 'globalTextureUploadCount': 0,
|
| - 'droppedFrameCount': 0,
|
| - 'textureUploadCount': 0,
|
| - 'numAnimationFrames': 10,
|
| - 'totalPaintTimeInSeconds': 0.35374299999999986,
|
| - 'globalTotalProcessingCommandsTimeInSeconds': 0,
|
| - 'totalTextureUploadTimeInSeconds': 0,
|
| - 'totalRasterizeTimeInSeconds': 0,
|
| - 'totalTimeInSeconds': 1.0}
|
| - res = PageMeasurementResults()
|
| - res.WillMeasurePage(page.Page('http://foo.com/', None))
|
| - smoothness.CalcScrollResults(rendering_stats, res)
|
| - res.DidMeasurePage()
|
| - self.assertEquals(0, res.page_results[0]['dropped_percent'].value)
|
| + # Texture Upload Results
|
| + self.assertAlmostEquals(
|
| + 1.3 / 130.0 * 1000.0,
|
| + res.page_results[0]['average_commit_time'].value)
|
| + self.assertEquals(
|
| + 120,
|
| + res.page_results[0]['texture_upload_count'].value)
|
| + self.assertEquals(
|
| + 1.2,
|
| + res.page_results[0]['total_texture_upload_time'].value)
|
| +
|
| + # Image Decoding Results
|
| + self.assertEquals(
|
| + 140,
|
| + res.page_results[0]['total_deferred_image_decode_count'].value)
|
| + self.assertEquals(
|
| + 30,
|
| + res.page_results[0]['total_image_cache_hit_count'].value)
|
| + self.assertAlmostEquals(
|
| + 1.5 / 150.0 * 1000.0,
|
| + res.page_results[0]['average_image_gathering_time'].value)
|
| + self.assertEquals(
|
| + 1.4,
|
| + res.page_results[0]['total_deferred_image_decoding_time'].value)
|
| +
|
| + # Tile Analysis Results
|
| + self.assertEquals(
|
| + 160,
|
| + res.page_results[0]['total_tiles_analyzed'].value)
|
| + self.assertEquals(
|
| + 40,
|
| + res.page_results[0]['solid_color_tiles_analyzed'].value)
|
| + self.assertAlmostEquals(
|
| + 1.6 / 160.0 * 1000.0,
|
| + res.page_results[0]['average_tile_analysis_time'].value)
|
| +
|
| + # Latency Results
|
| + self.assertAlmostEquals(
|
| + 1.7 / 170.0 * 1000.0,
|
| + res.page_results[0]['average_latency'].value)
|
| + self.assertAlmostEquals(
|
| + 1.8 / 180.0 * 1000.0,
|
| + res.page_results[0]['average_touch_ui_latency'].value)
|
| + self.assertAlmostEquals(
|
| + 1.9 / 190.0 * 1000.0,
|
| + res.page_results[0]['average_touch_acked_latency'].value)
|
| self.assertAlmostEquals(
|
| - 1000 / 60.,
|
| - res.page_results[0]['mean_frame_time'].value, 2)
|
| + 2.0 / 200.0 * 1000.0,
|
| + res.page_results[0]['average_scroll_update_latency'].value)
|
|
|