glutenfree
Version:
A profiler/loganalyzer for nginx/Cetrea Aw.
71 lines (58 loc) • 2.02 kB
JavaScript
// Generated by CoffeeScript 1.4.0
(function() {
var cluster, clusterId, logger, nl, reporter, util, winston, _;
cluster = require("cluster");
winston = require("winston");
util = require("util");
_ = require("underscore");
nl = require("nodeload");
logger = new winston.Logger({
transports: [
new winston.transports.Console({
'timestamp': true
})
]
});
logger.info("PrWrkr#" + cluster.worker.id + ": online, waiting for input");
reporter = {};
clusterId = "";
cluster.worker.on("message", function(msg) {
switch (msg.subject) {
case "targeting":
logger.info("PrWorker#" + cluster.worker.id + ": targeting received (http://" + msg.server + ":" + msg.port + " w " + msg.user + ":" + msg.password + "), hitting " + msg.targeting.length + " targets");
clusterId = msg.clusterId;
return nl.run({
numClients: 10,
targetRps: 100,
timeLimit: 10,
requestGenerator: function(client) {
var r, request, target;
r = Math.random() * 100;
target = _.find(msg.targeting, (function(t) {
return r < t.acc_percentage;
}));
request = client.request("GET", "/" + target.path, {
method: "GET",
host: msg.server,
port: msg.port,
headers: target.headers,
auth: "" + msg.user + ":" + msg.password
}, function(res) {
var _ref;
console.log("---> hit");
return target.headers = {
"If-None-Match": res.headers["etag"] || (target != null ? (_ref = target.headers) != null ? _ref["If-None-Match"] : void 0 : void 0)
};
});
return request.end();
}
});
}
});
cluster.worker.on("disconnect", function() {
clearTimeout(reporter);
report(0);
logger.info("report, disconnect");
return process.exit(0);
});
}).call(this);