d5fef62c by Rafal Wilinski

:credit_card: Fix calculating mean, send only delta of data

1 parent 447c6fad
......@@ -228,40 +228,73 @@
options: defaultOptions
});
socket.on('stats', function (data) {
socket.on('start', function(data) {
// Remove last element of Array because it contains malformed responses data.
// To keep consistency we also remove os data.
data.responses.pop();
data.os.pop();
console.log(data);
data[0].responses.pop();
data[0].os.pop();
cpuStat.textContent = data.os[data.os.length - 1].cpu.toFixed(1) + '%';
cpuChart.data.datasets[0].data = data.os.map(function(point) { return point.cpu; });
cpuChart.data.labels = data.os.map(function(point) { return point.timestamp; });
cpuStat.textContent = data[0].os[data[0].os.length - 1].cpu.toFixed(1) + '%';
cpuChart.data.datasets[0].data = data[0].os.map(function(point) { return point.cpu; });
cpuChart.data.labels = data[0].os.map(function(point) { return point.timestamp; });
cpuChart.update();
memStat.textContent = data.os[data.os.length - 1].memory.toFixed(1) + 'MB';
memChart.data.datasets[0].data = data.os.map(function(point) { return point.memory; });
memChart.data.labels = data.os.map(function(point) { return point.timestamp; });
memStat.textContent = data[0].os[data[0].os.length - 1].memory.toFixed(1) + 'MB';
memChart.data.datasets[0].data = data[0].os.map(function(point) { return point.memory; });
memChart.data.labels = data[0].os.map(function(point) { return point.timestamp; });
memChart.update();
loadStat.textContent = data.os[data.os.length - 1].load[0].toFixed(2);
loadChart.data.datasets[0].data = data.os.map(function(point) { return point.load[0]; });
loadChart.data.labels = data.os.map(function(point) { return point.timestamp; });
loadStat.textContent = data[0].os[data[0].os.length - 1].load[0].toFixed(2);
loadChart.data.datasets[0].data = data[0].os.map(function(point) { return point.load[0]; });
loadChart.data.labels = data[0].os.map(function(point) { return point.timestamp; });
loadChart.update();
responseTimeStat.textContent = data.responses[data.responses.length - 1].mean.toFixed(2) + 'ms';
responseTimeChart.data.datasets[0].data = data.responses.map(function(point) { return point.mean; });
responseTimeChart.data.labels = data.responses.map(function(point) { return point.timestamp; });
responseTimeStat.textContent = data[0].responses[data[0].responses.length - 1].mean.toFixed(2) + 'ms';
responseTimeChart.data.datasets[0].data = data[0].responses.map(function(point) { return point.mean; });
responseTimeChart.data.labels = data[0].responses.map(function(point) { return point.timestamp; });
responseTimeChart.update();
if (data.responses.length >= 2) {
var deltaTime = data.responses[data.responses.length - 1].timestamp - data.responses[data.responses.length - 2].timestamp;
rpsStat.textContent = (data.responses[data.responses.length - 1].count / deltaTime * 1000).toFixed(2);
rpsChart.data.datasets[0].data = data.responses.map(function(point) { return point.count / deltaTime * 1000; });
rpsChart.data.labels = data.responses.map(function(point) { return point.timestamp; });
if (data[0].responses.length >= 2) {
var deltaTime = data[0].responses[data[0].responses.length - 1].timestamp - data[0].responses[data[0].responses.length - 2].timestamp;
rpsStat.textContent = (data[0].responses[data[0].responses.length - 1].count / deltaTime * 1000).toFixed(2);
rpsChart.data.datasets[0].data = data[0].responses.map(function(point) { return point.count / deltaTime * 1000; });
rpsChart.data.labels = data[0].responses.map(function(point) { return point.timestamp; });
rpsChart.update();
}
});
socket.on('stats', function (data) {
// Remove last element of Array because it contains malformed responses data.
// To keep consistency we also remove os data.
console.log(data);
cpuStat.textContent = data.os.cpu.toFixed(1) + '%';
cpuChart.data.datasets[0].data.push(data.os.cpu);
cpuChart.data.labels.push(data.os.timestamp);
cpuChart.update();
memStat.textContent = data.os.memory.toFixed(1) + 'MB';
memChart.data.datasets[0].data.push(data.os.memory);
memChart.data.labels.push(data.os.timestamp);
memChart.update();
loadStat.textContent = data.os.load[0].toFixed(2);
loadChart.data.datasets[0].data.push(data.os.load[0]);
loadChart.data.labels.push(data.os.timestamp);
loadChart.update();
responseTimeStat.textContent = data.responses.mean.toFixed(2) + 'ms';
responseTimeChart.data.datasets[0].data.push(data.responses.mean);
responseTimeChart.data.labels.push(data.responses.timestamp);
responseTimeChart.update();
var deltaTime = data.responses.timestamp - rpsChart.data.labels[rpsChart.data.labels.length - 1];
rpsStat.textContent = (data.responses.count / deltaTime * 1000).toFixed(2);
rpsChart.data.datasets[0].data.push(data.responses.count / deltaTime * 1000);
rpsChart.data.labels.push(data.responses.timestamp);
rpsChart.update();
});
</script>
</body>
</html>
\ No newline at end of file
......
......@@ -49,8 +49,8 @@
const sendMetrics = (io, span) => {
io.emit('stats', {
os: span.os,
responses: span.responses,
os: span.os[span.os.length - 2],
responses: span.responses[span.responses.length - 2],
});
};
......@@ -74,7 +74,7 @@
const io = require('socket.io')(config.socketPort);
io.on('connection', (socket) => {
console.log('User connected! ' + socket);
socket.emit('start', config.spans);
});
config.spans.forEach((span) => {
......@@ -98,8 +98,8 @@
if (last !== undefined &&
span.responses.last().timestamp / 1000 + span.interval > Date.now() / 1000) {
span.responses.last()[category]++;
span.responses.last().mean = responseTime;
span.responses.last().count++;
span.responses.last().mean = span.responses.last().mean + ((responseTime - span.responses.last().mean) / span.responses.last().count);
} else {
span.responses.push({
'2': category === 2 ? 1 : 0,
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!