damage
Version:
A simple way to calculate the 'damage' of running a task in Node.JS.
99 lines (89 loc) • 2.2 kB
JavaScript
var finished = false;
var haveDone = false;
var testData = [];
var testFinalData = [];
var error = null;
var _ = require('lodash');
var usage = require(__dirname+'/../lib/cpu.js');
var heapdump = require('heapdump');
var _config = {};
var i=0;
// TASK INFORMATION
//TASK//
process.once('message',function (env) {
_config = env._config;
setImmediate(function () {
var args = arguments;
if (testFinalData && testFinalData[i])
usage.getUsage(process.pid,function (err,result) {
var len = testFinalData[i].processUsage.length;
result = result.cpu;
if (!isNaN(result) && result !== testFinalData[i].processUsage[len-1])
{
testFinalData[i].processUsage.push(result);
}
setImmediate(args.callee);
});
else
setImmediate(args.callee);
});
function finish() {
if (!finished)
{
if (_config.heapdump)
heapdump.writeSnapshot(_config.dumpPath+_config.dumpPrefix+'.'+desc.replace(/\s/g,"_") + Date.now() + '.heapsnapshot');
process.send({
error: null,
env: env,
startData: testData,
finalData: testFinalData
});
}
process.exit();
}
i=0;
// PREPARE SCRIPT
//PREPARE//
(function () {
var args = arguments.callee;
if (i>=repeats)
finish();
else {
haveDone = false;
function done() {
if (!haveDone)
{
testFinalData[i].time=+new Date;
testFinalData[i].rss=process.memoryUsage().rss;
testFinalData[i].heapTotal=process.memoryUsage().heapTotal;
testFinalData[i].heapUsed=process.memoryUsage().heapUsed;
i++;
haveDone = true;
args();
}
}
function start () {
testData[i]={};
testFinalData[i]={};
testData[i].time=+new Date;
testData[i].rss=process.memoryUsage().rss;
testData[i].heapTotal=process.memoryUsage().heapTotal;
testData[i].heapUsed=process.memoryUsage().heapUsed;
testFinalData[i].processUsage=[];
}
start();
// TASK EXECUTION
try {
setImmediate(function () {
result=//TEST//
if (result!==undefined)
done();
});
} catch (e)
{
error=e;
finish();
}
}
})();
});