Skip to content

Commit

Permalink
Merge d7678f0 into b8007d0
Browse files Browse the repository at this point in the history
  • Loading branch information
armenzg committed Feb 12, 2018
2 parents b8007d0 + d7678f0 commit 99e8a68
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 111 deletions.
113 changes: 2 additions & 111 deletions src/perf.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { stringify } from 'query-string';
import { median, quantile } from 'simple-statistics';
import { getEvolution, getLatestEvolution } from './perf/tmo';
import { fetchTelemetryEvolution } from './perf/tmo-wrapper';
import fetchTransformSpeedometerData from './perf/speedometer';
import fetchJson from './fetch/json';
import channels from './release/channels';
import getVersions from './release/versions';
Expand Down Expand Up @@ -185,117 +186,7 @@ router
ctx.body = list;
})
.get('/benchmark/speedometer', async (ctx) => {
const referenceSeries = await fetchJson('https://arewefastyet.com/data.php?file=aggregate-speedometer-misc-36.json');
const runs = {};
const transform = ({ graph }, start = null, end = null) => {
return graph.timelist
.map((date, idx) => {
const values = {
date: date * 1000,
};
graph.lines.forEach((line, lineIdx) => {
if (line && line.data[idx]) {
runs[lineIdx] = line.data[idx][0];
}
}, []);
if (runs[0] && (runs[1] || runs[2])) {
values.diff = ((runs[1] || runs[2]) - runs[0]) / runs[0] * 100;
}
return values;
})
.filter(entry => entry.diff)
.filter(entry => !end || entry.date < end)
.filter(entry => !start || entry.date > start);
};
// const legacy = transform(
// legacySeries,
// moment('2017-05-01').valueOf(),
// moment('2017-06-01').valueOf(),
// );
const reference = transform(referenceSeries);
ctx.body = reference;
})
.get('/benchmark/speedometer32', async (ctx) => {
const referenceSeries = await fetchJson('https://arewefastyet.com/data.php?file=aggregate-speedometer-misc-37.json');
const runs = {};
const transform = ({ graph }, start = null, end = null) => {
return graph.timelist
.map((date, idx) => {
const values = {
date: date * 1000,
};
graph.lines.forEach((line, lineIdx) => {
if (line && line.data[idx]) {
runs[lineIdx] = line.data[idx][0];
}
}, []);
if (runs[0] && (runs[1] || runs[2])) {
values.diff = ((runs[1] || runs[2]) - runs[0]) / runs[0] * 100;
}
return values;
})
.filter(entry => entry.diff)
.filter(entry => !end || entry.date < end)
.filter(entry => !start || entry.date > start);
};
const reference = transform(referenceSeries);
ctx.body = reference;
})
.get('/benchmark/speedometerBeta', async (ctx) => {
// idx 4 == beta
// idx 0 == chrome
const referenceSeries = await fetchJson('https://arewefastyet.com/data.php?file=aggregate-speedometer-misc-36.json');
const runs = {};
const transform = ({ graph }, start = null, end = null) => {
return graph.timelist
.map((date, idx) => {
const values = {
date: date * 1000,
};
graph.lines.forEach((line, lineIdx) => {
if (line && line.data[idx]) {
runs[lineIdx] = line.data[idx][0];
}
}, []);
if (runs[0] && runs[4]) {
values.diff = (runs[4] - runs[0]) / runs[0] * 100;
}
return values;
})
.filter(entry => entry.diff)
.filter(entry => !end || entry.date < end)
.filter(entry => !start || entry.date > start);
};
const reference = transform(referenceSeries);
ctx.body = reference;
})
.get('/benchmark/speedometerBeta32', async (ctx) => {
// idx 2 == beta
// idx 0 == chrome
const referenceSeries = await fetchJson('https://arewefastyet.com/data.php?file=aggregate-speedometer-misc-37.json');
const runs = {};
const transform = ({ graph }, start = null, end = null) => {
return graph.timelist
.map((date, idx) => {
const values = {
date: date * 1000,
};
graph.lines.forEach((line, lineIdx) => {
if (line && line.data[idx]) {
runs[lineIdx] = line.data[idx][0];
}
}, []);
if (runs[0] && runs[2]) {
values.diff = (runs[2] - runs[0]) / runs[0] * 100;
}
return values;
})
.filter(entry => entry.diff)
.filter(entry => !end || entry.date < end)
.filter(entry => !start || entry.date > start);
};
const reference = transform(referenceSeries);
ctx.body = reference;
ctx.body = await fetchTransformSpeedometerData(ctx.request.query);
})
.get('/herder', async (ctx) => {
const { framework } = ctx.request.query;
Expand Down
57 changes: 57 additions & 0 deletions src/perf/speedometer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import fetchJson from '../fetch/json';

const AWFY = 'https://arewefastyet.com';
const MACHINE = { 32: '37', 64: '36' };

const generateUrl = (architecture) => {
const machine = MACHINE[architecture];
return {
dataUrl: `${AWFY}/data.php?file=bk-aggregate-speedometer-misc-score-${machine}.json`,
viewUrl: `${AWFY}#machine=${machine}&view=single&suite=speedometer-misc&subtest=score`,
};
};

const CONFIGURATION = {
nightly: { Firefox: 14, Chrome: 3 },
beta: { Firefox: 62, Chrome: 3 },
};

const absoluteValues = (graph, configuration) => {
const modes = {};
const modeIds = Object.values(configuration);
modeIds.forEach(modeId => modes[modeId] = []);

graph.timelist.forEach((date, idx) => {
// XXX: This flattens all data points for the same day to one data point
const dayDate = new Date(date * 1000).toISOString().substring(0, 10);
graph.lines.forEach((line) => {
// if (line && line.data[idx] && modeIds.find(el => el === line.modeid)) {
if (line && line.data[idx] && modeIds.includes(line.modeid)) {
modes[line.modeid].push({
date: dayDate,
value: line.data[idx][0],
});
}
});
});

return modeIds.map(modeId => modes[modeId]);
};

const fetchTransformSpeedometerData = async ({ architecture, channel }) => {
// XXX: We should look into a nicer approach. The 1st represents Chrome & the 2nd Firefox
const configuration = CONFIGURATION[channel];
const { dataUrl, viewUrl } = generateUrl(architecture);
const referenceSeries = await fetchJson(dataUrl);
return {
meta: {
configuration,
dataUrl,
viewUrl,
},
legendLabels: Object.keys(configuration),
series: absoluteValues(referenceSeries.graph, configuration),
};
};

export default fetchTransformSpeedometerData;

0 comments on commit 99e8a68

Please sign in to comment.