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

View File

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

View File

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

View File

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

View File

@ -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":

View File

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

View File

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

View File

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

View File

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

View File

@ -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",
]

View File

@ -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 += [

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)
)
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)

View File

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

View File

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

View File

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