open-consul/ui/packages/consul-ui/tests/lib/measure/getMeasure.js

27 lines
839 B
JavaScript

/* eslint no-console: "off" */
const log = function(results, measurement, tags) {
console.log(measurement, results, tags);
};
export default function(len = 10000, report = log, performance = window.performance) {
return function(cb, measurement, tags) {
let actual;
return new Array(len)
.fill(true)
.reduce(function(prev, item, i) {
return prev.then(function(ms) {
return new Promise(function(resolve) {
const start = performance.now();
cb().then(function(res) {
actual = res;
resolve(ms + (performance.now() - start));
});
});
});
}, Promise.resolve(0))
.then(function(total) {
report({ avg: total / len, total: total, count: len }, measurement, tags);
return actual;
});
};
}