summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/simple/test-tls-throttle.js61
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);
+});