You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.2 KiB
49 lines
1.2 KiB
var async = require('async'); |
|
var Throttle = require('../index.js').Throttle; |
|
var ThrottleGroup = require('../index.js').ThrottleGroup; |
|
|
|
var sendStr = (function() { |
|
var s = '0123456789xyzXYZ?!\0åéîõü$£€*<>'; // 30 characters |
|
for (var i = 0, str = ''; i < 1000; i++) |
|
str += s; |
|
return str; // 30K characters |
|
})(); |
|
|
|
var opts = {rate: 100000}; // 100 KiB/s |
|
|
|
var testSendRecv = function(t, cb) { |
|
var recvStr = ''; |
|
t.on('data', function(chunk) { |
|
recvStr += chunk; |
|
}); |
|
t.on('end', function() { |
|
cb(sendStr == recvStr); |
|
}); |
|
t.write(sendStr, function() { |
|
t.end(); |
|
}); |
|
}; |
|
|
|
exports.testThrottle = function(test) { |
|
var t = new Throttle(opts); |
|
|
|
test.expect(1); |
|
testSendRecv(t, function(ok) { |
|
test.ok(ok, "received string should equal sent string"); |
|
test.done(); |
|
}); |
|
}; |
|
|
|
exports.testGroupThrottle = function(test) { |
|
var tg = new ThrottleGroup(opts); |
|
|
|
test.expect(3); |
|
async.each([1, 2, 3], function(i, done) { |
|
testSendRecv(tg.throttle(), function(ok) { |
|
test.ok(ok, "received string should equal sent string"); |
|
done(); |
|
}); |
|
}, function() { |
|
test.done(); |
|
}); |
|
};
|
|
|