Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | 1x 93x 93x 93x 93x 93x 93x 93x 93x 93x 93x 93x 93x 93x 93x 93x 93x 93x 93x 93x 93x 93x 93x 93x 1x 64x 64x 64x 64x 1x 64x 64x 64x 64x 64x 64x 64x 64x 64x 64x 56x 12x 44x 44x 64x 1x 497x 497x 1x | /**
* Created by sv2 on 2/18/17.
* Request / Response statistics
*/
'use strict';
var swsUtil = require('./swsUtil');
// Request / Response statistics
// apdex_threshold: Thresold for apdex calculation, in milliseconds 50 (ms) by default
function SwsReqResStats(apdex_threshold) {
this.requests=0; // Total number of requests received
this.responses=0; // Total number of responses sent
this.errors=0; // Total number of error responses
this.info=0; // Total number of informational responses
this.success=0; // Total number of success responses
this.redirect=0; // Total number of redirection responses
this.client_error=0; // Total number of client error responses
this.server_error=0; // Total number of server error responses
this.total_time=0; // Sum of total processing time (from request received to response finished)
this.max_time=0; // Maximum observed processed time
this.avg_time=0; // Average processing time
this.total_req_clength=0; // Total (Sum) of Content Lengths of received requests
this.max_req_clength=0; // Maximum observed Content length in received requests
this.avg_req_clength=0; // Average Content Length in received requests
this.total_res_clength=0; // Total (Sum) of Content Lengths of sent responses
this.max_res_clength=0; // Maximum observed Content Length in sent responses
this.avg_res_clength=0; // Average Content Length in sent responses
this.req_rate=0; // Request Rate
this.err_rate=0; // Error Rate
this.apdex_threshold = typeof apdex_threshold !== 'undefined' ? apdex_threshold : 50; // Apdex threshold
this.apdex_satisfied = 0; // Total number of "satisfied" responses for Apdex: time <= apdex_threshold
this.apdex_tolerated = 0; // Total number of "tolerated" responses for Apdex: time <= (apdex_threshold*4)
this.apdex_score = 0; // Apdex score: (apdex_satisfied + (apdex_tolerated/2))/responses
// TODO Consider: counts by exact response code
}
SwsReqResStats.prototype.countRequest = function(clength) {
this.requests++;
this.total_req_clength += clength;
if (this.max_req_clength < clength) this.max_req_clength = clength;
this.avg_req_clength = Math.floor(this.total_req_clength / this.requests);
};
SwsReqResStats.prototype.countResponse = function(code,codeclass,duration,clength) {
this.responses++;
this[codeclass]++;
if( swsUtil.isError(code) ) this.errors++;
this.total_time += duration;
this.avg_time = this.total_time / this.requests;
if (this.max_time < duration) this.max_time = duration;
this.total_res_clength += clength;
if (this.max_res_clength < clength) this.max_res_clength = clength;
this.avg_res_clength = Math.floor(this.total_res_clength / this.responses);
// Apdex: https://en.wikipedia.org/wiki/Apdex
if( codeclass=="success" ) {
if (duration <= this.apdex_threshold) {
this.apdex_satisfied++;
} else Eif (duration <= (this.apdex_threshold * 4)) {
this.apdex_tolerated++;
}
}
this.apdex_score = (this.apdex_satisfied + (this.apdex_tolerated/2)) / this.responses;
};
SwsReqResStats.prototype.updateRates = function(elapsed) {
//this.req_rate = Math.round( (this.requests / elapsed) * 1e2 ) / 1e2; //;
this.req_rate = this.requests / elapsed;
this.err_rate = this.errors / elapsed;
};
module.exports = SwsReqResStats;
|