HTTP2 RFC7540 and RFC754 Test


#1

I had used h2spec tool to test http2 rfc7540 for haproxy, but some case is not right.
So how can I do if I want to enable h2 in the haproxy?
Haproxy tested is 1.8.3 and the generic test result is:

Generic tests for HTTP/2 server
  1. Starting HTTP/2
         [send] Raw Data (0x505249202a20485454502f322e300d0a0d0a534d0d0a0d0a)
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
         [recv] Error: read tcp 30.40.53.15:62726->106.14.125.167:9443: read: connection reset by peer
    × 1: Sends a client connection preface
      -> The endpoint MUST accept client connection preface.
         Expected: SETTINGS Frame (flags:0x00)
           Actual: Error: read tcp 30.40.53.15:62726->106.14.125.167:9443: read: connection reset by peer

  2. Streams and Multiplexing
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 1: Sends a PRIORITY frame on idle stream
    Error: read tcp 30.40.53.15:62727->106.14.125.167:9443: read: connection reset by peer
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 2: Sends a WINDOW_UPDATE frame on half-closed (remote) stream
    Error: EOF
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 3: Sends a PRIORITY frame on half-closed (remote) stream
    Error: EOF
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 4: Sends a RST_STREAM frame on half-closed (remote) stream
    Error: read tcp 30.40.53.15:62730->106.14.125.167:9443: read: connection reset by peer
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 5: Sends a PRIORITY frame on closed stream
    Error: read tcp 30.40.53.15:62731->106.14.125.167:9443: read: connection reset by peer

  3. Frame Definitions
    3.1. DATA
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a DATA frame
      Error: read tcp 30.40.53.15:62732->106.14.125.167:9443: read: connection reset by peer
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 2: Sends multiple DATA frames
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 3: Sends a DATA frame with padding
      Error: EOF

    3.2. HEADERS
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a HEADERS frame
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 2: Sends a HEADERS frame with padding
      Error: read tcp 30.40.53.15:62736->106.14.125.167:9443: read: connection reset by peer
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 3: Sends a HEADERS frame with priority
      Error: EOF

    3.3. PRIORITY
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a PRIORITY frame with priority 1
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 2: Sends a PRIORITY frame with priority 256
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 3: Sends a PRIORITY frame with stream dependency
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 4: Sends a PRIORITY frame with exclusive
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 5: Sends a PRIORITY frame for an idle stream, then send a HEADER frame for a lower stream ID
      Error: EOF

    3.4. RST_STREAM
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a RST_STREAM frame
      Error: EOF

    3.5. SETTINGS
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a SETTINGS frame
      Error: EOF

    3.7. PING
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a PING frame
      Error: EOF

    3.8. GOAWAY
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a GOAWAY frame
      Error: EOF

    3.9. WINDOW_UPDATE
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a WINDOW_UPDATE frame with stream ID 0
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 2: Sends a WINDOW_UPDATE frame with stream ID 1
      Error: read tcp 30.40.53.15:62748->106.14.125.167:9443: read: connection reset by peer

    3.10. CONTINUATION
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a CONTINUATION frame
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 2: Sends multiple CONTINUATION frames
      Error: EOF

  4. HTTP Message Exchanges
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 1: Sends a GET request
    Error: EOF
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 2: Sends a HEAD request
    Error: EOF
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 3: Sends a POST request
    Error: EOF
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 4: Sends a POST request with trailers
    Error: EOF

  5. HPACK
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 1: Sends a indexed header field representation
    Error: EOF
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 2: Sends a literal header field with incremental indexing - indexed name
    Error: EOF
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 3: Sends a literal header field with incremental indexing - indexed name (with Huffman coding)
    Error: EOF
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 4: Sends a literal header field with incremental indexing - new name
    Error: EOF
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 5: Sends a literal header field with incremental indexing - new name (with Huffman coding)
    Error: EOF
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 6: Sends a literal header field without indexing - indexed name
    Error: EOF
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 7: Sends a literal header field without indexing - indexed name (with Huffman coding)
    Error: EOF
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 8: Sends a literal header field without indexing - new name
    Error: EOF
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 9: Sends a literal header field without indexing - new name (huffman encoded)
    Error: EOF
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 10: Sends a literal header field never indexed - indexed name
    Error: EOF
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 11: Sends a literal header field never indexed - indexed name (huffman encoded)
    Error: EOF
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 12: Sends a literal header field never indexed - new name
    Error: EOF
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 13: Sends a literal header field never indexed - new name (huffman encoded)
    Error: read tcp 30.40.53.15:62767->106.14.125.167:9443: read: connection reset by peer
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 14: Sends a dynamic table size update
    Error: EOF
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 15: Sends multiple dynamic table size update
    Error: EOF

