summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorariblue <ariblue@google.com>2014-09-04 17:25:47 -0700
committerCommit bot <commit-bot@chromium.org>2014-09-05 00:27:55 +0000
commit5c1e66643d7b5b14d457837ee733be99b553639e (patch)
tree755d27fe623abf3c8c9792e13f55ab91d07ff3a7
parent074f66d56a16304d341c85d0a9a5f02bea96f221 (diff)
downloadchromium_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.py30
-rw-r--r--tools/telemetry/telemetry/web_perf/metrics/smoothness_unittest.py19
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)