Bug 1746941 - Add tags to all Firefox-on-Glean metrics r=janerik

Based on our experience with Firefox for Android, annotating Glean metrics
with issue tracker component information can provide valuable context to
anyone searching for metrics.

This adds a new set of tags corresponding to the components in the
tree, annotates the existing Glean metrics. Finally, it also adds a new
mach command called `update-glean-tags` to update the tags files based
on build metadata.

Differential Revision: https://phabricator.services.mozilla.com/D134332
This commit is contained in:
William Lachance 2022-01-14 18:11:08 +00:00
parent 60637708f9
commit af8f04a00d
16 changed files with 557 additions and 27 deletions

View file

@ -20,6 +20,9 @@ browser.engagement:
the foreground, only if it is receiving these interaction events. the foreground, only if it is receiving these interaction events.
Migrated from Telemetry's `browser.engagement.active_ticks`. Migrated from Telemetry's `browser.engagement.active_ticks`.
metadata: &metadata
tags:
- "Firefox :: General"
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1376942 # Telemetry - https://bugzilla.mozilla.org/show_bug.cgi?id=1376942 # Telemetry
- https://bugzilla.mozilla.org/show_bug.cgi?id=1545172 # Telemetry - https://bugzilla.mozilla.org/show_bug.cgi?id=1545172 # Telemetry
@ -46,6 +49,7 @@ browser.engagement:
Migrated from Telemetry's Migrated from Telemetry's
`browser.engagement.total_uri_count_normal_and_private_mode`. `browser.engagement.total_uri_count_normal_and_private_mode`.
metadata: *metadata
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1535169 # Telemetry - https://bugzilla.mozilla.org/show_bug.cgi?id=1535169 # Telemetry
- https://bugzilla.mozilla.org/show_bug.cgi?id=1741674 - https://bugzilla.mozilla.org/show_bug.cgi?id=1741674

View file

@ -17,6 +17,9 @@ paint:
type: timing_distribution type: timing_distribution
description: > description: >
The time to build a Gecko display list. The time to build a Gecko display list.
metadata: &metadata
tags:
- "Core :: Graphics"
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1728423 - https://bugzilla.mozilla.org/show_bug.cgi?id=1728423
data_reviews: data_reviews:

View file

@ -11,7 +11,7 @@ Outputter to generate C++ code for metrics.
import jinja2 import jinja2
import json 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 from glean_parser import util
@ -111,10 +111,13 @@ def output_cpp(objs, output_fd, options={}):
get_metric_id = generate_metric_ids(objs) get_metric_id = generate_metric_ids(objs)
get_ping_id = generate_ping_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" template_filename = "cpp_pings.jinja2"
if objs.get("tags"):
del objs["tags"]
else: else:
template_filename = "cpp.jinja2" template_filename = "cpp.jinja2"
objs = get_metrics(objs)
template = util.get_jinja2_template( template = util.get_jinja2_template(
template_filename, template_filename,

View file

@ -17,7 +17,7 @@ import jinja2
from perfecthash import PerfectHash from perfecthash import PerfectHash
from string_table import StringTable 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 from glean_parser import util
""" """
@ -118,10 +118,10 @@ def output_js(objs, output_fd, options={}):
util.get_jinja2_template = get_local_template util.get_jinja2_template = get_local_template
if len(objs) == 1 and "pings" in objs: if "pings" in objs:
write_pings(objs, output_fd, "js_pings.jinja2") write_pings({"pings": objs["pings"]}, output_fd, "js_pings.jinja2")
else: 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): 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 # Mapping from a type name to its ID
metric_type_ids = {} 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) category_name = util.camelize(category_name)
id = category_string_table.stringIndex(category_name) id = category_string_table.stringIndex(category_name)
categories.append((category_name, id)) categories.append((category_name, id))

View file

@ -99,7 +99,9 @@ def parse_with_options(input_files, options):
# bug 1720494: This should be a simple call to translate.transform # bug 1720494: This should be a simple call to translate.transform
counters = {} counters = {}
numerators_by_denominator: Dict[str, Any] = {} 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(): for metric in category_val.values():
fqmn = metric.identifier() fqmn = metric.identifier()
if getattr(metric, "type", None) == "counter": if getattr(metric, "type", None) == "counter":

