diff options
author | ariblue <ariblue@google.com> | 2014-09-04 17:25:47 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-09-05 00:27:55 +0000 |
commit | 5c1e66643d7b5b14d457837ee733be99b553639e (patch) | |
tree | 755d27fe623abf3c8c9792e13f55ab91d07ff3a7 | |
parent | 074f66d56a16304d341c85d0a9a5f02bea96f221 (diff) | |
download | chromium_src-5c1e66643d7b5b14d457837ee733be99b553639e.zip chromium_src-5c1e66643d7b5b14d457837ee733be99b553639e.tar.gz chromium_src-5c1e66643d7b5b14d457837ee733be99b553639e.tar.bz2 |
Update smoothness.py to restore summarized results for metrics that don't care if some values are None:
mean_input_event_latency, input_event_latency_discrepancy, mean_scroll_update_latency, scroll_update_latency_discrepancy, first_gesture_scroll_update_latency
BUG=410018
Review URL: https://codereview.chromium.org/535783002
Cr-Commit-Position: refs/heads/master@{#293380}
-rw-r--r-- | tools/telemetry/telemetry/web_perf/metrics/smoothness.py | 30 | ||||
-rw-r--r-- | tools/telemetry/telemetry/web_perf/metrics/smoothness_unittest.py | 19 |
2 files changed, 21 insertions, 28 deletions
diff --git a/tools/telemetry/telemetry/web_perf/metrics/smoothness.py b/tools/telemetry/telemetry/web_perf/metrics/smoothness.py index d795194..7f10c71 100644 --- a/tools/telemetry/telemetry/web_perf/metrics/smoothness.py +++ b/tools/telemetry/telemetry/web_perf/metrics/smoothness.py @@ -55,15 +55,15 @@ class SmoothnessMetric(timeline_based_metric.TimelineBasedMetric): def _PopulateResultsFromStats(self, results, stats): page = results.current_page values = [ - self._ComputeFirstGestureScrollUpdateLatency(page, stats), self._ComputeQueueingDuration(page, stats), self._ComputeFrameTimeDiscrepancy(page, stats), self._ComputeMeanPixelsApproximated(page, stats) ] values += self._ComputeLatencyMetric(page, stats, 'input_event_latency', - stats.input_event_latency) + stats.input_event_latency) values += self._ComputeLatencyMetric(page, stats, 'scroll_update_latency', - stats.scroll_update_latency) + stats.scroll_update_latency) + values += self._ComputeFirstGestureScrollUpdateLatency(page, stats) values += self._ComputeFrameTimeMetric(page, stats) for v in values: results.AddValue(v) @@ -79,12 +79,11 @@ class SmoothnessMetric(timeline_based_metric.TimelineBasedMetric): none_value_reason = None if self._HasEnoughFrames(stats.frame_timestamps): latency_list = FlattenList(list_of_latency_lists) - if len(latency_list) > 0: - mean_latency = round(statistics.ArithmeticMean(latency_list), 3) - latency_discrepancy = ( - round(statistics.DurationsDiscrepancy(latency_list), 4)) - else: - none_value_reason = 'No latency values recorded.' + if len(latency_list) == 0: + return () + mean_latency = round(statistics.ArithmeticMean(latency_list), 3) + latency_discrepancy = ( + round(statistics.DurationsDiscrepancy(latency_list), 4)) else: none_value_reason = NOT_ENOUGH_FRAMES_MESSAGE return ( @@ -104,20 +103,21 @@ class SmoothnessMetric(timeline_based_metric.TimelineBasedMetric): none_value_reason = None if self._HasEnoughFrames(stats.frame_timestamps): latency_list = FlattenList(stats.gesture_scroll_update_latency) - if len(latency_list) > 0: - first_gesture_scroll_update_latency = round(latency_list[0], 4) - else: - none_value_reason = 'No gesture scroll update latency values recorded.' + if len(latency_list) == 0: + return () + first_gesture_scroll_update_latency = round(latency_list[0], 4) else: none_value_reason = NOT_ENOUGH_FRAMES_MESSAGE - return scalar.ScalarValue( + return ( + scalar.ScalarValue( page, 'first_gesture_scroll_update_latency', 'ms', first_gesture_scroll_update_latency, description='First gesture scroll update latency measures the time it ' 'takes to process the very first gesture scroll update ' 'input event. The first scroll gesture can often get ' 'delayed by work related to page loading.', - none_value_reason=none_value_reason) + none_value_reason=none_value_reason), + ) def _ComputeQueueingDuration(self, page, stats): """Returns a Value for the frame queueing durations.""" diff --git a/tools/telemetry/telemetry/web_perf/metrics/smoothness_unittest.py b/tools/telemetry/telemetry/web_perf/metrics/smoothness_unittest.py index aa62bdc..e21bd64 100644 --- a/tools/telemetry/telemetry/web_perf/metrics/smoothness_unittest.py +++ b/tools/telemetry/telemetry/web_perf/metrics/smoothness_unittest.py @@ -69,14 +69,9 @@ class SmoothnessMetricUnitTest(unittest.TestCase): def testComputeLatencyMetricWithMissingData(self): stats = _MockRenderingStats(frame_timestamps=self.good_timestamps, input_event_latency=[[], []]) - mean_value, discrepancy_value = self.metric._ComputeLatencyMetric( + value = self.metric._ComputeLatencyMetric( self.page, stats, 'input_event_latency', stats.input_event_latency) - self.assertEquals(None, mean_value.value) - self.assertEquals('No latency values recorded.', - mean_value.none_value_reason) - self.assertEquals(None, discrepancy_value.value) - self.assertEquals('No latency values recorded.', - discrepancy_value.none_value_reason) + self.assertEquals((), value) def testComputeLatencyMetricWithNotEnoughFrames(self): stats = _MockRenderingStats( @@ -96,25 +91,23 @@ class SmoothnessMetricUnitTest(unittest.TestCase): frame_timestamps=self.good_timestamps, gesture_scroll_update_latency=[[10, 20], [30, 40, 50]]) gesture_value = self.metric._ComputeFirstGestureScrollUpdateLatency( - self.page, stats) + self.page, stats)[0] self.assertEquals(10, gesture_value.value) def testComputeGestureScrollUpdateLatencyWithMissingData(self): stats = _MockRenderingStats( frame_timestamps=self.good_timestamps, gesture_scroll_update_latency=[[], []]) - gesture_value = self.metric._ComputeFirstGestureScrollUpdateLatency( + value = self.metric._ComputeFirstGestureScrollUpdateLatency( self.page, stats) - self.assertEquals(None, gesture_value.value) - self.assertEquals('No gesture scroll update latency values recorded.', - gesture_value.none_value_reason) + self.assertEquals((), value) def testComputeGestureScrollUpdateLatencyWithNotEnoughFrames(self): stats = _MockRenderingStats( frame_timestamps=self.not_enough_frames_timestamps, gesture_scroll_update_latency=[[10, 20], [30, 40, 50]]) gesture_value = self.metric._ComputeFirstGestureScrollUpdateLatency( - self.page, stats) + self.page, stats)[0] self.assertEquals(None, gesture_value.value) self.assertEquals(smoothness.NOT_ENOUGH_FRAMES_MESSAGE, gesture_value.none_value_reason) |