Hypertext Transfer Protocol Version 2 (HTTP/2)
  3. Starting HTTP/2
    3.5. HTTP/2 Connection Preface
           [send] Raw Data (0x505249202a20485454502f322e300d0a0d0a534d0d0a0d0a)
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
           [recv] Error: read tcp 30.40.53.15:62770->106.14.125.167:9443: read: connection reset by peer
      × 1: Sends client connection preface
        -> The server connection preface MUST be the first frame the server sends in the HTTP/2 connection.
           Expected: SETTINGS Frame (flags:0x00)
             Actual: Error: read tcp 30.40.53.15:62770->106.14.125.167:9443: read: connection reset by peer
           [send] Raw Data (0x494e56414c494420434f4e4e454354494f4e20505245464143450d0a0d0a)
           [recv] Connection closed
      ✔ 2: Sends invalid connection preface

  4. HTTP Frames
    4.1. Frame Format
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a frame with unknown type
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 2: Sends a frame with undefined flag
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 3: Sends a frame with reserved field bit
      Error: EOF

    4.2. Frame Size
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a DATA frame with 2^14 octets in length
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 2: Sends a large size DATA frame that exceeds the SETTINGS_MAX_FRAME_SIZE
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 3: Sends a large size HEADERS frame that exceeds the SETTINGS_MAX_FRAME_SIZE
      Error: EOF

    4.3. Header Compression and Decompression
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends invalid header block fragment
      Error: read tcp 30.40.53.15:62778->106.14.125.167:9443: read: connection reset by peer
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 2: Sends a PRIORITY frame while sending the header blocks
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 3: Sends a HEADERS frame to another stream while sending the header blocks
      Error: EOF

  5. Streams and Multiplexing
    5.1. Stream States
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: idle: Sends a DATA frame
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 2: idle: Sends a RST_STREAM frame
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 3: idle: Sends a WINDOW_UPDATE frame
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 4: idle: Sends a CONTINUATION frame
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 5: half closed (remote): Sends a DATA frame
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 6: half closed (remote): Sends a HEADERS frame
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 7: half closed (remote): Sends a CONTINUATION frame
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 8: closed: Sends a DATA frame after sending RST_STREAM frame
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 9: closed: Sends a HEADERS frame after sending RST_STREAM frame
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 10: closed: Sends a CONTINUATION frame after sending RST_STREAM frame
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 11: closed: Sends a DATA frame
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 12: closed: Sends a HEADERS frame
      Error: read tcp 30.40.53.15:62792->106.14.125.167:9443: read: connection reset by peer
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 13: closed: Sends a CONTINUATION frame
      Error: EOF

      5.1.1. Stream Identifiers
             [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
        × 1: Sends even-numbered stream identifier
        Error: EOF
             [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
        × 2: Sends stream identifier that is numerically smaller than previous
        Error: EOF

      5.1.2. Stream Concurrency
             [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
        × 1: Sends HEADERS frames that causes their advertised concurrent stream limit to be exceeded
        Error: EOF

    5.3. Stream Priority
      5.3.1. Stream Dependencies
             [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
        × 1: Sends HEADERS frame that depend on itself
        Error: EOF
             [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
        × 2: Sends PRIORITY frame that depend on itself
        Error: EOF

    5.4. Error Handling
      5.4.1. Connection Error Handling
             [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
        × 1: Sends an invalid PING frame for connection close
        Error: EOF
             [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
        × 2: Sends an invalid PING frame to receive GOAWAY frame
        Error: read tcp 30.40.53.15:62800->106.14.125.167:9443: read: connection reset by peer

    5.5. Extending HTTP/2
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends an unknown extension frame
      Error: read tcp 30.40.53.15:62801->106.14.125.167:9443: read: connection reset by peer
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 2: Sends an unknown extension frame in the middle of a header block
      Error: read tcp 30.40.53.15:62802->106.14.125.167:9443: read: connection reset by peer

  6. Frame Definitions
    6.1. DATA
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a DATA frame with 0x0 stream identifier
      Error: read tcp 30.40.53.15:62803->106.14.125.167:9443: read: connection reset by peer
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 2: Sends a DATA frame on the stream that is not in "open" or "half-closed (local)" state
      Error: read tcp 30.40.53.15:62804->106.14.125.167:9443: read: connection reset by peer
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 3: Sends a DATA frame with invalid pad length
      Error: EOF

    6.2. HEADERS
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a HEADERS frame without the END_HEADERS flag, and a PRIORITY frame
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 2: Sends a HEADERS frame to another stream while sending a HEADERS frame
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 3: Sends a HEADERS frame with 0x0 stream identifier
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 4: Sends a HEADERS frame with invalid pad length
      Error: EOF

    6.3. PRIORITY
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a PRIORITY frame with 0x0 stream identifier
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 2: Sends a PRIORITY frame with a length other than 5 octets
      Error: EOF

    6.4. RST_STREAM
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a RST_STREAM frame with 0x0 stream identifier
      Error: read tcp 30.40.53.15:62812->106.14.125.167:9443: read: connection reset by peer
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 2: Sends a RST_STREAM frame on a idle stream
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 3: Sends a RST_STREAM frame with a length other than 4 octets
      Error: EOF

    6.5. SETTINGS
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a SETTINGS frame with ACK flag and payload
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 2: Sends a SETTINGS frame with a stream identifier other than 0x0
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 3: Sends a SETTINGS frame with a length other than a multiple of 6 octets
      Error: EOF

      6.5.2. Defined SETTINGS Parameters
             [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
        × 1: SETTINGS_ENABLE_PUSH (0x2): Sends the value other than 0 or 1
        Error: EOF
             [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
        × 2: SETTINGS_INITIAL_WINDOW_SIZE (0x4): Sends the value above the maximum flow control window size
        Error: EOF
             [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
        × 3: SETTINGS_MAX_FRAME_SIZE (0x5): Sends the value below the initial value
        Error: read tcp 30.40.53.15:62820->106.14.125.167:9443: read: connection reset by peer
             [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
        × 4: SETTINGS_MAX_FRAME_SIZE (0x5): Sends the value above the maximum allowed frame size
        Error: read tcp 30.40.53.15:62821->106.14.125.167:9443: read: connection reset by peer
             [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
        × 5: Sends a SETTINGS frame with unknown identifier
        Error: EOF

      6.5.3. Settings Synchronization
             [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
        × 1: Sends multiple values of SETTINGS_INITIAL_WINDOW_SIZE
        Error: EOF
             [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
        × 2: Sends a SETTINGS frame without ACK flag
        Error: read tcp 30.40.53.15:62825->106.14.125.167:9443: read: connection reset by peer

    6.7. PING
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a PING frame
      Error: read tcp 30.40.53.15:62826->106.14.125.167:9443: read: connection reset by peer
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 2: Sends a PING frame with ACK
      Error: read tcp 30.40.53.15:62827->106.14.125.167:9443: read: connection reset by peer
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 3: Sends a PING frame with a stream identifier field value other than 0x0
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 4: Sends a PING frame with a length field value other than 8
      Error: read tcp 30.40.53.15:62829->106.14.125.167:9443: read: connection reset by peer

    6.8. GOAWAY
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a GOAWAY frame with a stream identifier other than 0x0
      Error: EOF

    6.9. WINDOW_UPDATE
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a WINDOW_UPDATE frame with a flow control window increment of 0
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 2: Sends a WINDOW_UPDATE frame with a flow control window increment of 0 on a stream
      Error: read tcp 30.40.53.15:62832->106.14.125.167:9443: read: connection reset by peer
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 3: Sends a WINDOW_UPDATE frame with a length other than 4 octets
      Error: EOF

      6.9.1. The Flow-Control Window
             [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
        × 1: Sends SETTINGS frame to set the initial window size to 1 and sends HEADERS frame
        Error: EOF
             [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
        × 2: Sends multiple WINDOW_UPDATE frames increasing the flow control window to above 2^31-1
        Error: EOF
             [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
        × 3: Sends multiple WINDOW_UPDATE frames increasing the flow control window to above 2^31-1 on a stream
        Error: EOF

      6.9.2. Initial Flow-Control Window Size
             [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
        × 1: Changes SETTINGS_INITIAL_WINDOW_SIZE after sending HEADERS frame
        Error: read tcp 30.40.53.15:62839->106.14.125.167:9443: read: connection reset by peer
             [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
        × 2: Sends a SETTINGS frame for window size to be negative
        Error: EOF
             [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
        × 3: Sends a SETTINGS_INITIAL_WINDOW_SIZE settings with an exceeded maximum window size value
        Error: EOF

    6.10. CONTINUATION
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends multiple CONTINUATION frames preceded by a HEADERS frame
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 2: Sends a CONTINUATION frame followed by any frame other than CONTINUATION
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 3: Sends a CONTINUATION frame with 0x0 stream identifier
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 4: Sends a CONTINUATION frame preceded by a HEADERS frame with END_HEADERS flag
      Error: read tcp 30.40.53.15:62846->106.14.125.167:9443: read: connection reset by peer
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 5: Sends a CONTINUATION frame preceded by a CONTINUATION frame with END_HEADERS flag
      Error: read tcp 30.40.53.15:62847->106.14.125.167:9443: read: connection reset by peer
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 6: Sends a CONTINUATION frame preceded by a DATA frame
      Error: EOF

  7. Error Codes
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 1: Sends a GOAWAY frame with unknown error code
    Error: read tcp 30.40.53.15:62849->106.14.125.167:9443: read: connection reset by peer
         [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
    × 2: Sends a RST_STREAM frame with unknown error code
    Error: EOF

#2
  8. HTTP Message Exchanges
    8.1. HTTP Request/Response Exchange
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a second HEADERS frame without the END_STREAM flag
      Error: EOF

      8.1.2. HTTP Header Fields
             [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
        × 1: Sends a HEADERS frame that contains the header field name in uppercase letters
        Error: EOF

        8.1.2.1. Pseudo-Header Fields
               [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
          × 1: Sends a HEADERS frame that contains a unknown pseudo-header field
          Error: EOF
               [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
          × 2: Sends a HEADERS frame that contains the pseudo-header field defined for response
          Error: EOF
               [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
          × 3: Sends a HEADERS frame that contains a pseudo-header field as trailers
          Error: EOF
               [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
          × 4: Sends a HEADERS frame that contains a pseudo-header field that appears in a header block after a regular header field
          Error: EOF

        8.1.2.2. Connection-Specific Header Fields
               [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
          × 1: Sends a HEADERS frame that contains the connection-specific header field
          Error: EOF
               [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
          × 2: Sends a HEADERS frame that contains the TE header field with any value other than "trailers"
          Error: EOF

        8.1.2.3. Request Pseudo-Header Fields
               [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
          × 1: Sends a HEADERS frame with empty ":path" pseudo-header field
          Error: EOF
               [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
          × 2: Sends a HEADERS frame that omits ":method" pseudo-header field
          Error: EOF
               [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
          × 3: Sends a HEADERS frame that omits ":scheme" pseudo-header field
          Error: read tcp 30.40.53.15:62861->106.14.125.167:9443: read: connection reset by peer
               [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
          × 4: Sends a HEADERS frame that omits ":path" pseudo-header field
          Error: EOF
               [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
          × 5: Sends a HEADERS frame with duplicated ":method" pseudo-header field
          Error: EOF
               [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
          × 6: Sends a HEADERS frame with duplicated ":scheme" pseudo-header field
          Error: EOF
               [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
          × 7: Sends a HEADERS frame with duplicated ":method" pseudo-header field
          Error: EOF

        8.1.2.6. Malformed Requests and Responses
               [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
          × 1: Sends a HEADERS frame with the "content-length" header field which does not equal the DATA frame payload length
          Error: EOF
               [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
          × 2: Sends a HEADERS frame with the "content-length" header field which does not equal the sum of the multiple DATA frames payload length
          Error: EOF

    8.2. Server Push
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a PUSH_PROMISE frame
      Error: EOF

HPACK: Header Compression for HTTP/2
  2. Compression Process Overview
    2.3. Indexing Tables
      2.3.3. Index Address Space
             [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
        × 1: Sends a header field representation with invalid index
        Error: EOF

  4. Dynamic Table Management
    4.2. Maximum Table Size
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a dynamic table size update at the end of header block
      Error: EOF

  5. Primitive Type Representations
    5.2. String Literal Representation
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a Huffman-encoded string literal representation with padding longer than 7 bits
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 2: Sends a Huffman-encoded string literal representation padded by zero
      Error: EOF
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 3: Sends a Huffman-encoded string literal representation containing the EOS symbol
      Error: EOF

  6. Binary Format
    6.1. Indexed Header Field Representation
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a indexed header field representation with index 0
      Error: EOF

    6.3. Dynamic Table Size Update
           [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0)
      × 1: Sends a dynamic table size update larger than the value of SETTINGS_HEADER_TABLE_SIZE
      Error: EOF

Failures:

Generic tests for HTTP/2 server
  1. Starting HTTP/2
    × 1: Sends a client connection preface
      -> The endpoint MUST accept client connection preface.
         Expected: SETTINGS Frame (flags:0x00)
           Actual: Error: read tcp 30.40.53.15:62726->106.14.125.167:9443: read: connection reset by peer

  2. Streams and Multiplexing
    × 1: Sends a PRIORITY frame on idle stream
    Error: read tcp 30.40.53.15:62727->106.14.125.167:9443: read: connection reset by peer
    × 2: Sends a WINDOW_UPDATE frame on half-closed (remote) stream
    Error: EOF
    × 3: Sends a PRIORITY frame on half-closed (remote) stream
    Error: EOF
    × 4: Sends a RST_STREAM frame on half-closed (remote) stream
    Error: read tcp 30.40.53.15:62730->106.14.125.167:9443: read: connection reset by peer
    × 5: Sends a PRIORITY frame on closed stream
    Error: read tcp 30.40.53.15:62731->106.14.125.167:9443: read: connection reset by peer

  3. Frame Definitions
    3.1. DATA
      × 1: Sends a DATA frame
      Error: read tcp 30.40.53.15:62732->106.14.125.167:9443: read: connection reset by peer
      × 2: Sends multiple DATA frames
      Error: EOF
      × 3: Sends a DATA frame with padding
      Error: EOF

    3.2. HEADERS
      × 1: Sends a HEADERS frame
      Error: EOF
      × 2: Sends a HEADERS frame with padding
      Error: read tcp 30.40.53.15:62736->106.14.125.167:9443: read: connection reset by peer
      × 3: Sends a HEADERS frame with priority
      Error: EOF

    3.3. PRIORITY
      × 1: Sends a PRIORITY frame with priority 1
      Error: EOF
      × 2: Sends a PRIORITY frame with priority 256
      Error: EOF
      × 3: Sends a PRIORITY frame with stream dependency
      Error: EOF
      × 4: Sends a PRIORITY frame with exclusive
      Error: EOF
      × 5: Sends a PRIORITY frame for an idle stream, then send a HEADER frame for a lower stream ID
      Error: EOF

    3.4. RST_STREAM
      × 1: Sends a RST_STREAM frame
      Error: EOF

    3.5. SETTINGS
      × 1: Sends a SETTINGS frame
      Error: EOF

    3.7. PING
      × 1: Sends a PING frame
      Error: EOF

    3.8. GOAWAY
      × 1: Sends a GOAWAY frame
      Error: EOF

    3.9. WINDOW_UPDATE
      × 1: Sends a WINDOW_UPDATE frame with stream ID 0
      Error: EOF
      × 2: Sends a WINDOW_UPDATE frame with stream ID 1
      Error: read tcp 30.40.53.15:62748->106.14.125.167:9443: read: connection reset by peer

    3.10. CONTINUATION
      × 1: Sends a CONTINUATION frame
      Error: EOF
      × 2: Sends multiple CONTINUATION frames
      Error: EOF

  4. HTTP Message Exchanges
    × 1: Sends a GET request
    Error: EOF
    × 2: Sends a HEAD request
    Error: EOF
    × 3: Sends a POST request
    Error: EOF
    × 4: Sends a POST request with trailers
    Error: EOF

  5. HPACK
    × 1: Sends a indexed header field representation
    Error: EOF
    × 2: Sends a literal header field with incremental indexing - indexed name
    Error: EOF
    × 3: Sends a literal header field with incremental indexing - indexed name (with Huffman coding)
    Error: EOF
    × 4: Sends a literal header field with incremental indexing - new name
    Error: EOF
    × 5: Sends a literal header field with incremental indexing - new name (with Huffman coding)
    Error: EOF
    × 6: Sends a literal header field without indexing - indexed name
    Error: EOF
    × 7: Sends a literal header field without indexing - indexed name (with Huffman coding)
    Error: EOF
    × 8: Sends a literal header field without indexing - new name
    Error: EOF
    × 9: Sends a literal header field without indexing - new name (huffman encoded)
    Error: EOF
    × 10: Sends a literal header field never indexed - indexed name
    Error: EOF
    × 11: Sends a literal header field never indexed - indexed name (huffman encoded)
    Error: EOF
    × 12: Sends a literal header field never indexed - new name
    Error: EOF
    × 13: Sends a literal header field never indexed - new name (huffman encoded)
    Error: read tcp 30.40.53.15:62767->106.14.125.167:9443: read: connection reset by peer
    × 14: Sends a dynamic table size update
    Error: EOF
    × 15: Sends multiple dynamic table size update
    Error: EOF

Hypertext Transfer Protocol Version 2 (HTTP/2)
  3. Starting HTTP/2
    3.5. HTTP/2 Connection Preface
      × 1: Sends client connection preface
        -> The server connection preface MUST be the first frame the server sends in the HTTP/2 connection.
           Expected: SETTINGS Frame (flags:0x00)
             Actual: Error: read tcp 30.40.53.15:62770->106.14.125.167:9443: read: connection reset by peer

  4. HTTP Frames
    4.1. Frame Format
      × 1: Sends a frame with unknown type
      Error: EOF
      × 2: Sends a frame with undefined flag
      Error: EOF
      × 3: Sends a frame with reserved field bit
      Error: EOF

    4.2. Frame Size
      × 1: Sends a DATA frame with 2^14 octets in length
      Error: EOF
      × 2: Sends a large size DATA frame that exceeds the SETTINGS_MAX_FRAME_SIZE
      Error: EOF
      × 3: Sends a large size HEADERS frame that exceeds the SETTINGS_MAX_FRAME_SIZE
      Error: EOF

    4.3. Header Compression and Decompression
      × 1: Sends invalid header block fragment
      Error: read tcp 30.40.53.15:62778->106.14.125.167:9443: read: connection reset by peer
      × 2: Sends a PRIORITY frame while sending the header blocks
      Error: EOF
      × 3: Sends a HEADERS frame to another stream while sending the header blocks
      Error: EOF

  5. Streams and Multiplexing
    5.1. Stream States
      × 1: idle: Sends a DATA frame
      Error: EOF
      × 2: idle: Sends a RST_STREAM frame
      Error: EOF
      × 3: idle: Sends a WINDOW_UPDATE frame
      Error: EOF
      × 4: idle: Sends a CONTINUATION frame
      Error: EOF
      × 5: half closed (remote): Sends a DATA frame
      Error: EOF
      × 6: half closed (remote): Sends a HEADERS frame
      Error: EOF
      × 7: half closed (remote): Sends a CONTINUATION frame
      Error: EOF
      × 8: closed: Sends a DATA frame after sending RST_STREAM frame
      Error: EOF
      × 9: closed: Sends a HEADERS frame after sending RST_STREAM frame
      Error: EOF
      × 10: closed: Sends a CONTINUATION frame after sending RST_STREAM frame
      Error: EOF
      × 11: closed: Sends a DATA frame
      Error: EOF
      × 12: closed: Sends a HEADERS frame
      Error: read tcp 30.40.53.15:62792->106.14.125.167:9443: read: connection reset by peer
      × 13: closed: Sends a CONTINUATION frame
      Error: EOF

      5.1.1. Stream Identifiers
        × 1: Sends even-numbered stream identifier
        Error: EOF
        × 2: Sends stream identifier that is numerically smaller than previous
        Error: EOF

      5.1.2. Stream Concurrency
        × 1: Sends HEADERS frames that causes their advertised concurrent stream limit to be exceeded
        Error: EOF

    5.3. Stream Priority
      5.3.1. Stream Dependencies
        × 1: Sends HEADERS frame that depend on itself
        Error: EOF
        × 2: Sends PRIORITY frame that depend on itself
        Error: EOF

    5.4. Error Handling
      5.4.1. Connection Error Handling
        × 1: Sends an invalid PING frame for connection close
        Error: EOF
        × 2: Sends an invalid PING frame to receive GOAWAY frame
        Error: read tcp 30.40.53.15:62800->106.14.125.167:9443: read: connection reset by peer

    5.5. Extending HTTP/2
      × 1: Sends an unknown extension frame
      Error: read tcp 30.40.53.15:62801->106.14.125.167:9443: read: connection reset by peer
      × 2: Sends an unknown extension frame in the middle of a header block
      Error: read tcp 30.40.53.15:62802->106.14.125.167:9443: read: connection reset by peer

  6. Frame Definitions
    6.1. DATA
      × 1: Sends a DATA frame with 0x0 stream identifier
      Error: read tcp 30.40.53.15:62803->106.14.125.167:9443: read: connection reset by peer
      × 2: Sends a DATA frame on the stream that is not in "open" or "half-closed (local)" state
      Error: read tcp 30.40.53.15:62804->106.14.125.167:9443: read: connection reset by peer
      × 3: Sends a DATA frame with invalid pad length
      Error: EOF

    6.2. HEADERS
      × 1: Sends a HEADERS frame without the END_HEADERS flag, and a PRIORITY frame
      Error: EOF
      × 2: Sends a HEADERS frame to another stream while sending a HEADERS frame
      Error: EOF
      × 3: Sends a HEADERS frame with 0x0 stream identifier
      Error: EOF
      × 4: Sends a HEADERS frame with invalid pad length
      Error: EOF

    6.3. PRIORITY
      × 1: Sends a PRIORITY frame with 0x0 stream identifier
      Error: EOF
      × 2: Sends a PRIORITY frame with a length other than 5 octets
      Error: EOF

    6.4. RST_STREAM
      × 1: Sends a RST_STREAM frame with 0x0 stream identifier
      Error: read tcp 30.40.53.15:62812->106.14.125.167:9443: read: connection reset by peer
      × 2: Sends a RST_STREAM frame on a idle stream
      Error: EOF
      × 3: Sends a RST_STREAM frame with a length other than 4 octets
      Error: EOF

    6.5. SETTINGS
      × 1: Sends a SETTINGS frame with ACK flag and payload
      Error: EOF
      × 2: Sends a SETTINGS frame with a stream identifier other than 0x0
      Error: EOF
      × 3: Sends a SETTINGS frame with a length other than a multiple of 6 octets
      Error: EOF

      6.5.2. Defined SETTINGS Parameters
        × 1: SETTINGS_ENABLE_PUSH (0x2): Sends the value other than 0 or 1
        Error: EOF
        × 2: SETTINGS_INITIAL_WINDOW_SIZE (0x4): Sends the value above the maximum flow control window size
        Error: EOF
        × 3: SETTINGS_MAX_FRAME_SIZE (0x5): Sends the value below the initial value
        Error: read tcp 30.40.53.15:62820->106.14.125.167:9443: read: connection reset by peer
        × 4: SETTINGS_MAX_FRAME_SIZE (0x5): Sends the value above the maximum allowed frame size
        Error: read tcp 30.40.53.15:62821->106.14.125.167:9443: read: connection reset by peer
        × 5: Sends a SETTINGS frame with unknown identifier
        Error: EOF

      6.5.3. Settings Synchronization
        × 1: Sends multiple values of SETTINGS_INITIAL_WINDOW_SIZE
        Error: EOF
        × 2: Sends a SETTINGS frame without ACK flag
        Error: read tcp 30.40.53.15:62825->106.14.125.167:9443: read: connection reset by peer

    6.7. PING
      × 1: Sends a PING frame
      Error: read tcp 30.40.53.15:62826->106.14.125.167:9443: read: connection reset by peer
      × 2: Sends a PING frame with ACK
      Error: read tcp 30.40.53.15:62827->106.14.125.167:9443: read: connection reset by peer
      × 3: Sends a PING frame with a stream identifier field value other than 0x0
      Error: EOF
      × 4: Sends a PING frame with a length field value other than 8
      Error: read tcp 30.40.53.15:62829->106.14.125.167:9443: read: connection reset by peer

    6.8. GOAWAY
      × 1: Sends a GOAWAY frame with a stream identifier other than 0x0
      Error: EOF

    6.9. WINDOW_UPDATE
      × 1: Sends a WINDOW_UPDATE frame with a flow control window increment of 0
      Error: EOF
      × 2: Sends a WINDOW_UPDATE frame with a flow control window increment of 0 on a stream
      Error: read tcp 30.40.53.15:62832->106.14.125.167:9443: read: connection reset by peer
      × 3: Sends a WINDOW_UPDATE frame with a length other than 4 octets
      Error: EOF

      6.9.1. The Flow-Control Window
        × 1: Sends SETTINGS frame to set the initial window size to 1 and sends HEADERS frame
        Error: EOF
        × 2: Sends multiple WINDOW_UPDATE frames increasing the flow control window to above 2^31-1
        Error: EOF
        × 3: Sends multiple WINDOW_UPDATE frames increasing the flow control window to above 2^31-1 on a stream
        Error: EOF

      6.9.2. Initial Flow-Control Window Size
        × 1: Changes SETTINGS_INITIAL_WINDOW_SIZE after sending HEADERS frame
        Error: read tcp 30.40.53.15:62839->106.14.125.167:9443: read: connection reset by peer
        × 2: Sends a SETTINGS frame for window size to be negative
        Error: EOF
        × 3: Sends a SETTINGS_INITIAL_WINDOW_SIZE settings with an exceeded maximum window size value
        Error: EOF

    6.10. CONTINUATION
      × 1: Sends multiple CONTINUATION frames preceded by a HEADERS frame
      Error: EOF
      × 2: Sends a CONTINUATION frame followed by any frame other than CONTINUATION
      Error: EOF
      × 3: Sends a CONTINUATION frame with 0x0 stream identifier
      Error: EOF
      × 4: Sends a CONTINUATION frame preceded by a HEADERS frame with END_HEADERS flag
      Error: read tcp 30.40.53.15:62846->106.14.125.167:9443: read: connection reset by peer
      × 5: Sends a CONTINUATION frame preceded by a CONTINUATION frame with END_HEADERS flag
      Error: read tcp 30.40.53.15:62847->106.14.125.167:9443: read: connection reset by peer
      × 6: Sends a CONTINUATION frame preceded by a DATA frame
      Error: EOF

  7. Error Codes
    × 1: Sends a GOAWAY frame with unknown error code
    Error: read tcp 30.40.53.15:62849->106.14.125.167:9443: read: connection reset by peer
    × 2: Sends a RST_STREAM frame with unknown error code
    Error: EOF

  8. HTTP Message Exchanges
    8.1. HTTP Request/Response Exchange
      × 1: Sends a second HEADERS frame without the END_STREAM flag
      Error: EOF

      8.1.2. HTTP Header Fields
        × 1: Sends a HEADERS frame that contains the header field name in uppercase letters
        Error: EOF

        8.1.2.1. Pseudo-Header Fields
          × 1: Sends a HEADERS frame that contains a unknown pseudo-header field
          Error: EOF
          × 2: Sends a HEADERS frame that contains the pseudo-header field defined for response
          Error: EOF
          × 3: Sends a HEADERS frame that contains a pseudo-header field as trailers
          Error: EOF
          × 4: Sends a HEADERS frame that contains a pseudo-header field that appears in a header block after a regular header field
          Error: EOF

        8.1.2.2. Connection-Specific Header Fields
          × 1: Sends a HEADERS frame that contains the connection-specific header field
          Error: EOF
          × 2: Sends a HEADERS frame that contains the TE header field with any value other than "trailers"
          Error: EOF

        8.1.2.3. Request Pseudo-Header Fields
          × 1: Sends a HEADERS frame with empty ":path" pseudo-header field
          Error: EOF
          × 2: Sends a HEADERS frame that omits ":method" pseudo-header field
          Error: EOF
          × 3: Sends a HEADERS frame that omits ":scheme" pseudo-header field
          Error: read tcp 30.40.53.15:62861->106.14.125.167:9443: read: connection reset by peer
          × 4: Sends a HEADERS frame that omits ":path" pseudo-header field
          Error: EOF
          × 5: Sends a HEADERS frame with duplicated ":method" pseudo-header field
          Error: EOF
          × 6: Sends a HEADERS frame with duplicated ":scheme" pseudo-header field
          Error: EOF
          × 7: Sends a HEADERS frame with duplicated ":method" pseudo-header field
          Error: EOF

        8.1.2.6. Malformed Requests and Responses
          × 1: Sends a HEADERS frame with the "content-length" header field which does not equal the DATA frame payload length
          Error: EOF
          × 2: Sends a HEADERS frame with the "content-length" header field which does not equal the sum of the multiple DATA frames payload length
          Error: EOF

    8.2. Server Push
      × 1: Sends a PUSH_PROMISE frame
      Error: EOF

HPACK: Header Compression for HTTP/2
  2. Compression Process Overview
    2.3. Indexing Tables
      2.3.3. Index Address Space
        × 1: Sends a header field representation with invalid index
        Error: EOF

  4. Dynamic Table Management
    4.2. Maximum Table Size
      × 1: Sends a dynamic table size update at the end of header block
      Error: EOF

  5. Primitive Type Representations
    5.2. String Literal Representation
      × 1: Sends a Huffman-encoded string literal representation with padding longer than 7 bits
      Error: EOF
      × 2: Sends a Huffman-encoded string literal representation padded by zero
      Error: EOF
      × 3: Sends a Huffman-encoded string literal representation containing the EOS symbol
      Error: EOF

  6. Binary Format
    6.1. Indexed Header Field Representation
      × 1: Sends a indexed header field representation with index 0
      Error: EOF

    6.3. Dynamic Table Size Update
      × 1: Sends a dynamic table size update larger than the value of SETTINGS_HEADER_TABLE_SIZE
      Error: EOF