Fix calculating mean, send only delta of data
Showing
2 changed files
with
57 additions
and
24 deletions
... | @@ -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, | ... | ... |
-
Please register or sign in to post a comment