molnarg / node-http2

An HTTP/2 client and server implementation for node.js
MIT License
1.78k stars 186 forks source link

Tests fail when node version >= 6.3.0 #233

Open flowmemo opened 7 years ago

flowmemo commented 7 years ago

Tests fail when node version >= 6.3.0. (It works well in 6.2.2)

Logs about failed tests:

  4 failing

  1) http.js test scenario request and response with trailers should work as expected:
     Uncaught Error: Uncaught, unspecified "error" event. (PROTOCOL_ERROR)
      at Stream._writeUpstream (lib/protocol/stream.js:246:12)
      at Connection._receive (lib/protocol/connection.js:393:19)
      at Connection._write (lib/protocol/flow.js:101:10)
      at doWrite (_stream_writable.js:307:12)
      at writeOrBuffer (_stream_writable.js:293:5)
      at Connection.Writable.write (_stream_writable.js:220:11)
      at Decompressor.ondata (_stream_readable.js:556:20)
      at readableAddChunk (_stream_readable.js:177:18)
      at Decompressor.Readable.push (_stream_readable.js:135:10)
      at Decompressor.Transform.push (_stream_transform.js:128:32)
      at Decompressor._transform (lib/protocol/compressor.js:1327:10)
      at Decompressor.Transform._read (_stream_transform.js:167:10)
      at Decompressor.Transform._write (_stream_transform.js:155:12)
      at doWrite (_stream_writable.js:307:12)
      at writeOrBuffer (_stream_writable.js:293:5)
      at Decompressor.Writable.write (_stream_writable.js:220:11)
      at Deserializer.ondata (_stream_readable.js:556:20)
      at readableAddChunk (_stream_readable.js:177:18)
      at Deserializer.Readable.push (_stream_readable.js:135:10)
      at Deserializer.Transform.push (_stream_transform.js:128:32)
      at Deserializer._transform (lib/protocol/framer.js:136:16)
      at Deserializer.Transform._read (_stream_transform.js:167:10)
      at Deserializer.Transform._write (_stream_transform.js:155:12)
      at doWrite (_stream_writable.js:307:12)
      at writeOrBuffer (_stream_writable.js:293:5)
      at Deserializer.Writable.write (_stream_writable.js:220:11)
      at Endpoint._write (lib/protocol/endpoint.js:213:22)
      at doWrite (_stream_writable.js:307:12)
      at writeOrBuffer (_stream_writable.js:293:5)
      at Endpoint.Writable.write (_stream_writable.js:220:11)
      at TLSSocket.ondata (_stream_readable.js:556:20)
      at readableAddChunk (_stream_readable.js:177:18)
      at TLSSocket.Readable.push (_stream_readable.js:135:10)
      at TLSWrap.onread (net.js:542:20)

  2) stream.js test scenario answering request should trigger the appropriate state transitions and outgoing frames:

      Uncaught AssertionError: expected {} to deeply equal { END_STREAM: true }
      + expected - actual

      -{}
      +{
      +  "END_STREAM": true
      +}

      at Assertion.assertEqual (node_modules/chai/lib/chai/core/assertions.js:485:19)
      at Assertion.ctx.(anonymous function) [as equals] (node_modules/chai/lib/chai/utils/addMethod.js:41:25)
      at test/stream.js:82:57
      at Array.forEach (native)
      at Timeout.check [as _onTimeout] (test/stream.js:78:12)

  3) stream.js test scenario sending push stream should trigger the appropriate state transitions and outgoing frames:

      Uncaught AssertionError: expected {} to deeply equal { END_STREAM: true }
      + expected - actual

      -{}
      +{
      +  "END_STREAM": true
      +}

      at Assertion.assertEqual (node_modules/chai/lib/chai/core/assertions.js:485:19)
      at Assertion.ctx.(anonymous function) [as equals] (node_modules/chai/lib/chai/utils/addMethod.js:41:25)
      at test/stream.js:82:57
      at Array.forEach (native)
      at Timeout.check [as _onTimeout] (test/stream.js:78:12)

  4) stream.js test scenario receiving push stream should trigger the appropriate state transitions and outgoing frames:

      Uncaught AssertionError: expected {} to deeply equal { END_STREAM: true }
      + expected - actual

      -{}
      +{
      +  "END_STREAM": true
      +}

      at Assertion.assertEqual (node_modules/chai/lib/chai/core/assertions.js:485:19)
      at Assertion.ctx.(anonymous function) [as equals] (node_modules/chai/lib/chai/utils/addMethod.js:41:25)
      at test/stream.js:82:57
      at Array.forEach (native)
      at Timeout.check [as _onTimeout] (test/stream.js:78:12)

I find this change in node 6.3.0's changelog

stream:` Improved readable.read() performance by up to 70%. (Brian White) #7077 I guess this change could be the reason.