throttle_test.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. var async = require('async');
  2. var Throttle = require('../index.js').Throttle;
  3. var ThrottleGroup = require('../index.js').ThrottleGroup;
  4. var sendStr = (function() {
  5. var s = '0123456789xyzXYZ?!\0åéîõü$£€*<>'; // 30 characters
  6. for (var i = 0, str = ''; i < 1000; i++)
  7. str += s;
  8. return str; // 30K characters
  9. })();
  10. var opts = {rate: 100000}; // 100 KiB/s
  11. var testSendRecv = function(t, cb) {
  12. var recvStr = '';
  13. t.on('data', function(chunk) {
  14. recvStr += chunk;
  15. });
  16. t.on('end', function() {
  17. cb(sendStr == recvStr);
  18. });
  19. t.write(sendStr, function() {
  20. t.end();
  21. });
  22. };
  23. exports.testThrottle = function(test) {
  24. var t = new Throttle(opts);
  25. test.expect(1);
  26. testSendRecv(t, function(ok) {
  27. test.ok(ok, "received string should equal sent string");
  28. test.done();
  29. });
  30. };
  31. exports.testGroupThrottle = function(test) {
  32. var tg = new ThrottleGroup(opts);
  33. test.expect(3);
  34. async.each([1, 2, 3], function(i, done) {
  35. testSendRecv(tg.throttle(), function(ok) {
  36. test.ok(ok, "received string should equal sent string");
  37. done();
  38. });
  39. }, function() {
  40. test.done();
  41. });
  42. };