Add response time to load testing results
This commit is contained in:
parent
a8e03cef9d
commit
83dd6fa16c
2 changed files with 58 additions and 6 deletions
|
@ -264,9 +264,10 @@ Workers.initialize = function (Env, config, _cb) {
|
||||||
};
|
};
|
||||||
|
|
||||||
nThen(function (w) {
|
nThen(function (w) {
|
||||||
var limit = Env.maxWorkers;
|
var limit = Env.maxWorkers || OS.cpus().length;
|
||||||
var logged;
|
var logged;
|
||||||
|
|
||||||
|
/*
|
||||||
OS.cpus().forEach(function (cpu, index) {
|
OS.cpus().forEach(function (cpu, index) {
|
||||||
if (limit && index >= limit) {
|
if (limit && index >= limit) {
|
||||||
if (!logged) {
|
if (!logged) {
|
||||||
|
@ -282,6 +283,14 @@ Workers.initialize = function (Env, config, _cb) {
|
||||||
return void cb(err);
|
return void cb(err);
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
*/
|
||||||
|
for (let i = 0; i<limit; i++) {
|
||||||
|
initWorker(fork(DB_PATH), w(function (err) {
|
||||||
|
if (!err) { return; }
|
||||||
|
w.abort();
|
||||||
|
return void cb(err);
|
||||||
|
}));
|
||||||
|
}
|
||||||
}).nThen(function () {
|
}).nThen(function () {
|
||||||
Env.computeIndex = function (Env, channel, cb) {
|
Env.computeIndex = function (Env, channel, cb) {
|
||||||
Env.store.getWeakLock(channel, function (next) {
|
Env.store.getWeakLock(channel, function (next) {
|
||||||
|
|
|
@ -30,7 +30,9 @@ define([
|
||||||
let Env = {
|
let Env = {
|
||||||
users: {},
|
users: {},
|
||||||
channels: {},
|
channels: {},
|
||||||
queries: 0
|
queries: 0,
|
||||||
|
lag: [],
|
||||||
|
errors: 0
|
||||||
};
|
};
|
||||||
let startSendDataEvt = Util.mkEvent(true);
|
let startSendDataEvt = Util.mkEvent(true);
|
||||||
|
|
||||||
|
@ -186,6 +188,7 @@ define([
|
||||||
makeData(i, w());
|
makeData(i, w());
|
||||||
}).nThen(w => {
|
}).nThen(w => {
|
||||||
if (init) { return; }
|
if (init) { return; }
|
||||||
|
console.warn(i, me.secret.channel);
|
||||||
let min = Math.max(Env.offset, i-5); // XXX 5 users per pad
|
let min = Math.max(Env.offset, i-5); // XXX 5 users per pad
|
||||||
for (let j = min; j<i; j++) {
|
for (let j = min; j<i; j++) {
|
||||||
myPads.push(j);
|
myPads.push(j);
|
||||||
|
@ -208,7 +211,14 @@ define([
|
||||||
console.log('Send patch', channel, i%50);
|
console.log('Send patch', channel, i%50);
|
||||||
chanObj.total = i+1;
|
chanObj.total = i+1;
|
||||||
Env.incQueries();
|
Env.incQueries();
|
||||||
wc.bcast(m);
|
let t = +new Date();
|
||||||
|
wc.bcast(m).then(() => {
|
||||||
|
let now = +new Date();
|
||||||
|
Env.lag.push((now - t));
|
||||||
|
}, err => {
|
||||||
|
Env.errors++;
|
||||||
|
console.error(err);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -291,8 +301,23 @@ define([
|
||||||
|
|
||||||
let queries = h('span');
|
let queries = h('span');
|
||||||
let freq = h('span');
|
let freq = h('span');
|
||||||
|
let freqr = h('span');
|
||||||
let time = h('span');
|
let time = h('span');
|
||||||
let res = h('div', [queries, h('br'), time, h('br'), freq]);
|
let lag = h('span');
|
||||||
|
let errors = h('span');
|
||||||
|
let res = h('div', [
|
||||||
|
queries,
|
||||||
|
h('br'),
|
||||||
|
time,
|
||||||
|
h('br'),
|
||||||
|
freq,
|
||||||
|
h('br'),
|
||||||
|
freqr,
|
||||||
|
h('br'),
|
||||||
|
lag,
|
||||||
|
h('br'),
|
||||||
|
errors
|
||||||
|
]);
|
||||||
|
|
||||||
let button = h('button.btn.btn-primary', 'Start load testing');
|
let button = h('button.btn.btn-primary', 'Start load testing');
|
||||||
let buttonPatch = h('button.btn.btn-primary', {style:'display:none;'}, 'Start sending patches');
|
let buttonPatch = h('button.btn.btn-primary', {style:'display:none;'}, 'Start sending patches');
|
||||||
|
@ -323,7 +348,7 @@ define([
|
||||||
if (started) { return; }
|
if (started) { return; }
|
||||||
spinner.spin();
|
spinner.spin();
|
||||||
started = true;
|
started = true;
|
||||||
$(button).remove();
|
//$(button).remove();
|
||||||
let users = Env.numberUsers = Number($(input).val());
|
let users = Env.numberUsers = Number($(input).val());
|
||||||
Env.offset = Number($(inputOff).val()) || 0;
|
Env.offset = Number($(inputOff).val()) || 0;
|
||||||
Env.delay = Number($(inputFreq).val()) || 800;
|
Env.delay = Number($(inputFreq).val()) || 800;
|
||||||
|
@ -334,25 +359,43 @@ define([
|
||||||
$(buttonData).remove();
|
$(buttonData).remove();
|
||||||
start(() => {
|
start(() => {
|
||||||
spinner.done();
|
spinner.done();
|
||||||
|
started = false;
|
||||||
UI.log('READY: you can now start sending patches');
|
UI.log('READY: you can now start sending patches');
|
||||||
$(buttonPatch).show();
|
$(buttonPatch).show();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
let qIt, fIt;
|
let qIt, fIt;
|
||||||
|
let last = {};
|
||||||
$(buttonPatch).click(() => {
|
$(buttonPatch).click(() => {
|
||||||
startSendDataEvt.fire();
|
startSendDataEvt.fire();
|
||||||
$(buttonPatch).remove();
|
$(buttonPatch).remove();
|
||||||
$(buttonStopPatch).show();
|
$(buttonStopPatch).show();
|
||||||
Env.start = +new Date();
|
Env.start = +new Date();
|
||||||
|
last.t = +new Date();
|
||||||
|
last.q = 0;
|
||||||
qIt = setInterval(() => {
|
qIt = setInterval(() => {
|
||||||
$(queries).text('Queries: '+Env.queries);
|
$(queries).text('Queries: '+Env.queries);
|
||||||
let q = Env.queries;
|
let q = Env.queries;
|
||||||
let now = +new Date();
|
let now = +new Date();
|
||||||
let diffTime = (now-Env.start)/1000;
|
let diffTime = (now-Env.start)/1000;
|
||||||
let f = Math.floor(q/diffTime);
|
let f = Math.floor(q/diffTime);
|
||||||
$(freq).text('Queries/s: '+f);
|
const average = Math.round((Env.lag.length && Env.lag.reduce((a, b) => a + b, 0) / Env.lag.length)) || 0;
|
||||||
|
|
||||||
|
$(freq).text('Queries/s (all): '+f);
|
||||||
$(time).text('Time: '+Math.floor(diffTime)+'s');
|
$(time).text('Time: '+Math.floor(diffTime)+'s');
|
||||||
|
$(lag).text('Avg response time: '+average+'ms');
|
||||||
|
$(errors).text('Errors: '+Env.errors);
|
||||||
|
Env.lag = [];
|
||||||
}, 200);
|
}, 200);
|
||||||
|
fIt = setInterval(() => {
|
||||||
|
let q = Env.queries;
|
||||||
|
let now = +new Date();
|
||||||
|
let fr = Math.floor(1000*(Env.queries-last.q)/(now-last.t));
|
||||||
|
|
||||||
|
last.t = +new Date();
|
||||||
|
last.q = q;
|
||||||
|
$(freqr).text('Queries/s (recent): '+fr);
|
||||||
|
}, 1000);
|
||||||
});
|
});
|
||||||
$(buttonStopPatch).click(() => {
|
$(buttonStopPatch).click(() => {
|
||||||
Env.stopPatch = true;
|
Env.stopPatch = true;
|
||||||
|
|
Loading…
Reference in a new issue