d5fef62c by Rafal Wilinski

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

1 parent 447c6fad
...@@ -228,40 +228,73 @@ ...@@ -228,40 +228,73 @@
228 options: defaultOptions 228 options: defaultOptions
229 }); 229 });
230 230
231 socket.on('stats', function (data) { 231 socket.on('start', function(data) {
232 // Remove last element of Array because it contains malformed responses data. 232 // Remove last element of Array because it contains malformed responses data.
233 // To keep consistency we also remove os data. 233 // To keep consistency we also remove os data.
234 data.responses.pop(); 234 console.log(data);
235 data.os.pop(); 235 data[0].responses.pop();
236 data[0].os.pop();
236 237
237 cpuStat.textContent = data.os[data.os.length - 1].cpu.toFixed(1) + '%'; 238 cpuStat.textContent = data[0].os[data[0].os.length - 1].cpu.toFixed(1) + '%';
238 cpuChart.data.datasets[0].data = data.os.map(function(point) { return point.cpu; }); 239 cpuChart.data.datasets[0].data = data[0].os.map(function(point) { return point.cpu; });
239 cpuChart.data.labels = data.os.map(function(point) { return point.timestamp; }); 240 cpuChart.data.labels = data[0].os.map(function(point) { return point.timestamp; });
240 cpuChart.update(); 241 cpuChart.update();
241 242
242 memStat.textContent = data.os[data.os.length - 1].memory.toFixed(1) + 'MB'; 243 memStat.textContent = data[0].os[data[0].os.length - 1].memory.toFixed(1) + 'MB';
243 memChart.data.datasets[0].data = data.os.map(function(point) { return point.memory; }); 244 memChart.data.datasets[0].data = data[0].os.map(function(point) { return point.memory; });
244 memChart.data.labels = data.os.map(function(point) { return point.timestamp; }); 245 memChart.data.labels = data[0].os.map(function(point) { return point.timestamp; });
245 memChart.update(); 246 memChart.update();
246 247
247 loadStat.textContent = data.os[data.os.length - 1].load[0].toFixed(2); 248 loadStat.textContent = data[0].os[data[0].os.length - 1].load[0].toFixed(2);
248 loadChart.data.datasets[0].data = data.os.map(function(point) { return point.load[0]; }); 249 loadChart.data.datasets[0].data = data[0].os.map(function(point) { return point.load[0]; });
249 loadChart.data.labels = data.os.map(function(point) { return point.timestamp; }); 250 loadChart.data.labels = data[0].os.map(function(point) { return point.timestamp; });
250 loadChart.update(); 251 loadChart.update();
251 252
252 responseTimeStat.textContent = data.responses[data.responses.length - 1].mean.toFixed(2) + 'ms'; 253 responseTimeStat.textContent = data[0].responses[data[0].responses.length - 1].mean.toFixed(2) + 'ms';
253 responseTimeChart.data.datasets[0].data = data.responses.map(function(point) { return point.mean; }); 254 responseTimeChart.data.datasets[0].data = data[0].responses.map(function(point) { return point.mean; });
254 responseTimeChart.data.labels = data.responses.map(function(point) { return point.timestamp; }); 255 responseTimeChart.data.labels = data[0].responses.map(function(point) { return point.timestamp; });
255 responseTimeChart.update(); 256 responseTimeChart.update();
256 257
257 if (data.responses.length >= 2) { 258 if (data[0].responses.length >= 2) {
258 var deltaTime = data.responses[data.responses.length - 1].timestamp - data.responses[data.responses.length - 2].timestamp; 259 var deltaTime = data[0].responses[data[0].responses.length - 1].timestamp - data[0].responses[data[0].responses.length - 2].timestamp;
259 rpsStat.textContent = (data.responses[data.responses.length - 1].count / deltaTime * 1000).toFixed(2); 260 rpsStat.textContent = (data[0].responses[data[0].responses.length - 1].count / deltaTime * 1000).toFixed(2);
260 rpsChart.data.datasets[0].data = data.responses.map(function(point) { return point.count / deltaTime * 1000; }); 261 rpsChart.data.datasets[0].data = data[0].responses.map(function(point) { return point.count / deltaTime * 1000; });
261 rpsChart.data.labels = data.responses.map(function(point) { return point.timestamp; }); 262 rpsChart.data.labels = data[0].responses.map(function(point) { return point.timestamp; });
262 rpsChart.update(); 263 rpsChart.update();
263 } 264 }
264 }); 265 });
266
267 socket.on('stats', function (data) {
268 // Remove last element of Array because it contains malformed responses data.
269 // To keep consistency we also remove os data.
270 console.log(data);
271
272 cpuStat.textContent = data.os.cpu.toFixed(1) + '%';
273 cpuChart.data.datasets[0].data.push(data.os.cpu);
274 cpuChart.data.labels.push(data.os.timestamp);
275 cpuChart.update();
276
277 memStat.textContent = data.os.memory.toFixed(1) + 'MB';
278 memChart.data.datasets[0].data.push(data.os.memory);
279 memChart.data.labels.push(data.os.timestamp);
280 memChart.update();
281
282 loadStat.textContent = data.os.load[0].toFixed(2);
283 loadChart.data.datasets[0].data.push(data.os.load[0]);
284 loadChart.data.labels.push(data.os.timestamp);
285 loadChart.update();
286
287 responseTimeStat.textContent = data.responses.mean.toFixed(2) + 'ms';
288 responseTimeChart.data.datasets[0].data.push(data.responses.mean);
289 responseTimeChart.data.labels.push(data.responses.timestamp);
290 responseTimeChart.update();
291
292 var deltaTime = data.responses.timestamp - rpsChart.data.labels[rpsChart.data.labels.length - 1];
293 rpsStat.textContent = (data.responses.count / deltaTime * 1000).toFixed(2);
294 rpsChart.data.datasets[0].data.push(data.responses.count / deltaTime * 1000);
295 rpsChart.data.labels.push(data.responses.timestamp);
296 rpsChart.update();
297 });
265 </script> 298 </script>
266 </body> 299 </body>
267 </html> 300 </html>
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -49,8 +49,8 @@ ...@@ -49,8 +49,8 @@
49 49
50 const sendMetrics = (io, span) => { 50 const sendMetrics = (io, span) => {
51 io.emit('stats', { 51 io.emit('stats', {
52 os: span.os, 52 os: span.os[span.os.length - 2],
53 responses: span.responses, 53 responses: span.responses[span.responses.length - 2],
54 }); 54 });
55 }; 55 };
56 56
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
74 const io = require('socket.io')(config.socketPort); 74 const io = require('socket.io')(config.socketPort);
75 75
76 io.on('connection', (socket) => { 76 io.on('connection', (socket) => {
77 console.log('User connected! ' + socket); 77 socket.emit('start', config.spans);
78 }); 78 });
79 79
80 config.spans.forEach((span) => { 80 config.spans.forEach((span) => {
...@@ -98,8 +98,8 @@ ...@@ -98,8 +98,8 @@
98 if (last !== undefined && 98 if (last !== undefined &&
99 span.responses.last().timestamp / 1000 + span.interval > Date.now() / 1000) { 99 span.responses.last().timestamp / 1000 + span.interval > Date.now() / 1000) {
100 span.responses.last()[category]++; 100 span.responses.last()[category]++;
101 span.responses.last().mean = responseTime;
102 span.responses.last().count++; 101 span.responses.last().count++;
102 span.responses.last().mean = span.responses.last().mean + ((responseTime - span.responses.last().mean) / span.responses.last().count);
103 } else { 103 } else {
104 span.responses.push({ 104 span.responses.push({
105 '2': category === 2 ? 1 : 0, 105 '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!