| var common = require('../common.js'); |
| var bench = common.createBenchmark(main, { |
| dur: [5], |
| type: ['buf', 'asc', 'utf'], |
| size: [2, 1024, 1024 * 1024] |
| }); |
| |
| var dur, type, encoding, size; |
| var server; |
| |
| var path = require('path'); |
| var fs = require('fs'); |
| var cert_dir = path.resolve(__dirname, '../../test/fixtures'); |
| var options; |
| var tls = require('tls'); |
| |
| function main(conf) { |
| dur = +conf.dur; |
| type = conf.type; |
| size = +conf.size; |
| |
| var chunk; |
| switch (type) { |
| case 'buf': |
| chunk = new Buffer(size); |
| chunk.fill('b'); |
| break; |
| case 'asc': |
| chunk = new Array(size + 1).join('a'); |
| encoding = 'ascii'; |
| break; |
| case 'utf': |
| chunk = new Array(size/2 + 1).join('ΓΌ'); |
| encoding = 'utf8'; |
| break; |
| default: |
| throw new Error('invalid type'); |
| } |
| |
| options = { key: fs.readFileSync(cert_dir + '/test_key.pem'), |
| cert: fs.readFileSync(cert_dir + '/test_cert.pem'), |
| ca: [ fs.readFileSync(cert_dir + '/test_ca.pem') ] }; |
| |
| server = tls.createServer(options, onConnection); |
| setTimeout(done, dur * 1000); |
| server.listen(common.PORT, function() { |
| var opt = { port: common.PORT, rejectUnauthorized: false }; |
| var conn = tls.connect(opt, function() { |
| bench.start(); |
| conn.on('drain', write); |
| write(); |
| }); |
| |
| function write() { |
| var i = 0; |
| while (false !== conn.write(chunk, encoding)); |
| } |
| }); |
| |
| var received = 0; |
| function onConnection(conn) { |
| conn.on('data', function(chunk) { |
| received += chunk.length; |
| }); |
| } |
| |
| function done() { |
| var mbits = (received * 8) / (1024 * 1024); |
| bench.end(mbits); |
| conn.destroy(); |
| server.close(); |
| } |
| } |
| |