QA/Desktop Firefox/Firefox Health Report: Difference between revisions
| Line 29: | Line 29: | ||
* {{done|}} Enable/disable reporting | * {{done|}} Enable/disable reporting | ||
* {{done|}} Show report | * {{done|}} Show report | ||
* {{done|}} Verify through dogfooding that FHR does not cause additional jank | |||
==== P1 Bugs ''([https://bugzilla.mozilla.org/buglist.cgi?priority=P1&f1=OP&o3=equals&f0=OP&v3=Metrics%20and%20Firefox%20Health%20Report&columnlist=priority%2Cproduct%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cshort_desc%2Cchangeddate&resolution=---&query_based_on=FHR&o2=substring&f4=CP&query_format=advanced&j1=OR&f3=component&f2=status_whiteboard&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=READY&bug_status=ASSIGNED&list_id=6098436 bugzilla query]'') ==== | ==== P1 Bugs ''([https://bugzilla.mozilla.org/buglist.cgi?priority=P1&f1=OP&o3=equals&f0=OP&v3=Metrics%20and%20Firefox%20Health%20Report&columnlist=priority%2Cproduct%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cshort_desc%2Cchangeddate&resolution=---&query_based_on=FHR&o2=substring&f4=CP&query_format=advanced&j1=OR&f3=component&f2=status_whiteboard&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=READY&bug_status=ASSIGNED&list_id=6098436 bugzilla query]'') ==== | ||
Revision as of 19:34, 25 March 2013
Firefox Health Report
Firefox 21
Functionality
- about:healthreport
- dashboard for valid payloads
- dashboard for broken payloads
- opt-in/out
- jank
FIXED Bug Verifications
- Bugzilla Queries
| ID | Summary | Priority | Status |
|---|---|---|---|
| 827910 | Only report "extension" and "plugin" types for full add-on details | -- | VERIFIED |
| 828546 | Firefox Health Report provider to record Places metrics | -- | VERIFIED |
| 828720 | FHR performance Telemetry | -- | VERIFIED |
| 829953 | about:healthreport resets everytime you close that tab | -- | VERIFIED |
| 830090 | Access key for "Choose What I Share" button in info bar is broken | -- | VERIFIED |
| 833612 | Session restored time being reported as -1 | -- | VERIFIED |
| 843816 | Detect duplicate sessions | -- | VERIFIED |
| 845431 | Send errors in FHR report | -- | RESOLVED |
8 Total; 0 Open (0%); 1 Resolved (12.5%); 7 Verified (87.5%);
Automated Tests
Manual Tests
- [DONE] Load about:healthreport
- [DONE] Show/hide details
- [DONE] Learn more
- [DONE] Enable/disable reporting
- [DONE] Show report
- [DONE] Verify through dogfooding that FHR does not cause additional jank
P1 Bugs (bugzilla query)
| ID | Summary | Priority | Status |
|---|---|---|---|
| 830142 | The Learn More link for FHR doesn't go to a useful page | P1 | VERIFIED |
| 830464 | Obtain Privacy sign-off on all notification bar, pref pane, about:healthreport behavior | P5 | RESOLVED |
| 832547 | FHR user-facing page design | P1 | VERIFIED |
| 840124 | implement postMessage API for remote report | P1 | RESOLVED |
| 842360 | appinfo section is missing from FHR payload | P4 | RESOLVED |
| 849879 | FHR User-Facing Tips for v1 | P1 | RESOLVED |
| 849947 | FHR submission counts vs Blocklist ping | P1 | RESOLVED |
| 852308 | FHR error reporting policy for non-pre-release channels | P1 | RESOLVED |
8 Total; 0 Open (0%); 6 Resolved (75%); 2 Verified (25%);
Interfacing with FHR
With the exception of about:healthreport, everything about the feature is in the background. This makes it somewhat difficult to test and inspect because there is nothing to see.
FHR is attached to the @mozilla.org/datareporting/service;1 XPCOM service, which should always be present and running in Firefox 21 and newer. The FHR-specific functionality is attached to an object on this service:
let reporter = Cc["@mozilla.org/datareporting/service;1"]
.getService(Ci.nsISupports)
.wrappedJSObject
.healthReporter;
However, this property is lazy-loaded after app startup. Currently, we wait 45s on the first profile run and 10s on subsequent profile runs (these numbers may change).
When the healthReporter instance is constructed, it starts a long chain of asynchronous events required to initialize the instance. It opens a SQLite database, loads probes, etc. The construction on first profile run is one of the most expensive operations FHR will perform (it needs to create a DB and populate its schema, etc). It is important that you don't attempt to access any properties or functions on the .healthReporter instance until the promise returned by onInit() has resolved. e.g.
let reporter = Cc["@mozilla.org/datareporting/service;1"].getService(Ci.nsISupports).wrappedJSObject.healthReporter;
reporter.onInit(function onInitialized() { // This is when FHR is finally initialized. });
If you attempt to do anything before onInit() resolves, whatever you were trying to do may fail.
Once the FHR service is initialized, it starts monitoring the world and data is fed into it. All data is stored in a SQLite database, healthreport.sqlite in the profile directory.
Data upload is performed automatically and is scheduled for 24 hour intervals. Data upload will not occur until the user has been presented with a notification of Mozilla's data collection practices and privacy policy. For Firefox, this will manifest as a notification bar *on all windows and all tabs* sometime after the first app run with FHR present and before the first scheduled FHR upload. This is currently 12 hours after process start, although this may change.
Preferences
All preferences for FHR are in the datareporting. branch. This branch has the following sub-branches:
- datareporting.healthreport.
- Where all the FHR-specific preferences live.
- datareporting.policy.
- Preferences containing state for Mozilla's data collection and privacy policies.
- datareporting.sessions.
- Contains a history of previous and current session state. These preferences are periodically migrated to FHR's database.
The following preferences are relevant to testing:
- datareporting.healthreport.lastPingTime
- When we last uploaded a document to the server
- datareporting.healthreport.lastSubmitID
- The ID of the current document on the server
- datareporting.healthreport.logging.consoleLevel
- Level of logging to write to the Error Console. Set to Debug or Trace for lots of additional logging. By default, only errors are recorded.
- datareporting.healthreport.nextDataSubmissionTime
- When the next data submission is scheduled to occur. To trigger a soon'ish data submission, decrement the 3rd from front digit by 1 and wait up to a minute for the upload to be triggered. e.g. 13**6**4059453630 -> 13**5**4059453630.
- datareporting.policy.dataSubmissionPolicyAccepted
- Whether the data submission policy has been accepted. We will not submit data to the server unless this is true.