Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(402)

Side by Side Diff: tools/telemetry/telemetry/web_perf/metrics/timeline_based_metric.py

Issue 1357423008: [Telemetry] AddIsEventInInteractions helper method (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | tools/telemetry/telemetry/web_perf/metrics/timeline_based_metric_unittest.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 5
6 class TimelineBasedMetricException(Exception): 6 class TimelineBasedMetricException(Exception):
7 """Exception that can be thrown from metrics that implements 7 """Exception that can be thrown from metrics that implements
8 TimelineBasedMetric to indicate a problem arised when computing the metric. 8 TimelineBasedMetric to indicate a problem arised when computing the metric.
9 """ 9 """
10 10
11 11
12 def _TimeRangesHasOverlap(iterable_time_ranges): 12 def _TimeRangesHasOverlap(iterable_time_ranges):
13 """ Returns True if there is are overlapped ranges in time ranges. 13 """ Returns True if there is are overlapped ranges in time ranges.
14 iterable_time_ranges: an iterable of time ranges. Each time range is a 14 iterable_time_ranges: an iterable of time ranges. Each time range is a
15 tuple (start time, end time). 15 tuple (start time, end time).
16 """ 16 """
17 # Sort the ranges by the start time 17 # Sort the ranges by the start time
18 sorted_time_ranges = sorted(iterable_time_ranges) 18 sorted_time_ranges = sorted(iterable_time_ranges)
19 last_range = sorted_time_ranges[0] 19 last_range = sorted_time_ranges[0]
20 for current_range in sorted_time_ranges[1:]: 20 for current_range in sorted_time_ranges[1:]:
21 start_current_range = current_range[0] 21 start_current_range = current_range[0]
22 end_last_range = last_range[1] 22 end_last_range = last_range[1]
23 if start_current_range < end_last_range: 23 if start_current_range < end_last_range:
24 return True 24 return True
25 last_range = current_range 25 last_range = current_range
26 return False 26 return False
27 27
28 28
29 def IsEventInInteractions(event, interaction_records):
30 """ Return True if event is in any of the interaction records' time range.
31
32 Args:
33 event: an instance of telemetry.timeline.event.TimelineEvent.
34 interaction_records: a list of interaction records, whereas each record is
35 an instance of
36 telemetry.web_perf.timeline_interaction_record.TimelineInteractionRecord.
37
38 Returns:
39 True if |event|'s start & end time is in any of the |interaction_records|'s
40 time range.
41 """
42 return any(ir.start <= event.start and ir.end >= event.end for ir
43 in interaction_records)
44
45
29 class TimelineBasedMetric(object): 46 class TimelineBasedMetric(object):
30 47
31 def __init__(self): 48 def __init__(self):
32 """Computes metrics from a telemetry.timeline Model and a range 49 """Computes metrics from a telemetry.timeline Model and a range
33 50
34 """ 51 """
35 super(TimelineBasedMetric, self).__init__() 52 super(TimelineBasedMetric, self).__init__()
36 53
37 def AddResults(self, model, renderer_thread, interaction_records, results): 54 def AddResults(self, model, renderer_thread, interaction_records, results):
38 """Computes and adds metrics for the interaction_records' time ranges. 55 """Computes and adds metrics for the interaction_records' time ranges.
(...skipping 11 matching lines...) Expand all
50 """ 67 """
51 raise NotImplementedError() 68 raise NotImplementedError()
52 69
53 def VerifyNonOverlappedRecords(self, interaction_records): 70 def VerifyNonOverlappedRecords(self, interaction_records):
54 """This raises exceptions if interaction_records contain overlapped ranges. 71 """This raises exceptions if interaction_records contain overlapped ranges.
55 """ 72 """
56 if _TimeRangesHasOverlap(((r.start, r.end) for r in interaction_records)): 73 if _TimeRangesHasOverlap(((r.start, r.end) for r in interaction_records)):
57 raise TimelineBasedMetricException( 74 raise TimelineBasedMetricException(
58 'This metric does not support interaction records with overlapped ' 75 'This metric does not support interaction records with overlapped '
59 'time range.') 76 'time range.')
OLDNEW
« no previous file with comments | « no previous file | tools/telemetry/telemetry/web_perf/metrics/timeline_based_metric_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698