diff options
-rw-r--r-- | test/simple/test-tls-throttle.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/test/simple/test-tls-throttle.js b/test/simple/test-tls-throttle.js new file mode 100644 index 000000000..8d009ec96 --- /dev/null +++ b/test/simple/test-tls-throttle.js @@ -0,0 +1,61 @@ +// Server sends a large string. Client counts bytes and pauses every few +// seconds. Makes sure that pause and resume work properly. +var common = require('../common'); +var assert = require('assert'); +var tls = require('tls'); +var fs = require('fs'); + + +var body = ''; + +process.stdout.write('build body...'); +for (var i = 0; i < 1024*1024; i++) { + body += 'hello world\n'; +} +process.stdout.write('done\n'); + + +var options = { + key: fs.readFileSync(common.fixturesDir + '/keys/agent2-key.pem'), + cert: fs.readFileSync(common.fixturesDir + '/keys/agent2-cert.pem') +}; + +var connections = 0; + + +var server = tls.Server(options, function(socket) { + socket.end(body); + connections++; +}); + +var recvCount = 0; + +server.listen(common.PORT, function() { + var client = tls.connect(common.PORT); + + client.on('data', function(d) { + recvCount += d.length; + + client.pause(); + process.nextTick(function () { + client.resume(); + }); + }); + + + client.on('close', function() { + server.close(); + clearTimeout(timeout); + }); +}); + + +var timeout = setTimeout(function() { + process.exit(1); +}, 10*1000); + + +process.on('exit', function() { + assert.equal(1, connections); + assert.equal(body.length, recvCount); +}); |