diff --git a/browser/modules/metrics.yaml b/browser/modules/metrics.yaml index 85bc9e5d7b4c..83e62c6ab84f 100644 --- a/browser/modules/metrics.yaml +++ b/browser/modules/metrics.yaml @@ -20,6 +20,9 @@ browser.engagement: the foreground, only if it is receiving these interaction events. Migrated from Telemetry's `browser.engagement.active_ticks`. + metadata: &metadata + tags: + - "Firefox :: General" bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1376942 # Telemetry - https://bugzilla.mozilla.org/show_bug.cgi?id=1545172 # Telemetry @@ -46,6 +49,7 @@ browser.engagement: Migrated from Telemetry's `browser.engagement.total_uri_count_normal_and_private_mode`. + metadata: *metadata bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1535169 # Telemetry - https://bugzilla.mozilla.org/show_bug.cgi?id=1741674 diff --git a/gfx/metrics.yaml b/gfx/metrics.yaml index 3a750c515b1d..8c83a7ac6b3b 100644 --- a/gfx/metrics.yaml +++ b/gfx/metrics.yaml @@ -17,6 +17,9 @@ paint: type: timing_distribution description: > The time to build a Gecko display list. + metadata: &metadata + tags: + - "Core :: Graphics" bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1728423 data_reviews: diff --git a/toolkit/components/glean/build_scripts/glean_parser_ext/cpp.py b/toolkit/components/glean/build_scripts/glean_parser_ext/cpp.py index 273a2e2960db..ee501802e60b 100644 --- a/toolkit/components/glean/build_scripts/glean_parser_ext/cpp.py +++ b/toolkit/components/glean/build_scripts/glean_parser_ext/cpp.py @@ -11,7 +11,7 @@ Outputter to generate C++ code for metrics. import jinja2 import json -from util import generate_metric_ids, generate_ping_ids +from util import generate_metric_ids, generate_ping_ids, get_metrics from glean_parser import util @@ -111,10 +111,13 @@ def output_cpp(objs, output_fd, options={}): get_metric_id = generate_metric_ids(objs) get_ping_id = generate_ping_ids(objs) - if len(objs) == 1 and "pings" in objs: + if "pings" in objs: template_filename = "cpp_pings.jinja2" + if objs.get("tags"): + del objs["tags"] else: template_filename = "cpp.jinja2" + objs = get_metrics(objs) template = util.get_jinja2_template( template_filename, diff --git a/toolkit/components/glean/build_scripts/glean_parser_ext/js.py b/toolkit/components/glean/build_scripts/glean_parser_ext/js.py index ec4ef9f366cf..5331fdd50562 100644 --- a/toolkit/components/glean/build_scripts/glean_parser_ext/js.py +++ b/toolkit/components/glean/build_scripts/glean_parser_ext/js.py @@ -17,7 +17,7 @@ import jinja2 from perfecthash import PerfectHash from string_table import StringTable -from util import generate_metric_ids, generate_ping_ids +from util import generate_metric_ids, generate_ping_ids, get_metrics from glean_parser import util """ @@ -118,10 +118,10 @@ def output_js(objs, output_fd, options={}): util.get_jinja2_template = get_local_template - if len(objs) == 1 and "pings" in objs: - write_pings(objs, output_fd, "js_pings.jinja2") + if "pings" in objs: + write_pings({"pings": objs["pings"]}, output_fd, "js_pings.jinja2") else: - write_metrics(objs, output_fd, "js.jinja2") + write_metrics(get_metrics(objs), output_fd, "js.jinja2") def write_metrics(objs, output_fd, template_filename): @@ -148,7 +148,7 @@ def write_metrics(objs, output_fd, template_filename): # Mapping from a type name to its ID metric_type_ids = {} - for category_name, objs in objs.items(): + for category_name, objs in get_metrics(objs).items(): category_name = util.camelize(category_name) id = category_string_table.stringIndex(category_name) categories.append((category_name, id)) diff --git a/toolkit/components/glean/build_scripts/glean_parser_ext/run_glean_parser.py b/toolkit/components/glean/build_scripts/glean_parser_ext/run_glean_parser.py index 3e2afe28decb..09f64e79b031 100644 --- a/toolkit/components/glean/build_scripts/glean_parser_ext/run_glean_parser.py +++ b/toolkit/components/glean/build_scripts/glean_parser_ext/run_glean_parser.py @@ -99,7 +99,9 @@ def parse_with_options(input_files, options): # bug 1720494: This should be a simple call to translate.transform counters = {} numerators_by_denominator: Dict[str, Any] = {} - for category_val in objects.values(): + for (category_name, category_val) in objects.items(): + if category_name == "tags": + continue for metric in category_val.values(): fqmn = metric.identifier() if getattr(metric, "type", None) == "counter": diff --git a/toolkit/components/glean/build_scripts/glean_parser_ext/rust.py b/toolkit/components/glean/build_scripts/glean_parser_ext/rust.py index 9ba04672f794..a291d526a7f2 100644 --- a/toolkit/components/glean/build_scripts/glean_parser_ext/rust.py +++ b/toolkit/components/glean/build_scripts/glean_parser_ext/rust.py @@ -13,7 +13,7 @@ import json import jinja2 -from util import generate_metric_ids, generate_ping_ids +from util import generate_metric_ids, generate_ping_ids, get_metrics from glean_parser import util from glean_parser.metrics import Rate @@ -205,14 +205,14 @@ def output_rust(objs, output_fd, options={}): # 17 -> "test_only::an_event" events_by_id = {} - if len(objs) == 1 and "pings" in objs: + if "pings" in objs: template_filename = "rust_pings.jinja2" + objs = {"pings": objs["pings"]} else: template_filename = "rust.jinja2" - - for category_name, metrics in objs.items(): - for metric in metrics.values(): - + objs = get_metrics(objs) + for category_name, category_value in objs.items(): + for metric in category_value.values(): # The constant is all uppercase and suffixed by `_MAP` const_name = util.snake_case(metric.type).upper() + "_MAP" typ = type_name(metric) diff --git a/toolkit/components/glean/build_scripts/glean_parser_ext/util.py b/toolkit/components/glean/build_scripts/glean_parser_ext/util.py index b216d3e904b8..19deb05abd84 100644 --- a/toolkit/components/glean/build_scripts/glean_parser_ext/util.py +++ b/toolkit/components/glean/build_scripts/glean_parser_ext/util.py @@ -5,8 +5,9 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. """ -Utitlity functions for the glean_parser-based code generator +Utility functions for the glean_parser-based code generator """ +import copy def generate_ping_ids(objs): @@ -52,3 +53,14 @@ def generate_metric_ids(objs): metric_id += 1 return lambda metric: metric_id_mapping[(metric.category, metric.name)] + + +def get_metrics(objs): + """ + Returns *just* the metrics in a set of Glean objects + """ + ret = copy.copy(objs) + for category in ["pings", "tags"]: + if ret.get(category): + del ret[category] + return ret diff --git a/toolkit/components/glean/build_scripts/mach_commands.py b/toolkit/components/glean/build_scripts/mach_commands.py index 06be626d2653..afc26202ac61 100644 --- a/toolkit/components/glean/build_scripts/mach_commands.py +++ b/toolkit/components/glean/build_scripts/mach_commands.py @@ -4,6 +4,16 @@ from mach.decorators import Command, CommandArgument +LICENSE_HEADER = """# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +""" + +GENERATED_HEADER = """ +### This file was AUTOMATICALLY GENERATED by `./mach update-glean-tags` +### DO NOT edit it by hand. +""" + @Command( "data-review", @@ -28,3 +38,38 @@ def data_review(command_context, bug=None): return data_review.generate( bug, [Path(command_context.topsrcdir) / x for x in metrics_yamls] ) + + +@Command( + "update-glean-tags", + category="misc", + description=( + "Creates a list of valid glean tags based on in-tree bugzilla component definitions" + ), +) +def update_glean_tags(command_context): + from pathlib import Path + import yaml + from mozbuild.frontend.reader import BuildReader, EmptyConfig + + config = EmptyConfig(str((Path(__file__).parent / "../../../../").resolve())) + reader = BuildReader(config) + bug_components = set() + for p in reader.read_topsrcdir(): + if p.get("BUG_COMPONENT"): + bug_components.add(p["BUG_COMPONENT"]) + + tags_filename = (Path(__file__).parent / "../tags.yaml").resolve() + + tags = {"$schema": "moz://mozilla.org/schemas/glean/tags/1-0-0"} + for bug_component in bug_components: + product = bug_component.product.strip() + component = bug_component.component.strip() + tags["{} :: {}".format(product, component)] = { + "description": "The Bugzilla component which applies to this object." + } + + open(tags_filename, "w").write( + "{}\n{}\n\n".format(LICENSE_HEADER, GENERATED_HEADER) + + yaml.dump(tags, width=78, explicit_start=True) + ) diff --git a/toolkit/components/glean/metrics.yaml b/toolkit/components/glean/metrics.yaml index 12eaed6fb6be..7e6c09b0cde4 100644 --- a/toolkit/components/glean/metrics.yaml +++ b/toolkit/components/glean/metrics.yaml @@ -19,6 +19,9 @@ fog: time_unit: nanosecond description: | Time the FOG initialization takes. + metadata: &metadata + tags: + - "Toolkit :: Telemetry" bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1662123 data_reviews: @@ -37,6 +40,7 @@ fog: True if we failed to register with the idle service. Absent otherwise. Means IPC probably isn't working well. Child-process data will likely be absent, or incomplete. + metadata: *metadata bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1694739 data_reviews: @@ -54,6 +58,7 @@ fog.ipc: description: | The number of times the ipc buffer failed to be replayed in the parent process. + metadata: *metadata bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1664461 data_reviews: @@ -70,6 +75,7 @@ fog.ipc: memory_unit: byte description: | The number and size of the IPC buffers being received over FOG IPC. + metadata: *metadata bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1694739 data_reviews: @@ -87,6 +93,7 @@ fog.ipc: description: | The length of time between asking the child processes for their IPC buffers and all of them being received by the parent. + metadata: *metadata bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1694739 data_reviews: @@ -105,6 +112,7 @@ fog.ipc: throwing even partial results into the trash. If this number is high, we might consider writing custom `MozPromise`- handling code instead of using `MozPromise::All`. + metadata: *metadata bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1729026 data_reviews: diff --git a/toolkit/components/glean/metrics_index.py b/toolkit/components/glean/metrics_index.py index 12d046552278..602eff89816f 100644 --- a/toolkit/components/glean/metrics_index.py +++ b/toolkit/components/glean/metrics_index.py @@ -30,3 +30,10 @@ pings_yamls = [ "toolkit/components/glean/tests/test_pings.yaml", "toolkit/mozapps/update/pings.yaml", ] + +# The list of tags that are allowed in the above to files, and their +# descriptions. Currently we restrict to a set scraped from bugzilla +# (via `./mach update-glean-tags`) +tags_yamls = [ + "toolkit/components/glean/tags.yaml", +] diff --git a/toolkit/components/glean/moz.build b/toolkit/components/glean/moz.build index c8d27605b07c..9d4cd086e8a8 100644 --- a/toolkit/components/glean/moz.build +++ b/toolkit/components/glean/moz.build @@ -94,6 +94,7 @@ include("metrics_index.py") # The yamls arrays are relative to topsrcdir, so we need to transform: metrics_yamls = ["../../../" + x for x in metrics_yamls] pings_yamls = ["../../../" + x for x in pings_yamls] +tags_yamls = ["../../../" + x for x in tags_yamls] # If you change the length of this deps list, update DEPS_LEN in run_glean_parser.py deps = [ "metrics_index.py", @@ -117,7 +118,7 @@ GeneratedFile( "api/src/metrics.rs", script="build_scripts/glean_parser_ext/run_glean_parser.py", flags=[CONFIG["MOZ_APP_VERSION"]], - inputs=deps + metrics_yamls, + inputs=deps + metrics_yamls + tags_yamls, ) GeneratedFile( @@ -125,7 +126,7 @@ GeneratedFile( script="build_scripts/glean_parser_ext/run_glean_parser.py", entry_point="cpp_metrics", flags=[CONFIG["MOZ_APP_VERSION"]], - inputs=deps + metrics_yamls, + inputs=deps + metrics_yamls + tags_yamls, ) GeneratedFile( @@ -133,14 +134,14 @@ GeneratedFile( script="build_scripts/glean_parser_ext/run_glean_parser.py", entry_point="js_metrics", flags=[CONFIG["MOZ_APP_VERSION"]], - inputs=deps + metrics_yamls, + inputs=deps + metrics_yamls + tags_yamls, ) GeneratedFile( "api/src/pings.rs", script="build_scripts/glean_parser_ext/run_glean_parser.py", flags=[CONFIG["MOZ_APP_VERSION"]], - inputs=deps + pings_yamls, + inputs=deps + pings_yamls + tags_yamls, ) GeneratedFile( @@ -148,7 +149,7 @@ GeneratedFile( script="build_scripts/glean_parser_ext/run_glean_parser.py", entry_point="cpp_metrics", flags=[CONFIG["MOZ_APP_VERSION"]], - inputs=deps + pings_yamls, + inputs=deps + pings_yamls + tags_yamls, ) GeneratedFile( @@ -156,7 +157,7 @@ GeneratedFile( script="build_scripts/glean_parser_ext/run_glean_parser.py", entry_point="js_metrics", flags=[CONFIG["MOZ_APP_VERSION"]], - inputs=deps + pings_yamls, + inputs=deps + pings_yamls + tags_yamls, ) # Glean Interface For Firefox Telemetry Maps from Glean MetricId to Telemetry ProbeId @@ -166,7 +167,7 @@ GeneratedFile( script="build_scripts/glean_parser_ext/run_glean_parser.py", entry_point="gifft_map", flags=[CONFIG["MOZ_APP_VERSION"], "Event"], - inputs=deps + metrics_yamls, + inputs=deps + metrics_yamls + tags_yamls, ) GeneratedFile( @@ -174,7 +175,7 @@ GeneratedFile( script="build_scripts/glean_parser_ext/run_glean_parser.py", entry_point="gifft_map", flags=[CONFIG["MOZ_APP_VERSION"], "Histogram"], - inputs=deps + metrics_yamls, + inputs=deps + metrics_yamls + tags_yamls, ) GeneratedFile( @@ -182,7 +183,7 @@ GeneratedFile( script="build_scripts/glean_parser_ext/run_glean_parser.py", entry_point="gifft_map", flags=[CONFIG["MOZ_APP_VERSION"], "Scalar"], - inputs=deps + metrics_yamls, + inputs=deps + metrics_yamls + tags_yamls, ) DIRS += [ diff --git a/toolkit/components/glean/tags.yaml b/toolkit/components/glean/tags.yaml new file mode 100644 index 000000000000..4989f09c0240 --- /dev/null +++ b/toolkit/components/glean/tags.yaml @@ -0,0 +1,421 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +### This file was AUTOMATICALLY GENERATED by `./mach update-glean-tags` +### DO NOT edit it by hand. + + +--- +$schema: moz://mozilla.org/schemas/glean/tags/1-0-0 +'Cloud Services :: Firefox: Common': + description: The Bugzilla component which applies to this object. +'Core :: Audio/Video': + description: The Bugzilla component which applies to this object. +'Core :: Audio/Video: GMP': + description: The Bugzilla component which applies to this object. +'Core :: Audio/Video: Playback': + description: The Bugzilla component which applies to this object. +'Core :: Audio/Video: Recording': + description: The Bugzilla component which applies to this object. +'Core :: CSS Parsing and Computation': + description: The Bugzilla component which applies to this object. +'Core :: CSS Transitions and Animations': + description: The Bugzilla component which applies to this object. +'Core :: Canvas: 2D': + description: The Bugzilla component which applies to this object. +'Core :: Canvas: WebGL': + description: The Bugzilla component which applies to this object. +'Core :: DOM: Animation': + description: The Bugzilla component which applies to this object. +'Core :: DOM: Bindings (WebIDL)': + description: The Bugzilla component which applies to this object. +'Core :: DOM: CSS Object Model': + description: The Bugzilla component which applies to this object. +'Core :: DOM: Content Processes': + description: The Bugzilla component which applies to this object. +'Core :: DOM: Copy & Paste and Drag & Drop': + description: The Bugzilla component which applies to this object. +'Core :: DOM: Core & HTML': + description: The Bugzilla component which applies to this object. +'Core :: DOM: Device Interfaces': + description: The Bugzilla component which applies to this object. +'Core :: DOM: Editor': + description: The Bugzilla component which applies to this object. +'Core :: DOM: Events': + description: The Bugzilla component which applies to this object. +'Core :: DOM: File': + description: The Bugzilla component which applies to this object. +'Core :: DOM: Forms': + description: The Bugzilla component which applies to this object. +'Core :: DOM: Geolocation': + description: The Bugzilla component which applies to this object. +'Core :: DOM: HTML Parser': + description: The Bugzilla component which applies to this object. +'Core :: DOM: Navigation': + description: The Bugzilla component which applies to this object. +'Core :: DOM: Networking': + description: The Bugzilla component which applies to this object. +'Core :: DOM: Push Notifications': + description: The Bugzilla component which applies to this object. +'Core :: DOM: Security': + description: The Bugzilla component which applies to this object. +'Core :: DOM: Selection': + description: The Bugzilla component which applies to this object. +'Core :: DOM: Serializers': + description: The Bugzilla component which applies to this object. +'Core :: DOM: Service Workers': + description: The Bugzilla component which applies to this object. +'Core :: DOM: UI Events & Focus Handling': + description: The Bugzilla component which applies to this object. +'Core :: DOM: Web Authentication': + description: The Bugzilla component which applies to this object. +'Core :: DOM: Web Payments': + description: The Bugzilla component which applies to this object. +'Core :: DOM: Workers': + description: The Bugzilla component which applies to this object. +'Core :: DOM: postMessage': + description: The Bugzilla component which applies to this object. +'Core :: Disability Access APIs': + description: The Bugzilla component which applies to this object. +'Core :: Gecko Profiler': + description: The Bugzilla component which applies to this object. +'Core :: General': + description: The Bugzilla component which applies to this object. +'Core :: Graphics': + description: The Bugzilla component which applies to this object. +'Core :: Graphics: Layers': + description: The Bugzilla component which applies to this object. +'Core :: Graphics: Text': + description: The Bugzilla component which applies to this object. +'Core :: Graphics: WebGPU': + description: The Bugzilla component which applies to this object. +'Core :: Graphics: WebRender': + description: The Bugzilla component which applies to this object. +'Core :: Hardware Abstraction Layer (HAL)': + description: The Bugzilla component which applies to this object. +'Core :: IPC': + description: The Bugzilla component which applies to this object. +'Core :: ImageLib': + description: The Bugzilla component which applies to this object. +'Core :: Internationalization': + description: The Bugzilla component which applies to this object. +'Core :: JavaScript Engine': + description: The Bugzilla component which applies to this object. +'Core :: JavaScript: Internationalization API': + description: The Bugzilla component which applies to this object. +'Core :: Layout': + description: The Bugzilla component which applies to this object. +'Core :: Layout: Block and Inline': + description: The Bugzilla component which applies to this object. +'Core :: Layout: Columns': + description: The Bugzilla component which applies to this object. +'Core :: Layout: Flexbox': + description: The Bugzilla component which applies to this object. +'Core :: Layout: Floats': + description: The Bugzilla component which applies to this object. +'Core :: Layout: Form Controls': + description: The Bugzilla component which applies to this object. +'Core :: Layout: Grid': + description: The Bugzilla component which applies to this object. +'Core :: Layout: Images, Video, and HTML Frames': + description: The Bugzilla component which applies to this object. +'Core :: Layout: Positioned': + description: The Bugzilla component which applies to this object. +'Core :: Layout: Ruby': + description: The Bugzilla component which applies to this object. +'Core :: Layout: Scrolling and Overflow': + description: The Bugzilla component which applies to this object. +'Core :: Layout: Tables': + description: The Bugzilla component which applies to this object. +'Core :: Layout: Text and Fonts': + description: The Bugzilla component which applies to this object. +'Core :: Localization': + description: The Bugzilla component which applies to this object. +'Core :: MFBT': + description: The Bugzilla component which applies to this object. +'Core :: MathML': + description: The Bugzilla component which applies to this object. +'Core :: Memory Allocator': + description: The Bugzilla component which applies to this object. +'Core :: Networking': + description: The Bugzilla component which applies to this object. +'Core :: Networking: Cache': + description: The Bugzilla component which applies to this object. +'Core :: Networking: Cookies': + description: The Bugzilla component which applies to this object. +'Core :: Networking: DNS': + description: The Bugzilla component which applies to this object. +'Core :: Networking: File': + description: The Bugzilla component which applies to this object. +'Core :: Networking: HTTP': + description: The Bugzilla component which applies to this object. +'Core :: Networking: JAR': + description: The Bugzilla component which applies to this object. +'Core :: Networking: WebSockets': + description: The Bugzilla component which applies to this object. +'Core :: Panning and Zooming': + description: The Bugzilla component which applies to this object. +'Core :: Performance': + description: The Bugzilla component which applies to this object. +'Core :: Permission Manager': + description: The Bugzilla component which applies to this object. +'Core :: Plug-ins': + description: The Bugzilla component which applies to this object. +'Core :: Preferences: Backend': + description: The Bugzilla component which applies to this object. +'Core :: Printing: Output': + description: The Bugzilla component which applies to this object. +'Core :: Privacy: Anti-Tracking': + description: The Bugzilla component which applies to this object. +'Core :: SVG': + description: The Bugzilla component which applies to this object. +'Core :: Security': + description: The Bugzilla component which applies to this object. +'Core :: Security: CAPS': + description: The Bugzilla component which applies to this object. +'Core :: Security: PSM': + description: The Bugzilla component which applies to this object. +'Core :: Security: Process Sandboxing': + description: The Bugzilla component which applies to this object. +'Core :: Spelling checker': + description: The Bugzilla component which applies to this object. +'Core :: Storage: Cache API': + description: The Bugzilla component which applies to this object. +'Core :: Storage: IndexedDB': + description: The Bugzilla component which applies to this object. +'Core :: Storage: Quota Manager': + description: The Bugzilla component which applies to this object. +'Core :: Storage: localStorage & sessionStorage': + description: The Bugzilla component which applies to this object. +'Core :: String': + description: The Bugzilla component which applies to this object. +'Core :: Web Audio': + description: The Bugzilla component which applies to this object. +'Core :: Web Painting': + description: The Bugzilla component which applies to this object. +'Core :: Web Speech': + description: The Bugzilla component which applies to this object. +'Core :: WebRTC': + description: The Bugzilla component which applies to this object. +'Core :: WebRTC: Audio/Video': + description: The Bugzilla component which applies to this object. +'Core :: WebRTC: Signaling': + description: The Bugzilla component which applies to this object. +'Core :: WebVR': + description: The Bugzilla component which applies to this object. +'Core :: Widget': + description: The Bugzilla component which applies to this object. +'Core :: Widget: Cocoa': + description: The Bugzilla component which applies to this object. +'Core :: Window Management': + description: The Bugzilla component which applies to this object. +'Core :: XML': + description: The Bugzilla component which applies to this object. +'Core :: XPCOM': + description: The Bugzilla component which applies to this object. +'Core :: XPConnect': + description: The Bugzilla component which applies to this object. +'Core :: XSLT': + description: The Bugzilla component which applies to this object. +'Core :: XUL': + description: The Bugzilla component which applies to this object. +'Core :: mozglue': + description: The Bugzilla component which applies to this object. +'DevTools :: Accessibility Tools': + description: The Bugzilla component which applies to this object. +'DevTools :: Console': + description: The Bugzilla component which applies to this object. +'DevTools :: Debugger': + description: The Bugzilla component which applies to this object. +'DevTools :: General': + description: The Bugzilla component which applies to this object. +'DevTools :: Inspector': + description: The Bugzilla component which applies to this object. +'DevTools :: Inspector: Animations': + description: The Bugzilla component which applies to this object. +'DevTools :: Inspector: Compatibility': + description: The Bugzilla component which applies to this object. +'DevTools :: Inspector: Rules': + description: The Bugzilla component which applies to this object. +'DevTools :: Memory': + description: The Bugzilla component which applies to this object. +'DevTools :: Performance Tools (Profiler/Timeline)': + description: The Bugzilla component which applies to this object. +'DevTools :: Storage Inspector': + description: The Bugzilla component which applies to this object. +'DevTools :: Style Editor': + description: The Bugzilla component which applies to this object. +'Firefox :: Bookmarks & History': + description: The Bugzilla component which applies to this object. +'Firefox :: Enterprise Policies': + description: The Bugzilla component which applies to this object. +'Firefox :: File Handling': + description: The Bugzilla component which applies to this object. +'Firefox :: Firefox Accounts': + description: The Bugzilla component which applies to this object. +'Firefox :: General': + description: The Bugzilla component which applies to this object. +'Firefox :: Headless': + description: The Bugzilla component which applies to this object. +'Firefox :: Keyboard Navigation': + description: The Bugzilla component which applies to this object. +'Firefox :: Menus': + description: The Bugzilla component which applies to this object. +'Firefox :: Migration': + description: The Bugzilla component which applies to this object. +'Firefox :: New Tab Page': + description: The Bugzilla component which applies to this object. +'Firefox :: Nimbus Desktop Client': + description: The Bugzilla component which applies to this object. +'Firefox :: PDF Viewer': + description: The Bugzilla component which applies to this object. +'Firefox :: Private Browsing': + description: The Bugzilla component which applies to this object. +'Firefox :: Remote Settings Client': + description: The Bugzilla component which applies to this object. +'Firefox :: Search': + description: The Bugzilla component which applies to this object. +'Firefox :: Security': + description: The Bugzilla component which applies to this object. +'Firefox :: Services Automation': + description: The Bugzilla component which applies to this object. +'Firefox :: Session Restore': + description: The Bugzilla component which applies to this object. +'Firefox :: Site Permissions': + description: The Bugzilla component which applies to this object. +'Firefox :: Sync': + description: The Bugzilla component which applies to this object. +'Firefox :: Tabbed Browser': + description: The Bugzilla component which applies to this object. +'Firefox :: Toolbars and Customization': + description: The Bugzilla component which applies to this object. +'Firefox Build System :: Bootstrap Configuration': + description: The Bugzilla component which applies to this object. +'Firefox Build System :: General': + description: The Bugzilla component which applies to this object. +'Firefox Build System :: Generated Documentation': + description: The Bugzilla component which applies to this object. +'Firefox Build System :: Lint and Formatting': + description: The Bugzilla component which applies to this object. +'Firefox Build System :: Linting and Formatting': + description: The Bugzilla component which applies to this object. +'Firefox Build System :: Mach Core': + description: The Bugzilla component which applies to this object. +'Firefox Build System :: Source Code Analysis': + description: The Bugzilla component which applies to this object. +'Firefox Build System :: Task Configuration': + description: The Bugzilla component which applies to this object. +'Firefox Build System :: Try': + description: The Bugzilla component which applies to this object. +'GeckoView :: General': + description: The Bugzilla component which applies to this object. +'Localization Infrastructure and Tools :: Fluent Migration': + description: The Bugzilla component which applies to this object. +'Localization Infrastructure and Tools :: General': + description: The Bugzilla component which applies to this object. +'Localization Infrastructure and Tools :: compare-locales': + description: The Bugzilla component which applies to this object. +'NSPR :: NSPR': + description: The Bugzilla component which applies to this object. +'Release Engineering :: General': + description: The Bugzilla component which applies to this object. +'Release Engineering :: Release Automation: Updates': + description: The Bugzilla component which applies to this object. +'Taskcluster :: General': + description: The Bugzilla component which applies to this object. +'Taskcluster :: Platform Libraries': + description: The Bugzilla component which applies to this object. +'Testing :: CPPUnitTest': + description: The Bugzilla component which applies to this object. +'Testing :: Code Coverage': + description: The Bugzilla component which applies to this object. +'Testing :: GTest': + description: The Bugzilla component which applies to this object. +'Testing :: General': + description: The Bugzilla component which applies to this object. +'Testing :: Mozbase': + description: The Bugzilla component which applies to this object. +'Testing :: Mozbase Rust': + description: The Bugzilla component which applies to this object. +'Testing :: Python Test': + description: The Bugzilla component which applies to this object. +'Testing :: Reftest': + description: The Bugzilla component which applies to this object. +'Testing :: mozperftest': + description: The Bugzilla component which applies to this object. +'Toolkit :: Add-ons Manager': + description: The Bugzilla component which applies to this object. +'Toolkit :: Application Update': + description: The Bugzilla component which applies to this object. +'Toolkit :: Async Tooling': + description: The Bugzilla component which applies to this object. +'Toolkit :: Autocomplete': + description: The Bugzilla component which applies to this object. +'Toolkit :: Blocklist Implementation': + description: The Bugzilla component which applies to this object. +'Toolkit :: Crash Reporting': + description: The Bugzilla component which applies to this object. +'Toolkit :: Data Sanitization': + description: The Bugzilla component which applies to this object. +'Toolkit :: Downloads API': + description: The Bugzilla component which applies to this object. +'Toolkit :: FeatureGate': + description: The Bugzilla component which applies to this object. +'Toolkit :: Find Toolbar': + description: The Bugzilla component which applies to this object. +'Toolkit :: Form Autofill': + description: The Bugzilla component which applies to this object. +'Toolkit :: Form Manager': + description: The Bugzilla component which applies to this object. +'Toolkit :: General': + description: The Bugzilla component which applies to this object. +'Toolkit :: NSIS Installer': + description: The Bugzilla component which applies to this object. +'Toolkit :: Notifications and Alerts': + description: The Bugzilla component which applies to this object. +'Toolkit :: OS.File': + description: The Bugzilla component which applies to this object. +'Toolkit :: Password Manager': + description: The Bugzilla component which applies to this object. +'Toolkit :: Performance Monitoring': + description: The Bugzilla component which applies to this object. +'Toolkit :: Picture-in-Picture': + description: The Bugzilla component which applies to this object. +'Toolkit :: Places': + description: The Bugzilla component which applies to this object. +'Toolkit :: Preferences': + description: The Bugzilla component which applies to this object. +'Toolkit :: Printing': + description: The Bugzilla component which applies to this object. +'Toolkit :: Reader Mode': + description: The Bugzilla component which applies to this object. +'Toolkit :: Safe Browsing': + description: The Bugzilla component which applies to this object. +'Toolkit :: Startup and Profile System': + description: The Bugzilla component which applies to this object. +'Toolkit :: Storage': + description: The Bugzilla component which applies to this object. +'Toolkit :: Telemetry': + description: The Bugzilla component which applies to this object. +'Toolkit :: Themes': + description: The Bugzilla component which applies to this object. +'Toolkit :: Video/Audio Controls': + description: The Bugzilla component which applies to this object. +'Toolkit :: View Source': + description: The Bugzilla component which applies to this object. +'Toolkit :: XUL Widgets': + description: The Bugzilla component which applies to this object. +'Toolkit :: about:memory': + description: The Bugzilla component which applies to this object. +'WebExtensions :: General': + description: The Bugzilla component which applies to this object. +'WebExtensions :: Request Handling': + description: The Bugzilla component which applies to this object. +'WebExtensions :: Storage': + description: The Bugzilla component which applies to this object. +'mozilla.org :: Licensing': + description: The Bugzilla component which applies to this object. +'mozilla.org :: MozillaBuild': + description: The Bugzilla component which applies to this object. diff --git a/toolkit/components/glean/tests/pytest/test_no_expired_metrics.py b/toolkit/components/glean/tests/pytest/test_no_expired_metrics.py index 66b53ef71366..737aabdcf09a 100644 --- a/toolkit/components/glean/tests/pytest/test_no_expired_metrics.py +++ b/toolkit/components/glean/tests/pytest/test_no_expired_metrics.py @@ -12,7 +12,7 @@ FOG_ROOT_PATH = path.abspath( path.join(path.dirname(__file__), path.pardir, path.pardir) ) sys.path.append(FOG_ROOT_PATH) -from metrics_index import metrics_yamls +from metrics_index import metrics_yamls, tags_yamls # Shenanigans to import run_glean_parser sys.path.append(path.join(FOG_ROOT_PATH, "build_scripts", "glean_parser_ext")) @@ -35,8 +35,8 @@ def test_no_metrics_expired(): app_version = version_file.read().strip() options = run_glean_parser.get_parser_options(app_version) - metrics_paths = [Path(x) for x in metrics_yamls] - all_objs = parser.parse_objects(metrics_paths, options) + paths = [Path(x) for x in metrics_yamls] + [Path(x) for x in tags_yamls] + all_objs = parser.parse_objects(paths, options) assert not util.report_validation_errors(all_objs) assert not lint.lint_metrics(all_objs.value, options) diff --git a/toolkit/components/processtools/metrics.yaml b/toolkit/components/processtools/metrics.yaml index aad80163b5f8..9a822c912a0c 100644 --- a/toolkit/components/processtools/metrics.yaml +++ b/toolkit/components/processtools/metrics.yaml @@ -17,6 +17,9 @@ power: type: counter description: > Total CPU time used by all processes in ms. + metadata: &metadata + tags: + - "Core :: DOM: Content Processes" bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1736040 data_reviews: @@ -32,6 +35,7 @@ power: type: counter description: > Total GPU time used by all processes in ms. + metadata: *metadata bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1743176 data_reviews: diff --git a/toolkit/mozapps/update/metrics.yaml b/toolkit/mozapps/update/metrics.yaml index bb8b9a39c86a..81f062fabb96 100644 --- a/toolkit/mozapps/update/metrics.yaml +++ b/toolkit/mozapps/update/metrics.yaml @@ -13,6 +13,9 @@ background_update: type: uuid description: > The Telemetry client ID of the default profile. + metadata: &metadata + tags: + - "Toolkit :: Application Update" bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 data_reviews: @@ -30,6 +33,7 @@ background_update: type: string description: > String description of the final state the update state machine reached. + metadata: *metadata bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 data_reviews: @@ -47,6 +51,7 @@ background_update: description: > Ordered list of string descriptions of the states that the update state machine reached. + metadata: *metadata bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 data_reviews: @@ -63,6 +68,7 @@ background_update: type: string_list description: > List of reasons that the background update task did not run. + metadata: *metadata bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 data_reviews: @@ -80,6 +86,7 @@ background_update: description: > True if the exit code/status of the background update task is 0, which means success. + metadata: *metadata bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 data_reviews: @@ -97,6 +104,7 @@ background_update: description: > True if the exit code/status of the background update task is 3, which means an exception was thrown. + metadata: *metadata bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 data_reviews: @@ -115,6 +123,7 @@ update: description: > Preference "app.update.service.enabled": whether the Mozilla Maintenance Service is enabled. + metadata: *metadata lifetime: application bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 @@ -133,6 +142,7 @@ update: description: > Per-installation preference "app.update.auto": whether to fetch and install updates without user intervention. + metadata: *metadata lifetime: application bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 @@ -151,6 +161,7 @@ update: description: > Per-installation preference "app.update.background.enabled": whether to fetch and install updates in the background when Firefox is not running. + metadata: *metadata lifetime: application bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 @@ -169,6 +180,7 @@ update: description: > True when policies are disabled or when the "DisableAppUpdate" is not in effect. + metadata: *metadata lifetime: application bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 @@ -186,6 +198,7 @@ update: type: string description: > The update channel. + metadata: *metadata lifetime: application bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 @@ -206,6 +219,7 @@ update: updates. See `canUsuallyApplyUpdates` in https://searchfox.org/mozilla-central/source/toolkit/mozapps/update/nsIUpdateService.idl. + metadata: *metadata lifetime: application bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 @@ -225,6 +239,7 @@ update: Whether or not the Update Service can usually check for updates. See `canUsuallyCheckForUpdates` in https://searchfox.org/mozilla-central/source/toolkit/mozapps/update/nsIUpdateService.idl. + metadata: *metadata lifetime: application bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 @@ -244,6 +259,7 @@ update: Whether the Update Service is usually able to stage updates. See `canUsuallyStageUpdates` in https://searchfox.org/mozilla-central/source/toolkit/mozapps/update/nsIUpdateService.idl. + metadata: *metadata lifetime: application bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 @@ -263,6 +279,7 @@ update: On Windows, whether the Update Service can usually use BITS. See `canUsuallyUseBits` in https://searchfox.org/mozilla-central/source/toolkit/mozapps/update/nsIUpdateService.idl. + metadata: *metadata lifetime: application bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 diff --git a/toolkit/xre/metrics.yaml b/toolkit/xre/metrics.yaml index 342150d5d722..31207f793a38 100644 --- a/toolkit/xre/metrics.yaml +++ b/toolkit/xre/metrics.yaml @@ -23,6 +23,9 @@ startup: description: > The outcome after the app detected that it was running from DMG and should offer to install and relaunch itself. + metadata: &metadata + tags: + - "Toolkit :: Startup and Profile System" bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1743328 data_reviews: