cloudron-e2e-test/tcpbomb.js
Girish Ramakrishnan f66d5185ad add tcpbomb.js
2017-03-30 16:13:11 -07:00

38 lines
982 B
JavaScript

'use strict';
exports = module.exports = tcpBomb;
var async = require('async'),
net = require('net');
function tcpBomb(ip, port, times, timeout, callback) {
async.times(times, function (n, done) {
var client = new net.Socket();
client.setTimeout(timeout);
client.connect(port, ip, function() {
client.destroy();
done(null, 'Connected');
});
client.on('timeout', function () {
client.destroy();
done(null, 'Timeout');
});
client.on('error', function (error) {
done(null, 'Error: ' + error.message);
});
}, function (error, result) {
var x = result.reduce(function (ac, val) {
if (val === 'Connected') ++ac.connected;
else if (val === 'Timeout') ++ac.timeout;
else ++ac.error;
return ac;
}, { connected: 0, error: 0, timeout: 0 });
return callback(null, x);
});
}