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

Unified Diff: tools/telemetry/telemetry/page/page_filter.py

Issue 99493004: Telemetry: Filter by label in addition to page URL. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Adding unit test. Created 7 years 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/page/page_filter.py
diff --git a/tools/telemetry/telemetry/page/page_filter.py b/tools/telemetry/telemetry/page/page_filter.py
index a1c213af8e6a16b71faf5726cffd0487cdd7b5e9..54a30ef8e11189d58f8d3806ee1e5b112d8a9cf9 100644
--- a/tools/telemetry/telemetry/page/page_filter.py
+++ b/tools/telemetry/telemetry/page/page_filter.py
@@ -4,6 +4,13 @@
import optparse
import re
+def HasLabelIn(obj, labels):
+ for label in labels:
+ if hasattr(obj, label) and getattr(obj, label):
+ return True
+ return False
+
+
class PageFilter(object):
"""Filters pages in the page set based on command line flags."""
@@ -24,16 +31,30 @@ class PageFilter(object):
else:
self._page_exclude_regex = None
+ self._include_labels = None
+ self._exclude_labels = None
+ if options.page_label_filter:
+ self._include_labels = options.page_label_filter.split(',')
+ if options.page_label_filter_exclude:
+ self._exclude_labels = options.page_label_filter_exclude.split(',')
+
def IsSelected(self, page):
+ # Exclude filters take priority
+ if self._exclude_labels and HasLabelIn(page, self._exclude_labels):
+ return False
if self._page_exclude_regex and (
self._page_exclude_regex.search(page.url) or
(page.name and self._page_exclude_regex.search(page.name))):
return False
+ # Apply all filters
+ filter_result = True
+ if self._include_labels:
+ filter_result = filter_result and HasLabelIn(page, self._include_labels)
if self._page_regex:
- return (
+ filter_result = filter_result and (
self._page_regex.search(page.url) or
(page.name and self._page_regex.search(page.name)))
- return True
+ return filter_result
@staticmethod
def AddCommandLineOptions(parser):
@@ -42,4 +63,10 @@ class PageFilter(object):
help='Use only pages whose URLs match the given filter regexp.')
group.add_option('--page-filter-exclude', dest='page_filter_exclude',
help='Exclude pages whose URLs match the given filter regexp.')
+ group.add_option('--page-label-filter', dest='page_label_filter',
+ help='Use only pages that have any of these labels')
+ group.add_option('--page-label-filter-exclude',
+ dest='page_label_filter_exclude',
+ help='Exclude pages that have any of these labels')
+
parser.add_option_group(group)
« no previous file with comments | « tools/telemetry/telemetry/core/browser_options.py ('k') | tools/telemetry/telemetry/page/page_filter_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698