in assets/android-metrics.js [294:333]
function fixupResourceTests(data) {
const resourceData = data.filter(row => row.category === 'resource');
let groupedObjects = {};
resourceData.forEach(row => {
const fields = row.test.split('-');
const resource = fields[0]; // "rss", "pss", "cpuTime"
const process = fields[1]; // "gpu", "main", "tab", "total"
const key = `${resource}-${process}-${row.application}-${row.date}`;
if (!groupedObjects[key]) {
groupedObjects[key] = {
application: row.application,
date: row.date,
category: row.category,
suite: row.suite,
metrics: []
}
}
groupedObjects[key].metrics.push(row.value);
});
Object.keys(groupedObjects).forEach(key => {
const entry = groupedObjects[key];
const avg = entry.metrics.reduce((acc, value) => acc + value, 1) / (entry.metrics.length);
const fields = key.split('-');
const resource = fields[0];
const process = fields[1];
data.push({
application: entry.application,
category: entry.category,
date: entry.date,
suite: entry.suite,
test: `${resource}-${process}-geomean`, // e.g., "rss-geomean", "pss-geomean"
value: avg
});
});
}