summaryrefslogtreecommitdiff
path: root/test/parallel/test-http2-client-onconnect-errors.js
diff options
context:
space:
mode:
authorJames M Snell <jasnell@gmail.com>2017-11-15 10:55:31 -0800
committerAnna Henningsen <anna@addaleax.net>2017-11-21 12:47:54 +0100
commit69e6c5a212622ec15b8c2cf904480b6582c6c3a5 (patch)
treea6368dc8e37112d82ceb8b4dff6120b4bf027429 /test/parallel/test-http2-client-onconnect-errors.js
parent2ba93f6ed7c96684ed7aeaa32db59ae8e5885f03 (diff)
downloadandroid-node-v8-69e6c5a212622ec15b8c2cf904480b6582c6c3a5.tar.gz
android-node-v8-69e6c5a212622ec15b8c2cf904480b6582c6c3a5.tar.bz2
android-node-v8-69e6c5a212622ec15b8c2cf904480b6582c6c3a5.zip
http2: major update to internals
This update does several significant things: 1. It eliminates the base Nghttp2* classes and folds those in to node::http2::Http2Session and node::http2::Http2Stream 2. It makes node::http2::Http2Stream a StreamBase instance and sends that out to JS-land to act as the [kHandle] for the JavaScript Http2Stream class. 3. It shifts some of the callbacks from C++ off of the JavaScript Http2Session class to the Http2Stream class. 4. It refactors the data provider structure for FD and Stream based sending to help encapsulate those functions easier 5. It streamlines some of the functions at the C++ layer to eliminate now unnecessary redirections 6. It cleans up node_http2.cc for better readability and maintainability 7. It refactors some of the debug output 8. Because Http2Stream instances are now StreamBases, they are now also trackable using async-hooks 9. The Stream::OnRead algorithm has been simplified with a couple bugs fixed. 10. I've eliminated node_http2_core.h and node_http2_core-inl.h 11. Detect invalid handshake a report protocol error to session 12. Refactor out of memory error, improve other errors 13. Add Http2Session.prototype.ping PR-URL: https://github.com/nodejs/node/pull/17105 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Sebastiaan Deckers <sebdeckers83@gmail.com>
Diffstat (limited to 'test/parallel/test-http2-client-onconnect-errors.js')
-rw-r--r--test/parallel/test-http2-client-onconnect-errors.js28
1 files changed, 4 insertions, 24 deletions
diff --git a/test/parallel/test-http2-client-onconnect-errors.js b/test/parallel/test-http2-client-onconnect-errors.js
index 51ceb83677..0800775365 100644
--- a/test/parallel/test-http2-client-onconnect-errors.js
+++ b/test/parallel/test-http2-client-onconnect-errors.js
@@ -11,28 +11,17 @@ if (!common.hasCrypto)
const http2 = require('http2');
// tests error handling within requestOnConnect
-// - NGHTTP2_ERR_NOMEM (should emit session error)
// - NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE (should emit session error)
// - NGHTTP2_ERR_INVALID_ARGUMENT (should emit stream error)
// - every other NGHTTP2 error from binding (should emit session error)
const specificTestKeys = [
- 'NGHTTP2_ERR_NOMEM',
'NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE',
'NGHTTP2_ERR_INVALID_ARGUMENT'
];
const specificTests = [
{
- ngError: constants.NGHTTP2_ERR_NOMEM,
- error: {
- code: 'ERR_OUTOFMEMORY',
- type: Error,
- message: 'Out of memory'
- },
- type: 'session'
- },
- {
ngError: constants.NGHTTP2_ERR_STREAM_ID_NOT_AVAILABLE,
error: {
code: 'ERR_HTTP2_OUT_OF_STREAMS',
@@ -40,7 +29,7 @@ const specificTests = [
message: 'No stream ID is available because ' +
'maximum stream ID has been reached'
},
- type: 'session'
+ type: 'stream'
},
{
ngError: constants.NGHTTP2_ERR_INVALID_ARGUMENT,
@@ -72,24 +61,15 @@ const tests = specificTests.concat(genericTests);
let currentError;
// mock submitRequest because we only care about testing error handling
-Http2Session.prototype.submitRequest = () => currentError;
+Http2Session.prototype.request = () => currentError;
const server = http2.createServer(common.mustNotCall());
server.listen(0, common.mustCall(() => runTest(tests.shift())));
function runTest(test) {
- const port = server.address().port;
- const url = `http://localhost:${port}`;
- const headers = {
- ':path': '/',
- ':method': 'POST',
- ':scheme': 'http',
- ':authority': `localhost:${port}`
- };
-
- const client = http2.connect(url);
- const req = client.request(headers);
+ const client = http2.connect(`http://localhost:${server.address().port}`);
+ const req = client.request({ ':method': 'POST' });
currentError = test.ngError;
req.resume();