View file

@ -13,7 +13,7 @@ import json
import jinja2 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 import util
from glean_parser.metrics import Rate from glean_parser.metrics import Rate
@ -205,14 +205,14 @@ def output_rust(objs, output_fd, options={}):
# 17 -> "test_only::an_event" # 17 -> "test_only::an_event"
events_by_id = {} events_by_id = {}
if len(objs) == 1 and "pings" in objs: if "pings" in objs:
template_filename = "rust_pings.jinja2" template_filename = "rust_pings.jinja2"
objs = {"pings": objs["pings"]}
else: else:
template_filename = "rust.jinja2" template_filename = "rust.jinja2"
objs = get_metrics(objs)
for category_name, metrics in objs.items(): for category_name, category_value in objs.items():
for metric in metrics.values(): for metric in category_value.values():
# The constant is all uppercase and suffixed by `_MAP` # The constant is all uppercase and suffixed by `_MAP`
const_name = util.snake_case(metric.type).upper() + "_MAP" const_name = util.snake_case(metric.type).upper() + "_MAP"
typ = type_name(metric) typ = type_name(metric)

View file

@ -5,8 +5,9 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/. # 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): def generate_ping_ids(objs):
@ -52,3 +53,14 @@ def generate_metric_ids(objs):
metric_id += 1 metric_id += 1
return lambda metric: metric_id_mapping[(metric.category, metric.name)] 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

View file

