Index: telemetry/telemetry/timeline/tracing_category_filter.py |
diff --git a/telemetry/telemetry/timeline/tracing_category_filter.py b/telemetry/telemetry/timeline/tracing_category_filter.py |
deleted file mode 100644 |
index c417d13b57316f88d1697f5676b60a2962b2a644..0000000000000000000000000000000000000000 |
--- a/telemetry/telemetry/timeline/tracing_category_filter.py |
+++ /dev/null |
@@ -1,202 +0,0 @@ |
-# Copyright 2014 The Chromium Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-import re |
- |
- |
-def CreateNoOverheadFilter(): |
- """Returns a filter with the least overhead possible. |
- |
- 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 |
- """ |
- categories = [ |
- "toplevel", |
- "benchmark", |
- "webkit.console", |
- "blink.console", |
- "trace_event_overhead" |
- ] |
- return TracingCategoryFilter(filter_string=','.join(categories)) |
- |
- |
-def CreateMinimalOverheadFilter(): |
- """Returns a filter with the best-effort amount of overhead.""" |
- return TracingCategoryFilter(filter_string='') |
- |
- |
-def CreateDebugOverheadFilter(): |
- """Returns a filter with as many traces enabled as is useful.""" |
- return TracingCategoryFilter(filter_string='*,disabled-by-default-cc.debug') |
- |
- |
-_delay_re = re.compile(r'DELAY[(][A-Za-z0-9._;]+[)]') |
- |
- |
-class TracingCategoryFilter(object): |
- """A set of included and excluded categories that should be traced. |
- |
- The TraceCategoryFilter allows fine tuning of what data is traced. Basic |
- choice of which tracers to use is done by TracingOptions. |
- |
- Providing filter_string=None gives the default category filter, which leaves |
- what to trace up to the individual trace systems. |
- """ |
- def __init__(self, filter_string=None): |
- self._included_categories = set() |
- self._excluded_categories = set() |
- self._disabled_by_default_categories = set() |
- self._synthetic_delays = set() |
- self.contains_wildcards = False |
- self.AddFilterString(filter_string) |
- |
- def AddFilterString(self, filter_string): |
- if filter_string == None: |
- return |
- |
- if '*' in filter_string or '?' in filter_string: |
- self.contains_wildcards = True |
- |
- filter_set = set([cf.strip() for cf in filter_string.split(',')]) |
- for category in filter_set: |
- if category == '': |
- continue |
- |
- if _delay_re.match(category): |
- self._synthetic_delays.add(category) |
- continue |
- |
- if category[0] == '-': |
- assert not category[1:] in self._included_categories |
- self._excluded_categories.add(category[1:]) |
- continue |
- |
- if category.startswith('disabled-by-default-'): |
- self._disabled_by_default_categories.add(category) |
- continue |
- |
- assert not category in self._excluded_categories |
- self._included_categories.add(category) |
- |
- @property |
- def included_categories(self): |
- return self._included_categories |
- |
- @property |
- def excluded_categories(self): |
- return self._excluded_categories |
- |
- @property |
- def disabled_by_default_categories(self): |
- return self._disabled_by_default_categories |
- |
- @property |
- def synthetic_delays(self): |
- return self._synthetic_delays |
- |
- @property |
- def filter_string(self): |
- return self._GetFilterString(stable_output=False) |
- |
- @property |
- def stable_filter_string(self): |
- return self._GetFilterString(stable_output=True) |
- |
- def _GetFilterString(self, stable_output): |
- # Note: This outputs fields in an order that intentionally matches |
- # trace_event_impl's CategoryFilter string order. |
- lists = [] |
- lists.append(self._included_categories) |
- lists.append(self._disabled_by_default_categories) |
- lists.append(['-%s' % x for x in self._excluded_categories]) |
- lists.append(self._synthetic_delays) |
- categories = [] |
- for l in lists: |
- if stable_output: |
- l = list(l) |
- l.sort() |
- categories.extend(l) |
- return ','.join(categories) |
- |
- def GetDictForChromeTracing(self): |
- INCLUDED_CATEGORIES_PARAM = 'included_categories' |
- EXCLUDED_CATEGORIES_PARAM = 'excluded_categories' |
- SYNTHETIC_DELAYS_PARAM = 'synthetic_delays' |
- |
- result = {} |
- if self._included_categories or self._disabled_by_default_categories: |
- result[INCLUDED_CATEGORIES_PARAM] = list( |
- self._included_categories | self._disabled_by_default_categories) |
- if self._excluded_categories: |
- result[EXCLUDED_CATEGORIES_PARAM] = list(self._excluded_categories) |
- if self._synthetic_delays: |
- result[SYNTHETIC_DELAYS_PARAM] = list(self._synthetic_delays) |
- return result |
- |
- def AddDisabledByDefault(self, category): |
- assert category.startswith('disabled-by-default-') |
- self._disabled_by_default_categories.add(category) |
- |
- def AddIncludedCategory(self, category_glob): |
- """Explicitly enables anything matching category_glob.""" |
- assert not category_glob.startswith('disabled-by-default-') |
- assert not category_glob in self._excluded_categories |
- self._included_categories.add(category_glob) |
- |
- def AddExcludedCategory(self, category_glob): |
- """Explicitly disables anything matching category_glob.""" |
- assert not category_glob.startswith('disabled-by-default-') |
- assert not category_glob in self._included_categories |
- self._excluded_categories.add(category_glob) |
- |
- def AddSyntheticDelay(self, delay): |
- assert _delay_re.match(delay) |
- self._synthetic_delays.add(delay) |
- |
- 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_by_default_categories <= \ |
- other.disabled_by_default_categories: |
- 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_categories and other.included_categories: |
- # A and B have explicit include lists. If A includes something that B |
- # doesn't, return False. |
- if not self.included_categories <= other.included_categories: |
- return False |
- elif self.included_categories: |
- # Only A has an explicit include list. If A includes something that B |
- # excludes, return False. |
- if self.included_categories.intersection(other.excluded_categories): |
- return False |
- elif other.included_categories: |
- # 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_categories <= self.excluded_categories: |
- return False |
- |
- return True |