Debug Tagging and QA Support for Project FOG
Categories
(Toolkit :: Telemetry, task, P1)
Tracking
()
Tracking | Status | |
---|---|---|
firefox81 | --- | fixed |
People
(Reporter: chutten, Assigned: chutten)
References
Details
(Whiteboard: [telemetry:fog:m4])
Attachments
(5 files)
How may we best serve QA needs with FOG? At the very least we want to be able to avail ourselves of the Debug Ping Viewer, and to do that we'll need to be able to tag pings and trigger them.
- How will we do that?
- Command-line?
about:telemetry
?about:glean
?
- Command-line?
- Will tagging be enough?
- Will embedding an iframe of the debug ping viewer be helpful? How will we know it's address?
- Will we need to support pointing the ping server at
localhost:NNNN
? How will we know the port? - What else can we help with?
- What holes are there in FOG's present test setup?
- Can we add Gecko symbols to rusttests via an appropriately-worded
build.rs
? And if so, do we have to keep updating it every time we add more symbols? - What does this mean for the parts of FOG that will be generating JS and C++ code? The parts that are JS and C++ code? (if there will be such parts)
- Can we add Gecko symbols to rusttests via an appropriately-worded
- Don't forget to add all this to the in-tree documentation.
We must consult with QA (:raphael's an excellent choice) about some or most or all of these questions, propose a design, get it approved, implement the design, and document the design.
Maybe this is a metabug.
Assignee | ||
Comment 1•5 years ago
|
||
The present Glean SDK Debugging use cases can best be seen in the Glean SDK book here. In short, there are two pieces of state (the ping tag and whether we log pings) and one command (to send a named ping). All pings being assembled and sent adhere to the two pieces of state that are current at the time of assembly and sending. The pieces of state can be set during runtime or (ping tag only) before launch (via envvar, see bug 1646706).
So to bring us up to parity with other platforms, FOG needs to provide a mechanism to, at runtime, set the two pieces of state (the ping tag and whether we log pings) and to assemble and send a named ping. I think the most ergonomic way for FOG would be through an about:glean
that could take these actions from query parameters in the url, a la
about:glean?tagPings=my-debug-tag
about:glean?logPings=true
-- note that this just turns logging on. If the log level (MOZ_LOG
orRUST_LOG
) forglean_core
(glean_core::*
forMOZ_LOG
) isn't also set to at leastDEBUG
(3
) then the pings won't log.about:glean?sendPing=baseline
In addition we'll support multiple simultaneous commands, running the tagging first, the logging second, and the sending third:
about:glean?sendPing=baseline&tagPings=my-debug-tag&logPings=true
will tag all pings withmy-debug-tag
, then turn on logging, then assemble and send the "baseline" ping (which will be tagged and logged).
:raphael, how does this sound in terms of bringing capabilities even with other Glean products? Can you think of any FOG-specific capabilities this might miss? (if not just now, no worries, we have another test checkin already planned for a future milestone)
Assignee | ||
Updated•5 years ago
|
Comment 2•5 years ago
|
||
Hi chutten, as we've discussed on Zoom using environment variables for setting ping tags sounds very reasonable to me. I also think it makes sense to use about:glean
to change the Glean SDK debugging state at runtime. I discussed this with Krupa and asked her for feedback on the proposed design.
Assignee | ||
Comment 3•5 years ago
|
||
Included documentation, but no tests, as it doesn't yet actually control the
Glean SDK.
Assignee | ||
Comment 4•5 years ago
|
||
The Glean SDK was recently updated to centralize debug tagging support.
We're gonna need that.
Depends on D83977
Assignee | ||
Comment 5•5 years ago
|
||
Depends on D83978
Assignee | ||
Comment 6•5 years ago
|
||
Depends on D83979
Assignee | ||
Comment 7•5 years ago
|
||
Depends on D83980
Assignee | ||
Comment 8•5 years ago
|
||
Input from the #security:mozilla.org channel on Element suggests that UI is better than query strings for chrome-privileged pages. The attack surface that allows folks to trick the browser or the user to navigate to about:glean?speciallyCraftedQueryStringThatGivesAttackersControlSomehow
is broader than the attack surface provided by some form controls in HTML.
I propose to change the design to have three inputs: a checkmark for logPings
, a text input for tagPings
, and a text input for submitPing
. And a button. This should serve the needs of manual verification of data collection. For automated verification I assume that automation has access to execute chrome-privileged script, in which case they can call nsIAboutGlean
methods directly.
ni?raphael, would this design still work for your use cases?
Comment 9•5 years ago
|
||
(In reply to Chris H-C :chutten from comment #8)
I propose to change the design to have three inputs: a checkmark for
logPings
, a text input fortagPings
, and a text input forsubmitPing
. And a button. This should serve the needs of manual verification of data collection. For automated verification I assume that automation has access to execute chrome-privileged script, in which case they can callnsIAboutGlean
methods directly.
Fly-by note: Glean also supports environment variables :-)
Assignee | ||
Comment 10•5 years ago
|
||
(In reply to Alessio Placitelli [:Dexter] from comment #9)
(In reply to Chris H-C :chutten from comment #8)
I propose to change the design to have three inputs: a checkmark for
logPings
, a text input fortagPings
, and a text input forsubmitPing
. And a button. This should serve the needs of manual verification of data collection. For automated verification I assume that automation has access to execute chrome-privileged script, in which case they can callnsIAboutGlean
methods directly.Fly-by note: Glean also supports environment variables :-)
Yes, but the environment variables don't let you submit pings : )
Comment 11•5 years ago
|
||
(In reply to Chris H-C :chutten from comment #8)
ni?raphael, would this design still work for your use cases?
Sounds good to me!
Comment 12•5 years ago
|
||
![]() |
||
Comment 13•5 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/173120b52295
https://hg.mozilla.org/mozilla-central/rev/f80c57cc4abc
https://hg.mozilla.org/mozilla-central/rev/7a669b03b0ec
https://hg.mozilla.org/mozilla-central/rev/4cd9c888d01b
https://hg.mozilla.org/mozilla-central/rev/d3679cfb5b68
Comment 14•5 years ago
|
||
Raphael and I discussed this. The Telemetry tests that are done (excluding experiments) by softvision are listed below:
Assignee | ||
Comment 15•5 years ago
|
||
Sounds like the Pioneer one we ought to be able to adapt to an about:glean-based (with Debug Ping Viewer) verification mechanism after Pioneer migrates to Glean (in 2021). So we're clear with the implementation, no follow-ups to file (yet).
Description
•