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

Unified Diff: telemetry/telemetry/timeline/tracing_category_filter.py

Issue 2162963002: [polymer] Merge of master into polymer10-migration (Closed) Base URL: git@github.com:catapult-project/catapult.git@polymer10-migration
Patch Set: Merge polymer10-migration int polymer10-merge Created 4 years, 5 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: 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
« no previous file with comments | « telemetry/telemetry/timeline/trace_data.py ('k') | telemetry/telemetry/timeline/tracing_category_filter_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698