@ -4,6 +4,16 @@
from mach.decorators import Command, CommandArgument 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( @Command(
"data-review", "data-review",
@ -28,3 +38,38 @@ def data_review(command_context, bug=None):
return data_review.generate( return data_review.generate(
bug, [Path(command_context.topsrcdir) / x for x in metrics_yamls] 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)
)

View file

@ -19,6 +19,9 @@ fog:
time_unit: nanosecond time_unit: nanosecond
description: | description: |
Time the FOG initialization takes. Time the FOG initialization takes.
metadata: &metadata
tags:
- "Toolkit :: Telemetry"
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1662123 - https://bugzilla.mozilla.org/show_bug.cgi?id=1662123
data_reviews: data_reviews:
@ -37,6 +40,7 @@ fog:
True if we failed to register with the idle service. Absent otherwise. True if we failed to register with the idle service. Absent otherwise.
Means IPC probably isn't working well. Means IPC probably isn't working well.
Child-process data will likely be absent, or incomplete. Child-process data will likely be absent, or incomplete.
metadata: *metadata
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1694739 - https://bugzilla.mozilla.org/show_bug.cgi?id=1694739
data_reviews: data_reviews:
@ -54,6 +58,7 @@ fog.ipc:
description: | description: |
The number of times the ipc buffer failed to be replayed in the The number of times the ipc buffer failed to be replayed in the
parent process. parent process.
metadata: *metadata
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1664461 - https://bugzilla.mozilla.org/show_bug.cgi?id=1664461
data_reviews: data_reviews:
@ -70,6 +75,7 @@ fog.ipc:
memory_unit: byte memory_unit: byte
description: | description: |
The number and size of the IPC buffers being received over FOG IPC. The number and size of the IPC buffers being received over FOG IPC.
metadata: *metadata
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1694739 - https://bugzilla.mozilla.org/show_bug.cgi?id=1694739
data_reviews: data_reviews:
@ -87,6 +93,7 @@ fog.ipc:
description: | description: |
The length of time between asking the child processes for their The length of time between asking the child processes for their
IPC buffers and all of them being received by the parent. IPC buffers and all of them being received by the parent.
metadata: *metadata
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1694739 - https://bugzilla.mozilla.org/show_bug.cgi?id=1694739
data_reviews: data_reviews:
@ -105,6 +112,7 @@ fog.ipc:
throwing even partial results into the trash. throwing even partial results into the trash.
If this number is high, we might consider writing custom `MozPromise`- If this number is high, we might consider writing custom `MozPromise`-
handling code instead of using `MozPromise::All`. handling code instead of using `MozPromise::All`.
metadata: *metadata
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1729026 - https://bugzilla.mozilla.org/show_bug.cgi?id=1729026
data_reviews: data_reviews:

View file

@ -30,3 +30,10 @@ pings_yamls = [
"toolkit/components/glean/tests/test_pings.yaml", "toolkit/components/glean/tests/test_pings.yaml",
"toolkit/mozapps/update/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",
]

View file

@ -94,6 +94,7 @@ include("metrics_index.py")
# The yamls arrays are relative to topsrcdir, so we need to transform: # The yamls arrays are relative to topsrcdir, so we need to transform:
metrics_yamls = ["../../../" + x for x in metrics_yamls] metrics_yamls = ["../../../" + x for x in metrics_yamls]
pings_yamls = ["../../../" + x for x in pings_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 # If you change the length of this deps list, update DEPS_LEN in run_glean_parser.py
deps = [ deps = [
"metrics_index.py", "metrics_index.py",
@ -117,7 +118,7 @@ GeneratedFile(
"api/src/metrics.rs", "api/src/metrics.rs",
script="build_scripts/glean_parser_ext/run_glean_parser.py", script="build_scripts/glean_parser_ext/run_glean_parser.py",
flags=[CONFIG["MOZ_APP_VERSION"]], flags=[CONFIG["MOZ_APP_VERSION"]],
inputs=deps + metrics_yamls, inputs=deps + metrics_yamls + tags_yamls,
) )
GeneratedFile( GeneratedFile(
@ -125,7 +126,7 @@ GeneratedFile(
script="build_scripts/glean_parser_ext/run_glean_parser.py", script="build_scripts/glean_parser_ext/run_glean_parser.py",
entry_point="cpp_metrics", entry_point="cpp_metrics",
flags=[CONFIG["MOZ_APP_VERSION"]], flags=[CONFIG["MOZ_APP_VERSION"]],
inputs=deps + metrics_yamls, inputs=deps + metrics_yamls + tags_yamls,
) )
GeneratedFile( GeneratedFile(
@ -133,14 +134,14 @@ GeneratedFile(
script="build_scripts/glean_parser_ext/run_glean_parser.py", script="build_scripts/glean_parser_ext/run_glean_parser.py",
entry_point="js_metrics", entry_point="js_metrics",
flags=[CONFIG["MOZ_APP_VERSION"]], flags=[CONFIG["MOZ_APP_VERSION"]],
inputs=deps + metrics_yamls, inputs=deps + metrics_yamls + tags_yamls,
) )
GeneratedFile( GeneratedFile(
"api/src/pings.rs", "api/src/pings.rs",
script="build_scripts/glean_parser_ext/run_glean_parser.py", script="build_scripts/glean_parser_ext/run_glean_parser.py",
flags=[CONFIG["MOZ_APP_VERSION"]], flags=[CONFIG["MOZ_APP_VERSION"]],
inputs=deps + pings_yamls, inputs=deps + pings_yamls + tags_yamls,
) )
GeneratedFile( GeneratedFile(
@ -148,7 +149,7 @@ GeneratedFile(
script="build_scripts/glean_parser_ext/run_glean_parser.py", script="build_scripts/glean_parser_ext/run_glean_parser.py",
entry_point="cpp_metrics", entry_point="cpp_metrics",
flags=[CONFIG["MOZ_APP_VERSION"]], flags=[CONFIG["MOZ_APP_VERSION"]],
inputs=deps + pings_yamls, inputs=deps + pings_yamls + tags_yamls,
) )
GeneratedFile( GeneratedFile(
@ -156,7 +157,7 @@ GeneratedFile(
script="build_scripts/glean_parser_ext/run_glean_parser.py", script="build_scripts/glean_parser_ext/run_glean_parser.py",
entry_point="js_metrics", entry_point="js_metrics",
flags=[CONFIG["MOZ_APP_VERSION"]], 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 # 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", script="build_scripts/glean_parser_ext/run_glean_parser.py",
entry_point="gifft_map", entry_point="gifft_map",
flags=[CONFIG["MOZ_APP_VERSION"], "Event"], flags=[CONFIG["MOZ_APP_VERSION"], "Event"],
inputs=deps + metrics_yamls, inputs=deps + metrics_yamls + tags_yamls,
) )
GeneratedFile( GeneratedFile(
@ -174,7 +175,7 @@ GeneratedFile(
script="build_scripts/glean_parser_ext/run_glean_parser.py", script="build_scripts/glean_parser_ext/run_glean_parser.py",
entry_point="gifft_map", entry_point="gifft_map",
flags=[CONFIG["MOZ_APP_VERSION"], "Histogram"], flags=[CONFIG["MOZ_APP_VERSION"], "Histogram"],
inputs=deps + metrics_yamls, inputs=deps + metrics_yamls + tags_yamls,
) )
GeneratedFile( GeneratedFile(
@ -182,7 +183,7 @@ GeneratedFile(
script="build_scripts/glean_parser_ext/run_glean_parser.py", script="build_scripts/glean_parser_ext/run_glean_parser.py",
entry_point="gifft_map", entry_point="gifft_map",
flags=[CONFIG["MOZ_APP_VERSION"], "Scalar"], flags=[CONFIG["MOZ_APP_VERSION"], "Scalar"],
inputs=deps + metrics_yamls, inputs=deps + metrics_yamls + tags_yamls,
) )
DIRS += [ DIRS += [

View file

@ -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.

View file

@ -12,7 +12,7 @@ FOG_ROOT_PATH = path.abspath(
path.join(path.dirname(__file__), path.pardir, path.pardir) path.join(path.dirname(__file__), path.pardir, path.pardir)
) )
sys.path.append(FOG_ROOT_PATH) 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 # Shenanigans to import run_glean_parser
sys.path.append(path.join(FOG_ROOT_PATH, "build_scripts", "glean_parser_ext")) 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() app_version = version_file.read().strip()
options = run_glean_parser.get_parser_options(app_version) options = run_glean_parser.get_parser_options(app_version)
metrics_paths = [Path(x) for x in metrics_yamls] paths = [Path(x) for x in metrics_yamls] + [Path(x) for x in tags_yamls]
all_objs = parser.parse_objects(metrics_paths, options) all_objs = parser.parse_objects(paths, options)
assert not util.report_validation_errors(all_objs) assert not util.report_validation_errors(all_objs)
assert not lint.lint_metrics(all_objs.value, options) assert not lint.lint_metrics(all_objs.value, options)

View file

@ -17,6 +17,9 @@ power:
type: counter type: counter
description: > description: >
Total CPU time used by all processes in ms. Total CPU time used by all processes in ms.
metadata: &metadata
tags:
- "Core :: DOM: Content Processes"
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1736040 - https://bugzilla.mozilla.org/show_bug.cgi?id=1736040
data_reviews: data_reviews:
@ -32,6 +35,7 @@ power:
type: counter type: counter
description: > description: >
Total GPU time used by all processes in ms. Total GPU time used by all processes in ms.
metadata: *metadata
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1743176 - https://bugzilla.mozilla.org/show_bug.cgi?id=1743176
data_reviews: data_reviews:

View file

@ -13,6 +13,9 @@ background_update:
type: uuid type: uuid
description: > description: >
The Telemetry client ID of the default profile. The Telemetry client ID of the default profile.
metadata: &metadata
tags:
- "Toolkit :: Application Update"
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318
data_reviews: data_reviews:
@ -30,6 +33,7 @@ background_update:
type: string type: string
description: > description: >
String description of the final state the update state machine reached. String description of the final state the update state machine reached.
metadata: *metadata
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318
data_reviews: data_reviews:
@ -47,6 +51,7 @@ background_update:
description: > description: >
Ordered list of string descriptions of the states that the update state Ordered list of string descriptions of the states that the update state
machine reached. machine reached.
metadata: *metadata
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318
data_reviews: data_reviews:
@ -63,6 +68,7 @@ background_update:
type: string_list type: string_list
description: > description: >
List of reasons that the background update task did not run. List of reasons that the background update task did not run.
metadata: *metadata
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318
data_reviews: data_reviews:
@ -80,6 +86,7 @@ background_update:
description: > description: >
True if the exit code/status of the background update task is 0, which True if the exit code/status of the background update task is 0, which
means success. means success.
metadata: *metadata
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318
data_reviews: data_reviews:
@ -97,6 +104,7 @@ background_update:
description: > description: >
True if the exit code/status of the background update task is 3, which True if the exit code/status of the background update task is 3, which
means an exception was thrown. means an exception was thrown.
metadata: *metadata
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318
data_reviews: data_reviews:
@ -115,6 +123,7 @@ update:
description: > description: >
Preference "app.update.service.enabled": whether the Mozilla Maintenance Preference "app.update.service.enabled": whether the Mozilla Maintenance
Service is enabled. Service is enabled.
metadata: *metadata
lifetime: application lifetime: application
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318
@ -133,6 +142,7 @@ update:
description: > description: >
Per-installation preference "app.update.auto": whether to fetch and Per-installation preference "app.update.auto": whether to fetch and
install updates without user intervention. install updates without user intervention.
metadata: *metadata
lifetime: application lifetime: application
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318
@ -151,6 +161,7 @@ update:
description: > description: >
Per-installation preference "app.update.background.enabled": whether to Per-installation preference "app.update.background.enabled": whether to
fetch and install updates in the background when Firefox is not running. fetch and install updates in the background when Firefox is not running.
metadata: *metadata
lifetime: application lifetime: application
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318
@ -169,6 +180,7 @@ update:
description: > description: >
True when policies are disabled or when the "DisableAppUpdate" is not in True when policies are disabled or when the "DisableAppUpdate" is not in
effect. effect.
metadata: *metadata
lifetime: application lifetime: application
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318
@ -186,6 +198,7 @@ update:
type: string type: string
description: > description: >
The update channel. The update channel.
metadata: *metadata
lifetime: application lifetime: application
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318
@ -206,6 +219,7 @@ update:
updates. updates.
See `canUsuallyApplyUpdates` in See `canUsuallyApplyUpdates` in
https://searchfox.org/mozilla-central/source/toolkit/mozapps/update/nsIUpdateService.idl. https://searchfox.org/mozilla-central/source/toolkit/mozapps/update/nsIUpdateService.idl.
metadata: *metadata
lifetime: application lifetime: application
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 - 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. Whether or not the Update Service can usually check for updates.
See `canUsuallyCheckForUpdates` in See `canUsuallyCheckForUpdates` in
https://searchfox.org/mozilla-central/source/toolkit/mozapps/update/nsIUpdateService.idl. https://searchfox.org/mozilla-central/source/toolkit/mozapps/update/nsIUpdateService.idl.
metadata: *metadata
lifetime: application lifetime: application
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318
@ -244,6 +259,7 @@ update:
Whether the Update Service is usually able to stage updates. Whether the Update Service is usually able to stage updates.
See `canUsuallyStageUpdates` in See `canUsuallyStageUpdates` in
https://searchfox.org/mozilla-central/source/toolkit/mozapps/update/nsIUpdateService.idl. https://searchfox.org/mozilla-central/source/toolkit/mozapps/update/nsIUpdateService.idl.
metadata: *metadata
lifetime: application lifetime: application
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318
@ -263,6 +279,7 @@ update:
On Windows, whether the Update Service can usually use BITS. On Windows, whether the Update Service can usually use BITS.
See `canUsuallyUseBits` in See `canUsuallyUseBits` in
https://searchfox.org/mozilla-central/source/toolkit/mozapps/update/nsIUpdateService.idl. https://searchfox.org/mozilla-central/source/toolkit/mozapps/update/nsIUpdateService.idl.
metadata: *metadata
lifetime: application lifetime: application
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1703318 - https://bugzilla.mozilla.org/show_bug.cgi?id=1703318

View file

@ -23,6 +23,9 @@ startup:
description: > description: >
The outcome after the app detected that it was running from DMG and The outcome after the app detected that it was running from DMG and
should offer to install and relaunch itself. should offer to install and relaunch itself.
metadata: &metadata
tags:
- "Toolkit :: Startup and Profile System"
bugs: bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1743328 - https://bugzilla.mozilla.org/show_bug.cgi?id=1743328
data_reviews: data_reviews: