Skip to content

Commit

Permalink
finishing up
Browse files Browse the repository at this point in the history
  • Loading branch information
wwwillchen committed Apr 4, 2017
1 parent c82389c commit 87057c2
Show file tree
Hide file tree
Showing 7 changed files with 221 additions and 259 deletions.
138 changes: 69 additions & 69 deletions lighthouse-core/lib/traces/pwmetrics-events.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
"use strict";
'use strict';

const log = require("../../../lighthouse-core/lib/log.js");
const log = require('../../../lighthouse-core/lib/log.js');

class Metrics {
constructor(traceEvents, auditResults) {
Expand All @@ -31,111 +31,111 @@ class Metrics {
static get metricsDefinitions() {
return [
{
name: "Navigation Start",
id: "navstart",
name: 'Navigation Start',
id: 'navstart',
getTs: auditResults => {
const fmpExt = auditResults["first-meaningful-paint"].extendedInfo;
return safeGet(fmpExt, "value.timestamps.navStart");
const fmpExt = auditResults['first-meaningful-paint'].extendedInfo;
return safeGet(fmpExt, 'value.timestamps.navStart');
},
getTiming: auditResults => {
const fmpExt = auditResults["first-meaningful-paint"].extendedInfo;
return safeGet(fmpExt, "value.timings.navStart");
const fmpExt = auditResults['first-meaningful-paint'].extendedInfo;
return safeGet(fmpExt, 'value.timings.navStart');
}
},
{
name: "First Contentful Paint",
id: "ttfcp",
name: 'First Contentful Paint',
id: 'ttfcp',
getTs: auditResults => {
const fmpExt = auditResults["first-meaningful-paint"].extendedInfo;
return safeGet(fmpExt, "value.timestamps.fCP");
const fmpExt = auditResults['first-meaningful-paint'].extendedInfo;
return safeGet(fmpExt, 'value.timestamps.fCP');
},
getTiming: auditResults => {
const fmpExt = auditResults["first-meaningful-paint"].extendedInfo;
return safeGet(fmpExt, "value.timings.fCP");
const fmpExt = auditResults['first-meaningful-paint'].extendedInfo;
return safeGet(fmpExt, 'value.timings.fCP');
}
},
{
name: "First Meaningful Paint",
id: "ttfmp",
name: 'First Meaningful Paint',
id: 'ttfmp',
getTs: auditResults => {
const fmpExt = auditResults["first-meaningful-paint"].extendedInfo;
return safeGet(fmpExt, "value.timestamps.fMP");
const fmpExt = auditResults['first-meaningful-paint'].extendedInfo;
return safeGet(fmpExt, 'value.timestamps.fMP');
},
getTiming: auditResults => {
const fmpExt = auditResults["first-meaningful-paint"].extendedInfo;
return safeGet(fmpExt, "value.timings.fMP");
const fmpExt = auditResults['first-meaningful-paint'].extendedInfo;
return safeGet(fmpExt, 'value.timings.fMP');
}
},
{
name: "Perceptual Speed Index",
id: "psi",
name: 'Perceptual Speed Index',
id: 'psi',
getTs: auditResults => {
const siExt = auditResults["speed-index-metric"].extendedInfo;
return safeGet(siExt, "value.timestamps.perceptualSpeedIndex");
const siExt = auditResults['speed-index-metric'].extendedInfo;
return safeGet(siExt, 'value.timestamps.perceptualSpeedIndex');
},
getTiming: auditResults => {
const siExt = auditResults["speed-index-metric"].extendedInfo;
return safeGet(siExt, "value.timings.perceptualSpeedIndex");
const siExt = auditResults['speed-index-metric'].extendedInfo;
return safeGet(siExt, 'value.timings.perceptualSpeedIndex');
}
},
{
name: "First Visual Change",
id: "fv",
name: 'First Visual Change',
id: 'fv',
getTs: auditResults => {
const siExt = auditResults["speed-index-metric"].extendedInfo;
return safeGet(siExt, "value.timestamps.firstVisualChange");
const siExt = auditResults['speed-index-metric'].extendedInfo;
return safeGet(siExt, 'value.timestamps.firstVisualChange');
},
getTiming: auditResults => {
const siExt = auditResults["speed-index-metric"].extendedInfo;
return safeGet(siExt, "value.timings.firstVisualChange");
const siExt = auditResults['speed-index-metric'].extendedInfo;
return safeGet(siExt, 'value.timings.firstVisualChange');
}
},
{
name: "Visually Complete 85%",
id: "vc85",
name: 'Visually Complete 85%',
id: 'vc85',
getTs: auditResults => {
const siExt = auditResults["time-to-interactive"].extendedInfo;
return safeGet(siExt, "value.timestamps.visuallyReady");
const siExt = auditResults['time-to-interactive'].extendedInfo;
return safeGet(siExt, 'value.timestamps.visuallyReady');
},
getTiming: auditResults => {
const siExt = auditResults["time-to-interactive"].extendedInfo;
return safeGet(siExt, "value.timings.visuallyReady");
const siExt = auditResults['time-to-interactive'].extendedInfo;
return safeGet(siExt, 'value.timings.visuallyReady');
}
},
{
name: "Visually Complete 100%",
id: "vc100",
name: 'Visually Complete 100%',
id: 'vc100',
getTs: auditResults => {
const siExt = auditResults["speed-index-metric"].extendedInfo;
return safeGet(siExt, "value.timestamps.visuallyComplete");
const siExt = auditResults['speed-index-metric'].extendedInfo;
return safeGet(siExt, 'value.timestamps.visuallyComplete');
},
getTiming: auditResults => {
const siExt = auditResults["speed-index-metric"].extendedInfo;
return safeGet(siExt, "value.timings.visuallyComplete");
const siExt = auditResults['speed-index-metric'].extendedInfo;
return safeGet(siExt, 'value.timings.visuallyComplete');
}
},
{
name: "Time to Interactive",
id: "tti",
name: 'Time to Interactive',
id: 'tti',
getTs: auditResults => {
const ttiExt = auditResults["time-to-interactive"].extendedInfo;
return safeGet(ttiExt, "value.timestamps.timeToInteractive");
const ttiExt = auditResults['time-to-interactive'].extendedInfo;
return safeGet(ttiExt, 'value.timestamps.timeToInteractive');
},
getTiming: auditResults => {
const ttiExt = auditResults["time-to-interactive"].extendedInfo;
return safeGet(ttiExt, "value.timings.timeToInteractive");
const ttiExt = auditResults['time-to-interactive'].extendedInfo;
return safeGet(ttiExt, 'value.timings.timeToInteractive');
}
},
{
name: "Trace End",
id: "te",
name: 'Trace End',
id: 'te',
getTs: auditResults => {
const ttiExt = auditResults["time-to-interactive"].extendedInfo;
return safeGet(ttiExt, "value.timestamps.traceEnd");
const ttiExt = auditResults['time-to-interactive'].extendedInfo;
return safeGet(ttiExt, 'value.timestamps.traceEnd');
},
getTiming: auditResults => {
const ttiExt = auditResults["time-to-interactive"].extendedInfo;
return safeGet(ttiExt, "value.timings.traceEnd");
const ttiExt = auditResults['time-to-interactive'].extendedInfo;
return safeGet(ttiExt, 'value.timings.traceEnd');
}
}
// TODO: add trace end
Expand All @@ -158,7 +158,7 @@ class Metrics {
ts: metric.getTs(this._auditResults)
});
} catch (e) {
log.error("pwmetrics-events", `${metric.name} timestamp not found: ${e.message}`);
log.error('pwmetrics-events', `${metric.name} timestamp not found: ${e.message}`);
}
});
return resolvedMetrics;
Expand All @@ -169,10 +169,10 @@ class Metrics {
* @param {!Array<{ts: number, id: string, name: string}>} metrics
*/
identifyNavigationStartEvt(metrics) {
const navStartMetric = metrics.find(e => e.id === "navstart");
const navStartMetric = metrics.find(e => e.id === 'navstart');
if (!navStartMetric) return;
this._navigationStartEvt = this._traceEvents.find(
e => e.name === "navigationStart" && e.ts === navStartMetric.ts
e => e.name === 'navigationStart' && e.ts === navStartMetric.ts
);
}

Expand All @@ -188,19 +188,19 @@ class Metrics {
const eventBase = {
pid: this._navigationStartEvt.pid,
tid: this._navigationStartEvt.tid,
cat: "blink.user_timing",
cat: 'blink.user_timing',
name: metric.name,
args: {},
// randomized id is same for the pair
id: `0x${(Math.random() * 1000000 | 0).toString(16)}`
};
const fakeMeasureStartEvent = Object.assign({}, eventBase, {
ts: this._navigationStartEvt.ts,
ph: "b"
ph: 'b'
});
const fakeMeasureEndEvent = Object.assign({}, eventBase, {
ts: metric.ts,
ph: "e"
ph: 'e'
});
return [fakeMeasureStartEvent, fakeMeasureEndEvent];
}
Expand All @@ -212,25 +212,25 @@ class Metrics {
const fakeEvents = [];
const metrics = this.gatherMetrics();
if (metrics.length === 0) {
log.error("metrics-events", "Metrics collection had errors, not synthetizing trace events");
log.error('metrics-events', 'Metrics collection had errors, not synthetizing trace events');
return [];
}

this.identifyNavigationStartEvt(metrics);
if (!this._navigationStartEvt) {
log.error("pwmetrics-events", "Reference navigationStart not found");
log.error('pwmetrics-events', 'Reference navigationStart not found');
return [];
}

metrics.forEach(metric => {
if (metric.id === "navstart") {
if (metric.id === 'navstart') {
return;
}
if (!metric.ts) {
log.error("pwmetrics-events", `(${metric.name}) missing timestamp. Skipping…`);
log.error('pwmetrics-events', `(${metric.name}) missing timestamp. Skipping…`);
return;
}
log.verbose("pwmetrics-events", `Sythesizing trace events for ${metric.name}`);
log.verbose('pwmetrics-events', `Sythesizing trace events for ${metric.name}`);
fakeEvents.push(...this.synthesizeEventPair(metric));
});
return fakeEvents;
Expand All @@ -243,8 +243,8 @@ class Metrics {
* @return {*}
*/
function safeGet(object, path) {
const components = path.split(".");
for (let component of components) {
const components = path.split('.');
for (const component of components) {
if (!object) {
return null;
}
Expand Down
Loading

0 comments on commit 87057c2

Please sign in to comment.