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

Unified Diff: tools/telemetry/telemetry/core/backends/chrome/tracing_backend.py

Issue 414253004: Introduce TracingController and TracingControllerBackend skeleton (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ready_to_land Created 6 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/core/backends/chrome/tracing_backend.py
diff --git a/tools/telemetry/telemetry/core/backends/chrome/tracing_backend.py b/tools/telemetry/telemetry/core/backends/chrome/tracing_backend.py
index d556febe29184d32ba5ace476e3272e38dcf2d40..5b285151eecb8ef4f772540080ac470931f53b3f 100644
--- a/tools/telemetry/telemetry/core/backends/chrome/tracing_backend.py
+++ b/tools/telemetry/telemetry/core/backends/chrome/tracing_backend.py
@@ -3,25 +3,9 @@
# found in the LICENSE file.
import logging
-import re
from telemetry.core.backends.chrome import inspector_websocket
-
-
-# All tracing categories not disabled-by-default
-DEFAULT_TRACE_CATEGORIES = None
-
-
-# Categories for absolute minimum overhead tracing. This contains no
-# sub-traces of thread tasks, so it's only useful for capturing the
-# cpu-time spent on threads (as well as needed benchmark traces)
-# FIXME: Remove webkit.console when blink.console lands in chromium and
-# the ref builds are updated. crbug.com/386847
-MINIMAL_TRACE_CATEGORIES = ("toplevel,"
- "benchmark,"
- "webkit.console,"
- "blink.console,"
- "trace_event_overhead")
+from telemetry.core.platform import tracing_category_filter
class TracingUnsupportedException(Exception):
@@ -32,77 +16,6 @@ class TracingTimeoutException(Exception):
pass
-class CategoryFilter(object):
- def __init__(self, filter_string):
- self.excluded = set()
- self.included = set()
- self.disabled = set()
- self.synthetic_delays = set()
- self.contains_wildcards = False
-
- if not filter_string:
- return
-
- if '*' in filter_string or '?' in filter_string:
- self.contains_wildcards = True
-
- filter_set = set(filter_string.split(','))
- delay_re = re.compile(r'DELAY[(][A-Za-z0-9._;]+[)]')
- for category in filter_set:
- if category == '':
- continue
- if delay_re.match(category):
- self.synthetic_delays.add(category)
- elif category[0] == '-':
- category = category[1:]
- self.excluded.add(category)
- elif category.startswith('disabled-by-default-'):
- self.disabled.add(category)
- else:
- self.included.add(category)
-
- def IsSubset(self, other):
- """ Determine if filter A (self) is a subset of filter B (other).
- Returns True if A is a subset of B, False if A is not a subset of B,
- and None if we can't tell for sure.
- """
- # We don't handle filters with wildcards in this test.
- if self.contains_wildcards or other.contains_wildcards:
- return None
-
- # Disabled categories get into a trace if and only if they are contained in
- # the 'disabled' set. Return False if A's disabled set is not a subset of
- # B's disabled set.
- if not self.disabled <= other.disabled:
- return False
-
- # If A defines more or different synthetic delays than B, then A is not a
- # subset.
- if not self.synthetic_delays <= other.synthetic_delays:
- return False
-
- if self.included and other.included:
- # A and B have explicit include lists. If A includes something that B
- # doesn't, return False.
- if not self.included <= other.included:
- return False
- elif self.included:
- # Only A has an explicit include list. If A includes something that B
- # excludes, return False.
- if self.included.intersection(other.excluded):
- return False
- elif other.included:
- # Only B has an explicit include list. We don't know which categories are
- # contained in the default list, so return None.
- return None
- else:
- # None of the filter have explicit include list. If B excludes categories
- # that A doesn't exclude, return False.
- if not other.excluded <= self.excluded:
- return False
-
- return True
-
class TracingBackend(object):
def __init__(self, devtools_port):
self._inspector_websocket = inspector_websocket.InspectorWebsocket(
@@ -126,7 +39,8 @@ class TracingBackend(object):
"""
self._nesting += 1
if self.is_tracing_running:
- new_category_filter = CategoryFilter(custom_categories)
+ new_category_filter = tracing_category_filter.TracingCategoryFilter(
+ filter_string=custom_categories)
is_subset = new_category_filter.IsSubset(self._category_filter)
assert(is_subset != False)
if is_subset == None:
@@ -135,7 +49,8 @@ class TracingBackend(object):
return False
self._CheckNotificationSupported()
req = {'method': 'Tracing.start'}
- self._category_filter = CategoryFilter(custom_categories)
+ self._category_filter = tracing_category_filter.TracingCategoryFilter(
+ filter_string=custom_categories)
if custom_categories:
req['params'] = {'categories': custom_categories}
self._inspector_websocket.SyncRequest(req, timeout)

Powered by Google App Engine
This is Rietveld 408576698