diff options
author | James M Snell <jasnell@gmail.com> | 2017-07-17 10:29:42 -0700 |
---|---|---|
committer | James M Snell <jasnell@gmail.com> | 2017-08-04 12:55:58 -0700 |
commit | b1e055696fbcd4b8829630d0be787cfc74fe913b (patch) | |
tree | d0d5be3a2e46ff5a38e139eb519e3aa5322a2d71 /test/parallel/test-http2-create-client-connect.js | |
parent | e71e71b5138c3dfee080f4215dd957dc7a6cbdaf (diff) | |
download | android-node-v8-b1e055696fbcd4b8829630d0be787cfc74fe913b.tar.gz android-node-v8-b1e055696fbcd4b8829630d0be787cfc74fe913b.tar.bz2 android-node-v8-b1e055696fbcd4b8829630d0be787cfc74fe913b.zip |
http2: add tests and benchmarks
PR-URL: https://github.com/nodejs/node/pull/14239
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'test/parallel/test-http2-create-client-connect.js')
-rw-r--r-- | test/parallel/test-http2-create-client-connect.js | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/test/parallel/test-http2-create-client-connect.js b/test/parallel/test-http2-create-client-connect.js new file mode 100644 index 0000000000..8173dc3d08 --- /dev/null +++ b/test/parallel/test-http2-create-client-connect.js @@ -0,0 +1,88 @@ +// Flags: --expose-http2 +'use strict'; + +// Tests http2.connect() + +const common = require('../common'); +const fs = require('fs'); +const h2 = require('http2'); +const path = require('path'); +const url = require('url'); +const URL = url.URL; + +{ + const server = h2.createServer(); + server.listen(0); + + server.on('listening', common.mustCall(function() { + const port = this.address().port; + + const items = [ + [`http://localhost:${port}`], + [new URL(`http://localhost:${port}`)], + [url.parse(`http://localhost:${port}`)], + [{port: port}, {protocol: 'http:'}], + [{port: port, hostname: '127.0.0.1'}, {protocol: 'http:'}] + ]; + + let count = items.length; + + const maybeClose = common.mustCall((client) => { + client.destroy(); + if (--count === 0) { + setImmediate(() => server.close()); + } + }, items.length); + + items.forEach((i) => { + const client = + h2.connect.apply(null, i) + .on('connect', common.mustCall(() => maybeClose(client))); + }); + + // Will fail because protocol does not match the server. + h2.connect({port: port, protocol: 'https:'}) + .on('socketError', common.mustCall()); + })); +} + + +{ + + const options = { + key: fs.readFileSync(path.join(common.fixturesDir, 'keys/agent3-key.pem')), + cert: fs.readFileSync(path.join(common.fixturesDir, 'keys/agent3-cert.pem')) + }; + + const server = h2.createSecureServer(options); + server.listen(0); + + server.on('listening', common.mustCall(function() { + const port = this.address().port; + + const opts = {rejectUnauthorized: false}; + + const items = [ + [`https://localhost:${port}`, opts], + [new URL(`https://localhost:${port}`), opts], + [url.parse(`https://localhost:${port}`), opts], + [{port: port, protocol: 'https:'}, opts], + [{port: port, hostname: '127.0.0.1', protocol: 'https:'}, opts] + ]; + + let count = items.length; + + const maybeClose = common.mustCall((client) => { + client.destroy(); + if (--count === 0) { + setImmediate(() => server.close()); + } + }, items.length); + + items.forEach((i) => { + const client = + h2.connect.apply(null, i) + .on('connect', common.mustCall(() => maybeClose(client))); + }); + })); +} |