Skip to content

Instantly share code, notes, and snippets.

@madbence
Created April 5, 2013 16:08
Show Gist options
  • Save madbence/5320502 to your computer and use it in GitHub Desktop.
Save madbence/5320502 to your computer and use it in GitHub Desktop.
var net = require('net');
net.createServer(function(sock) {
console.log('rikveszt!');
var start = new Date().getTime();
var payload = '';
for (var i = 0; i < 10000; i++) {
payload += 'LoL';
}
var j = 0;
var speed = 100;
var delay = 0;
var last = new Date().getTime();
var lastBytes = 0;
var plan = [
[0, 50],
[5, 62],
[10, 75],
[20, 62],
[25, 50],
[55, 75],
[60, 100],
[65, 75],
[70, 50],
[75, 62],
[80, 75],
[85, 87],
[115, 75],
[120, 62],
[125, 50],
[130, 75],
[135, 100],
[140, 75],
[145, 50],
[175, 62],
[180, 75],
[190, 62],
[195, 50],
[200, 0]
];
function w() {
j++;
var now = new Date().getTime();
var s = (sock.bytesWritten - lastBytes) / (now - last) * 1000 / 1024 / 1024;
if (j % 1000 == 0) {
var elapsed = (now - start) / 1000 / 60;
if (j % 100000 == 0) {
console.log('(' + elapsed.toFixed(1) + 'min, ' + (sock.bytesWritten / 1024 / 1024 / 1024).toFixed(2) + 'GB sent) ' + ((sock.bytesWritten - lastBytes) / (now - last) * 1000 / 1024 / 1024).toFixed(2) + 'MB/s');
j = 1;
}
lastBytes = sock.bytesWritten;
last = now;
for (var p in plan) {
if (elapsed > plan[p][0] && (!plan[parseInt(p) + 1] || elapsed < plan[parseInt(p) + 1][0])) {
if (speed != plan[p][1]) {
console.log('New speed: ' + plan[p][1] + 'MB/s');
}
speed = plan[p][1];
}
}
}
if (s > speed) {
delay++;
setTimeout(function() {
sock.write(payload);
}, delay);
} else {
delay = 0;
sock.write(payload);
}
}
sock.on('drain', w);
w();
}).listen(8080, process.argv[2]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment