bug 1470493 - Render "event" ping events in about:telemetry r=janerik

MozReview-Commit-ID: 8U54Cs6obOs

Differential Revision: https://phabricator.services.mozilla.com/D1882

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Chris H-C 2018-07-02 08:55:12 +00:00
parent f53f58d169
commit 9c9f1dff7c
4 changed files with 63 additions and 1 deletions

View File

@ -379,10 +379,19 @@ var PingPicker = {
_updateCurrentPingData() { _updateCurrentPingData() {
const subsession = document.getElementById("show-subsession-data").checked; const subsession = document.getElementById("show-subsession-data").checked;
const ping = TelemetryController.getCurrentPingData(subsession); let ping = TelemetryController.getCurrentPingData(subsession);
if (!ping) { if (!ping) {
return; return;
} }
// augment ping payload with event telemetry
let eventSnapshot = Telemetry.snapshotEvents(Telemetry.DATASET_RELEASE_CHANNEL_OPTIN, false);
for (let process of Object.keys(eventSnapshot)) {
if (process in ping.payload.processes) {
ping.payload.processes[process].events = eventSnapshot[process].filter(e => !e[1].startsWith("telemetry.test"));
}
}
displayPingData(ping, true); displayPingData(ping, true);
}, },
@ -1708,6 +1717,47 @@ var KeyedScalars = {
}, },
}; };
var Events = {
/**
* Render the event data - if present - from the payload in a simple table.
* @param aPayload A payload object to render the data from.
*/
render(aPayload) {
let eventsSection = document.getElementById("events");
removeAllChildNodes(eventsSection);
let processesSelect = document.getElementById("processes");
let selectedProcess = processesSelect.selectedOptions.item(0).getAttribute("value");
if (!aPayload.processes ||
!selectedProcess ||
!(selectedProcess in aPayload.processes)) {
return;
}
let events = aPayload.processes[selectedProcess].events || {};
let hasData = Array.from(processesSelect.options).some((option) => {
let value = option.getAttribute("value");
let evts = aPayload.processes[value].events;
return evts && Object.keys(evts).length > 0;
});
setHasData("events-section", hasData);
if (Object.keys(events).length > 0) {
const headings = [
"timestampHeader",
"categoryHeader",
"methodHeader",
"objectHeader",
"valuesHeader",
"extraHeader",
].map(h => bundle.GetStringFromName(h));
const table = GenericTable.render(events, headings);
eventsSection.appendChild(table);
}
},
};
/** /**
* Helper function for showing either the toggle element or "No data collected" message for a section * Helper function for showing either the toggle element or "No data collected" message for a section
* *
@ -2306,6 +2356,9 @@ function displayRichPingData(ping, updatePayloadList) {
// Show keyed histogram data // Show keyed histogram data
KeyedHistogramSection.render(payload); KeyedHistogramSection.render(payload);
// Show event data.
Events.render(payload);
// Show captured stacks. // Show captured stacks.
CapturedStacks.render(payload); CapturedStacks.render(payload);

View File

@ -57,6 +57,9 @@
<div class="category" value="keyed-histograms-section"> <div class="category" value="keyed-histograms-section">
<span class="category-name">&aboutTelemetry.keyedHistogramsSection;</span> <span class="category-name">&aboutTelemetry.keyedHistogramsSection;</span>
</div> </div>
<div class="category" value="events-section">
<span class="category-name">&aboutTelemetry.eventsSection;</span>
</div>
<div class="category" value="simple-measurements-section"> <div class="category" value="simple-measurements-section">
<span class="category-name">&aboutTelemetry.simpleMeasurementsSection;</span> <span class="category-name">&aboutTelemetry.simpleMeasurementsSection;</span>
</div> </div>

View File

@ -34,6 +34,7 @@
<!ENTITY aboutTelemetry.keyedScalarsSection "Keyed Scalars"> <!ENTITY aboutTelemetry.keyedScalarsSection "Keyed Scalars">
<!ENTITY aboutTelemetry.histogramsSection "Histograms"> <!ENTITY aboutTelemetry.histogramsSection "Histograms">
<!ENTITY aboutTelemetry.keyedHistogramsSection "Keyed Histograms"> <!ENTITY aboutTelemetry.keyedHistogramsSection "Keyed Histograms">
<!ENTITY aboutTelemetry.eventsSection "Events">
<!ENTITY aboutTelemetry.simpleMeasurementsSection "Simple Measurements"> <!ENTITY aboutTelemetry.simpleMeasurementsSection "Simple Measurements">
<!ENTITY aboutTelemetry.slowSqlSection "Slow SQL Statements"> <!ENTITY aboutTelemetry.slowSqlSection "Slow SQL Statements">
<!ENTITY aboutTelemetry.addonDetailsSection "Add-on Details"> <!ENTITY aboutTelemetry.addonDetailsSection "Add-on Details">

View File

@ -94,3 +94,8 @@ memoryMapTitle = Memory map:
errorFetchingSymbols = An error occurred while fetching symbols. Check that you are connected to the Internet and try again. errorFetchingSymbols = An error occurred while fetching symbols. Check that you are connected to the Internet and try again.
timestampHeader = timestamp
categoryHeader = category
methodHeader = method
objectHeader = object
extraHeader = extra