See the tool here https://github.com/summerwind/h2spec
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: unexpected EOF
2. Streams and Multiplexing
× 1: Sends a PRIORITY frame on idle stream
Error: unexpected EOF
× 2: Sends a WINDOW_UPDATE frame on half-closed (remote) stream
Error: unexpected EOF
× 3: Sends a PRIORITY frame on half-closed (remote) stream
Error: unexpected EOF
× 4: Sends a RST_STREAM frame on half-closed (remote) stream
Error: unexpected EOF
× 5: Sends a PRIORITY frame on closed stream
Error: unexpected EOF
3. Frame Definitions
3.1. DATA
× 1: Sends a DATA frame
Error: unexpected EOF
× 2: Sends multiple DATA frames
Error: unexpected EOF
× 3: Sends a DATA frame with padding
Error: unexpected EOF
3.2. HEADERS
× 1: Sends a HEADERS frame
Error: unexpected EOF
× 2: Sends a HEADERS frame with padding
Error: unexpected EOF
× 3: Sends a HEADERS frame with priority
Error: unexpected EOF
3.3. PRIORITY
× 1: Sends a PRIORITY frame with priority 1
Error: unexpected EOF
× 2: Sends a PRIORITY frame with priority 256
Error: unexpected EOF
× 3: Sends a PRIORITY frame with stream dependency
Error: unexpected EOF
× 4: Sends a PRIORITY frame with exclusive
Error: unexpected EOF
× 5: Sends a PRIORITY frame for an idle stream, then send a HEADER frame
for a lower stream ID
Error: unexpected EOF
3.4. RST_STREAM
× 1: Sends a RST_STREAM frame
Error: unexpected EOF
3.5. SETTINGS
× 1: Sends a SETTINGS frame
Error: unexpected EOF
3.7. PING
× 1: Sends a PING frame
Error: unexpected EOF
3.8. GOAWAY
× 1: Sends a GOAWAY frame
Error: unexpected EOF
3.9. WINDOW_UPDATE
× 1: Sends a WINDOW_UPDATE frame with stream ID 0
Error: unexpected EOF
× 2: Sends a WINDOW_UPDATE frame with stream ID 1
Error: unexpected EOF
3.10. CONTINUATION
× 1: Sends a CONTINUATION frame
Error: unexpected EOF
× 2: Sends multiple CONTINUATION frames
Error: unexpected EOF
4. HTTP Message Exchanges
× 1: Sends a GET request
Error: unexpected EOF
× 2: Sends a HEAD request
Error: unexpected EOF
× 3: Sends a POST request
Error: unexpected EOF
× 4: Sends a POST request with trailers
Error: unexpected EOF
5. HPACK
× 1: Sends a indexed header field representation
Error: unexpected EOF
× 2: Sends a literal header field with incremental indexing - indexed name
Error: unexpected EOF
× 3: Sends a literal header field with incremental indexing - indexed name
(with Huffman coding)
Error: unexpected EOF
× 4: Sends a literal header field with incremental indexing - new name
Error: unexpected EOF
× 5: Sends a literal header field with incremental indexing - new name
(with Huffman coding)
Error: unexpected EOF
× 6: Sends a literal header field without indexing - indexed name
Error: unexpected EOF
× 7: Sends a literal header field without indexing - indexed name (with
Huffman coding)
Error: unexpected EOF
× 8: Sends a literal header field without indexing - new name
Error: unexpected EOF
× 9: Sends a literal header field without indexing - new name (huffman
encoded)
Error: unexpected EOF
× 10: Sends a literal header field never indexed - indexed name
Error: unexpected EOF
× 11: Sends a literal header field never indexed - indexed name (huffman
encoded)
Error: unexpected EOF
× 12: Sends a literal header field never indexed - new name
Error: unexpected EOF
× 13: Sends a literal header field never indexed - new name (huffman
encoded)
Error: unexpected EOF
× 14: Sends a dynamic table size update
Error: unexpected EOF
× 15: Sends multiple dynamic table size update
Error: unexpected 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: unexpected EOF
✔ 2: Sends invalid connection preface
4. HTTP Frames
4.1. Frame Format
× 1: Sends a frame with unknown type
Error: unexpected EOF
× 2: Sends a frame with undefined flag
Error: unexpected EOF
× 3: Sends a frame with reserved field bit
Error: unexpected EOF
4.2. Frame Size
× 1: Sends a DATA frame with 2^14 octets in length
Error: unexpected EOF
× 2: Sends a large size DATA frame that exceeds the
SETTINGS_MAX_FRAME_SIZE
Error: read tcp 192.168.1.8:63808->104.197.6.9:80: read: connection reset
by peer
× 3: Sends a large size HEADERS frame that exceeds the
SETTINGS_MAX_FRAME_SIZE
Error: unexpected EOF
4.3. Header Compression and Decompression
× 1: Sends invalid header block fragment
Error: unexpected EOF
× 2: Sends a PRIORITY frame while sending the header blocks
Error: unexpected EOF
× 3: Sends a HEADERS frame to another stream while sending the header
blocks
Error: unexpected EOF
5. Streams and Multiplexing
5.1. Stream States
× 1: idle: Sends a DATA frame
Error: unexpected EOF
× 2: idle: Sends a RST_STREAM frame
Error: unexpected EOF
× 3: idle: Sends a WINDOW_UPDATE frame
Error: unexpected EOF
× 4: idle: Sends a CONTINUATION frame
Error: unexpected EOF
× 5: half closed (remote): Sends a DATA frame
Error: unexpected EOF
× 6: half closed (remote): Sends a HEADERS frame
Error: unexpected EOF
× 7: half closed (remote): Sends a CONTINUATION frame
Error: unexpected EOF
× 8: closed: Sends a DATA frame after sending RST_STREAM frame
Error: unexpected EOF
× 9: closed: Sends a HEADERS frame after sending RST_STREAM frame
Error: unexpected EOF
× 10: closed: Sends a CONTINUATION frame after sending RST_STREAM frame
Error: unexpected EOF
× 11: closed: Sends a DATA frame
Error: unexpected EOF
× 12: closed: Sends a HEADERS frame
Error: unexpected EOF
× 13: closed: Sends a CONTINUATION frame
Error: unexpected EOF
5.1.1. Stream Identifiers
× 1: Sends even-numbered stream identifier
Error: unexpected EOF
× 2: Sends stream identifier that is numerically smaller than previous
Error: unexpected EOF
5.1.2. Stream Concurrency
× 1: Sends HEADERS frames that causes their advertised concurrent
stream limit to be exceeded
Error: unexpected EOF
5.3. Stream Priority
5.3.1. Stream Dependencies
× 1: Sends HEADERS frame that depend on itself
Error: unexpected EOF
× 2: Sends PRIORITY frame that depend on itself
Error: unexpected EOF
5.4. Error Handling
5.4.1. Connection Error Handling
× 1: Sends an invalid PING frame for connection close
Error: unexpected EOF
× 2: Sends an invalid PING frame to receive GOAWAY frame
Error: unexpected EOF
5.5. Extending HTTP/2
× 1: Sends an unknown extension frame
Error: unexpected EOF
× 2: Sends an unknown extension frame in the middle of a header block
Error: unexpected EOF
6. Frame Definitions
6.1. DATA
× 1: Sends a DATA frame with 0x0 stream identifier
Error: unexpected EOF
× 2: Sends a DATA frame on the stream that is not in "open" or
"half-closed (local)" state
Error: unexpected EOF
× 3: Sends a DATA frame with invalid pad length
Error: unexpected EOF
6.2. HEADERS
× 1: Sends a HEADERS frame without the END_HEADERS flag, and a PRIORITY
frame
Error: unexpected EOF
× 2: Sends a HEADERS frame to another stream while sending a HEADERS frame
Error: unexpected EOF
× 3: Sends a HEADERS frame with 0x0 stream identifier
Error: unexpected EOF
× 4: Sends a HEADERS frame with invalid pad length
Error: unexpected EOF
6.3. PRIORITY
× 1: Sends a PRIORITY frame with 0x0 stream identifier
Error: unexpected EOF
× 2: Sends a PRIORITY frame with a length other than 5 octets
Error: unexpected EOF
6.4. RST_STREAM
× 1: Sends a RST_STREAM frame with 0x0 stream identifier
Error: unexpected EOF
× 2: Sends a RST_STREAM frame on a idle stream
Error: unexpected EOF
× 3: Sends a RST_STREAM frame with a length other than 4 octets
Error: unexpected EOF
6.5. SETTINGS
× 1: Sends a SETTINGS frame with ACK flag and payload
Error: unexpected EOF
× 2: Sends a SETTINGS frame with a stream identifier other than 0x0
Error: unexpected EOF
× 3: Sends a SETTINGS frame with a length other than a multiple of 6
octets
Error: unexpected EOF
6.5.2. Defined SETTINGS Parameters
× 1: SETTINGS_ENABLE_PUSH (0x2): Sends the value other than 0 or 1
Error: unexpected EOF
× 2: SETTINGS_INITIAL_WINDOW_SIZE (0x4): Sends the value above the
maximum flow control window size
Error: unexpected EOF
× 3: SETTINGS_MAX_FRAME_SIZE (0x5): Sends the value below the initial
value
Error: unexpected EOF
× 4: SETTINGS_MAX_FRAME_SIZE (0x5): Sends the value above the maximum
allowed frame size
Error: unexpected EOF
× 5: Sends a SETTINGS frame with unknown identifier
Error: unexpected EOF
6.5.3. Settings Synchronization
× 1: Sends multiple values of SETTINGS_INITIAL_WINDOW_SIZE
Error: unexpected EOF
× 2: Sends a SETTINGS frame without ACK flag
Error: unexpected EOF
6.7. PING
× 1: Sends a PING frame
Error: unexpected EOF
× 2: Sends a PING frame with ACK
Error: unexpected EOF
× 3: Sends a PING frame with a stream identifier field value other than
0x0
Error: unexpected EOF
× 4: Sends a PING frame with a length field value other than 8
Error: unexpected EOF
6.8. GOAWAY
× 1: Sends a GOAWAY frame with a stream identifier other than 0x0
Error: unexpected EOF
6.9. WINDOW_UPDATE
× 1: Sends a WINDOW_UPDATE frame with a flow control window increment of 0
Error: unexpected EOF
× 2: Sends a WINDOW_UPDATE frame with a flow control window increment of
0 on a stream
Error: unexpected EOF
× 3: Sends a WINDOW_UPDATE frame with a length other than 4 octets
Error: unexpected 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: unexpected EOF
× 2: Sends multiple WINDOW_UPDATE frames increasing the flow control
window to above 2^31-1
Error: unexpected EOF
× 3: Sends multiple WINDOW_UPDATE frames increasing the flow control
window to above 2^31-1 on a stream
Error: unexpected EOF
6.9.2. Initial Flow-Control Window Size
× 1: Changes SETTINGS_INITIAL_WINDOW_SIZE after sending HEADERS frame
Error: unexpected EOF
× 2: Sends a SETTINGS frame for window size to be negative
Error: unexpected EOF
× 3: Sends a SETTINGS_INITIAL_WINDOW_SIZE settings with an exceeded
maximum window size value
Error: unexpected EOF
6.10. CONTINUATION
× 1: Sends multiple CONTINUATION frames preceded by a HEADERS frame
Error: unexpected EOF
× 2: Sends a CONTINUATION frame followed by any frame other than
CONTINUATION
Error: unexpected EOF
× 3: Sends a CONTINUATION frame with 0x0 stream identifier
Error: unexpected EOF
× 4: Sends a CONTINUATION frame preceded by a HEADERS frame with
END_HEADERS flag
Error: unexpected EOF
× 5: Sends a CONTINUATION frame preceded by a CONTINUATION frame with
END_HEADERS flag
Error: unexpected EOF
× 6: Sends a CONTINUATION frame preceded by a DATA frame
Error: unexpected EOF
7. Error Codes
× 1: Sends a GOAWAY frame with unknown error code
Error: unexpected EOF
× 2: Sends a RST_STREAM frame with unknown error code
Error: unexpected EOF
8. HTTP Message Exchanges
8.1. HTTP Request/Response Exchange
× 1: Sends a second HEADERS frame without the END_STREAM flag
Error: unexpected EOF
8.1.2. HTTP Header Fields
× 1: Sends a HEADERS frame that contains the header field name in
uppercase letters
Error: unexpected EOF
8.1.2.1. Pseudo-Header Fields
× 1: Sends a HEADERS frame that contains a unknown pseudo-header field
Error: unexpected EOF
× 2: Sends a HEADERS frame that contains the pseudo-header field
defined for response
Error: unexpected EOF
× 3: Sends a HEADERS frame that contains a pseudo-header field as
trailers
Error: unexpected EOF
× 4: Sends a HEADERS frame that contains a pseudo-header field that
appears in a header block after a regular header field
Error: unexpected EOF
8.1.2.2. Connection-Specific Header Fields
× 1: Sends a HEADERS frame that contains the connection-specific
header field
Error: unexpected EOF
× 2: Sends a HEADERS frame that contains the TE header field with any
value other than "trailers"
Error: unexpected EOF
8.1.2.3. Request Pseudo-Header Fields
× 1: Sends a HEADERS frame with empty ":path" pseudo-header field
Error: unexpected EOF
× 2: Sends a HEADERS frame that omits ":method" pseudo-header field
Error: unexpected EOF
× 3: Sends a HEADERS frame that omits ":scheme" pseudo-header field
Error: unexpected EOF
× 4: Sends a HEADERS frame that omits ":path" pseudo-header field
Error: unexpected EOF
× 5: Sends a HEADERS frame with duplicated ":method" pseudo-header
field
Error: unexpected EOF
× 6: Sends a HEADERS frame with duplicated ":scheme" pseudo-header
field
Error: unexpected EOF
× 7: Sends a HEADERS frame with duplicated ":method" pseudo-header
field
Error: unexpected 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: unexpected 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: unexpected EOF
8.2. Server Push
× 1: Sends a PUSH_PROMISE frame
Error: unexpected 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: unexpected EOF
4. Dynamic Table Management
4.2. Maximum Table Size
× 1: Sends a dynamic table size update at the end of header block
Error: unexpected 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: unexpected EOF
× 2: Sends a Huffman-encoded string literal representation padded by zero
Error: unexpected EOF
× 3: Sends a Huffman-encoded string literal representation containing the
EOS symbol
Error: unexpected EOF
6. Binary Format
6.1. Indexed Header Field Representation
× 1: Sends a indexed header field representation with index 0
Error: unexpected EOF
6.3. Dynamic Table Size Update
× 1: Sends a dynamic table size update larger than the value of
SETTINGS_HEADER_TABLE_SIZE
Error: unexpected 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: unexpected EOF
2. Streams and Multiplexing
× 1: Sends a PRIORITY frame on idle stream
Error: unexpected EOF
× 2: Sends a WINDOW_UPDATE frame on half-closed (remote) stream
Error: unexpected EOF
× 3: Sends a PRIORITY frame on half-closed (remote) stream
Error: unexpected EOF
× 4: Sends a RST_STREAM frame on half-closed (remote) stream
Error: unexpected EOF
× 5: Sends a PRIORITY frame on closed stream
Error: unexpected EOF
3. Frame Definitions
3.1. DATA
× 1: Sends a DATA frame
Error: unexpected EOF
× 2: Sends multiple DATA frames
Error: unexpected EOF
× 3: Sends a DATA frame with padding
Error: unexpected EOF
3.2. HEADERS
× 1: Sends a HEADERS frame
Error: unexpected EOF
× 2: Sends a HEADERS frame with padding
Error: unexpected EOF
× 3: Sends a HEADERS frame with priority
Error: unexpected EOF
3.3. PRIORITY
× 1: Sends a PRIORITY frame with priority 1
Error: unexpected EOF
× 2: Sends a PRIORITY frame with priority 256
Error: unexpected EOF
× 3: Sends a PRIORITY frame with stream dependency
Error: unexpected EOF
× 4: Sends a PRIORITY frame with exclusive
Error: unexpected EOF
× 5: Sends a PRIORITY frame for an idle stream, then send a HEADER frame
for a lower stream ID
Error: unexpected EOF
3.4. RST_STREAM
× 1: Sends a RST_STREAM frame
Error: unexpected EOF
3.5. SETTINGS
× 1: Sends a SETTINGS frame
Error: unexpected EOF
3.7. PING
× 1: Sends a PING frame
Error: unexpected EOF
3.8. GOAWAY
× 1: Sends a GOAWAY frame
Error: unexpected EOF
3.9. WINDOW_UPDATE
× 1: Sends a WINDOW_UPDATE frame with stream ID 0
Error: unexpected EOF
× 2: Sends a WINDOW_UPDATE frame with stream ID 1
Error: unexpected EOF
3.10. CONTINUATION
× 1: Sends a CONTINUATION frame
Error: unexpected EOF
× 2: Sends multiple CONTINUATION frames
Error: unexpected EOF
4. HTTP Message Exchanges
× 1: Sends a GET request
Error: unexpected EOF
× 2: Sends a HEAD request
Error: unexpected EOF
× 3: Sends a POST request
Error: unexpected EOF
× 4: Sends a POST request with trailers
Error: unexpected EOF
5. HPACK
× 1: Sends a indexed header field representation
Error: unexpected EOF
× 2: Sends a literal header field with incremental indexing - indexed name
Error: unexpected EOF
× 3: Sends a literal header field with incremental indexing - indexed name
(with Huffman coding)
Error: unexpected EOF
× 4: Sends a literal header field with incremental indexing - new name
Error: unexpected EOF
× 5: Sends a literal header field with incremental indexing - new name
(with Huffman coding)
Error: unexpected EOF
× 6: Sends a literal header field without indexing - indexed name
Error: unexpected EOF
× 7: Sends a literal header field without indexing - indexed name (with
Huffman coding)
Error: unexpected EOF
× 8: Sends a literal header field without indexing - new name
Error: unexpected EOF
× 9: Sends a literal header field without indexing - new name (huffman
encoded)
Error: unexpected EOF
× 10: Sends a literal header field never indexed - indexed name
Error: unexpected EOF
× 11: Sends a literal header field never indexed - indexed name (huffman
encoded)
Error: unexpected EOF
× 12: Sends a literal header field never indexed - new name
Error: unexpected EOF
× 13: Sends a literal header field never indexed - new name (huffman
encoded)
Error: unexpected EOF
× 14: Sends a dynamic table size update
Error: unexpected EOF
× 15: Sends multiple dynamic table size update
Error: unexpected 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: unexpected EOF
4. HTTP Frames
4.1. Frame Format
× 1: Sends a frame with unknown type
Error: unexpected EOF
× 2: Sends a frame with undefined flag
Error: unexpected EOF
× 3: Sends a frame with reserved field bit
Error: unexpected EOF
4.2. Frame Size
× 1: Sends a DATA frame with 2^14 octets in length
Error: unexpected EOF
× 2: Sends a large size DATA frame that exceeds the
SETTINGS_MAX_FRAME_SIZE
Error: read tcp 192.168.1.8:63808->104.197.6.9:80: read: connection reset
by peer
× 3: Sends a large size HEADERS frame that exceeds the
SETTINGS_MAX_FRAME_SIZE
Error: unexpected EOF
4.3. Header Compression and Decompression
× 1: Sends invalid header block fragment
Error: unexpected EOF
× 2: Sends a PRIORITY frame while sending the header blocks
Error: unexpected EOF
× 3: Sends a HEADERS frame to another stream while sending the header
blocks
Error: unexpected EOF
5. Streams and Multiplexing
5.1. Stream States
× 1: idle: Sends a DATA frame
Error: unexpected EOF
× 2: idle: Sends a RST_STREAM frame
Error: unexpected EOF
× 3: idle: Sends a WINDOW_UPDATE frame
Error: unexpected EOF
× 4: idle: Sends a CONTINUATION frame
Error: unexpected EOF
× 5: half closed (remote): Sends a DATA frame
Error: unexpected EOF
× 6: half closed (remote): Sends a HEADERS frame
Error: unexpected EOF
× 7: half closed (remote): Sends a CONTINUATION frame
Error: unexpected EOF
× 8: closed: Sends a DATA frame after sending RST_STREAM frame
Error: unexpected EOF
× 9: closed: Sends a HEADERS frame after sending RST_STREAM frame
Error: unexpected EOF
× 10: closed: Sends a CONTINUATION frame after sending RST_STREAM frame
Error: unexpected EOF
× 11: closed: Sends a DATA frame
Error: unexpected EOF
× 12: closed: Sends a HEADERS frame
Error: unexpected EOF
× 13: closed: Sends a CONTINUATION frame
Error: unexpected EOF
5.1.1. Stream Identifiers
× 1: Sends even-numbered stream identifier
Error: unexpected EOF
× 2: Sends stream identifier that is numerically smaller than previous
Error: unexpected EOF
5.1.2. Stream Concurrency
× 1: Sends HEADERS frames that causes their advertised concurrent
stream limit to be exceeded
Error: unexpected EOF
5.3. Stream Priority
5.3.1. Stream Dependencies
× 1: Sends HEADERS frame that depend on itself
Error: unexpected EOF
× 2: Sends PRIORITY frame that depend on itself
Error: unexpected EOF
5.4. Error Handling
5.4.1. Connection Error Handling
× 1: Sends an invalid PING frame for connection close
Error: unexpected EOF
× 2: Sends an invalid PING frame to receive GOAWAY frame
Error: unexpected EOF
5.5. Extending HTTP/2
× 1: Sends an unknown extension frame
Error: unexpected EOF
× 2: Sends an unknown extension frame in the middle of a header block
Error: unexpected EOF
6. Frame Definitions
6.1. DATA
× 1: Sends a DATA frame with 0x0 stream identifier
Error: unexpected EOF
× 2: Sends a DATA frame on the stream that is not in "open" or
"half-closed (local)" state
Error: unexpected EOF
× 3: Sends a DATA frame with invalid pad length
Error: unexpected EOF
6.2. HEADERS
× 1: Sends a HEADERS frame without the END_HEADERS flag, and a PRIORITY
frame
Error: unexpected EOF
× 2: Sends a HEADERS frame to another stream while sending a HEADERS frame
Error: unexpected EOF
× 3: Sends a HEADERS frame with 0x0 stream identifier
Error: unexpected EOF
× 4: Sends a HEADERS frame with invalid pad length
Error: unexpected EOF
6.3. PRIORITY
× 1: Sends a PRIORITY frame with 0x0 stream identifier
Error: unexpected EOF
× 2: Sends a PRIORITY frame with a length other than 5 octets
Error: unexpected EOF
6.4. RST_STREAM
× 1: Sends a RST_STREAM frame with 0x0 stream identifier
Error: unexpected EOF
× 2: Sends a RST_STREAM frame on a idle stream
Error: unexpected EOF
× 3: Sends a RST_STREAM frame with a length other than 4 octets
Error: unexpected EOF
6.5. SETTINGS
× 1: Sends a SETTINGS frame with ACK flag and payload
Error: unexpected EOF
× 2: Sends a SETTINGS frame with a stream identifier other than 0x0
Error: unexpected EOF
× 3: Sends a SETTINGS frame with a length other than a multiple of 6
octets
Error: unexpected EOF
6.5.2. Defined SETTINGS Parameters
× 1: SETTINGS_ENABLE_PUSH (0x2): Sends the value other than 0 or 1
Error: unexpected EOF
× 2: SETTINGS_INITIAL_WINDOW_SIZE (0x4): Sends the value above the
maximum flow control window size
Error: unexpected EOF
× 3: SETTINGS_MAX_FRAME_SIZE (0x5): Sends the value below the initial
value
Error: unexpected EOF
× 4: SETTINGS_MAX_FRAME_SIZE (0x5): Sends the value above the maximum
allowed frame size
Error: unexpected EOF
× 5: Sends a SETTINGS frame with unknown identifier
Error: unexpected EOF
6.5.3. Settings Synchronization
× 1: Sends multiple values of SETTINGS_INITIAL_WINDOW_SIZE
Error: unexpected EOF
× 2: Sends a SETTINGS frame without ACK flag
Error: unexpected EOF
6.7. PING
× 1: Sends a PING frame
Error: unexpected EOF
× 2: Sends a PING frame with ACK
Error: unexpected EOF
× 3: Sends a PING frame with a stream identifier field value other than
0x0
Error: unexpected EOF
× 4: Sends a PING frame with a length field value other than 8
Error: unexpected EOF
6.8. GOAWAY
× 1: Sends a GOAWAY frame with a stream identifier other than 0x0
Error: unexpected EOF
6.9. WINDOW_UPDATE
× 1: Sends a WINDOW_UPDATE frame with a flow control window increment of 0
Error: unexpected EOF
× 2: Sends a WINDOW_UPDATE frame with a flow control window increment of
0 on a stream
Error: unexpected EOF
× 3: Sends a WINDOW_UPDATE frame with a length other than 4 octets
Error: unexpected 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: unexpected EOF
× 2: Sends multiple WINDOW_UPDATE frames increasing the flow control
window to above 2^31-1
Error: unexpected EOF
× 3: Sends multiple WINDOW_UPDATE frames increasing the flow control
window to above 2^31-1 on a stream
Error: unexpected EOF
6.9.2. Initial Flow-Control Window Size
× 1: Changes SETTINGS_INITIAL_WINDOW_SIZE after sending HEADERS frame
Error: unexpected EOF
× 2: Sends a SETTINGS frame for window size to be negative
Error: unexpected EOF
× 3: Sends a SETTINGS_INITIAL_WINDOW_SIZE settings with an exceeded
maximum window size value
Error: unexpected EOF
6.10. CONTINUATION
× 1: Sends multiple CONTINUATION frames preceded by a HEADERS frame
Error: unexpected EOF
× 2: Sends a CONTINUATION frame followed by any frame other than
CONTINUATION
Error: unexpected EOF
× 3: Sends a CONTINUATION frame with 0x0 stream identifier
Error: unexpected EOF
× 4: Sends a CONTINUATION frame preceded by a HEADERS frame with
END_HEADERS flag
Error: unexpected EOF
× 5: Sends a CONTINUATION frame preceded by a CONTINUATION frame with
END_HEADERS flag
Error: unexpected EOF
× 6: Sends a CONTINUATION frame preceded by a DATA frame
Error: unexpected EOF
7. Error Codes
× 1: Sends a GOAWAY frame with unknown error code
Error: unexpected EOF
× 2: Sends a RST_STREAM frame with unknown error code
Error: unexpected EOF
8. HTTP Message Exchanges
8.1. HTTP Request/Response Exchange
× 1: Sends a second HEADERS frame without the END_STREAM flag
Error: unexpected EOF
8.1.2. HTTP Header Fields
× 1: Sends a HEADERS frame that contains the header field name in
uppercase letters
Error: unexpected EOF
8.1.2.1. Pseudo-Header Fields
× 1: Sends a HEADERS frame that contains a unknown pseudo-header field
Error: unexpected EOF
× 2: Sends a HEADERS frame that contains the pseudo-header field
defined for response
Error: unexpected EOF
× 3: Sends a HEADERS frame that contains a pseudo-header field as
trailers
Error: unexpected EOF
× 4: Sends a HEADERS frame that contains a pseudo-header field that
appears in a header block after a regular header field
Error: unexpected EOF
8.1.2.2. Connection-Specific Header Fields
× 1: Sends a HEADERS frame that contains the connection-specific
header field
Error: unexpected EOF
× 2: Sends a HEADERS frame that contains the TE header field with any
value other than "trailers"
Error: unexpected EOF
8.1.2.3. Request Pseudo-Header Fields
× 1: Sends a HEADERS frame with empty ":path" pseudo-header field
Error: unexpected EOF
× 2: Sends a HEADERS frame that omits ":method" pseudo-header field
Error: unexpected EOF
× 3: Sends a HEADERS frame that omits ":scheme" pseudo-header field
Error: unexpected EOF
× 4: Sends a HEADERS frame that omits ":path" pseudo-header field
Error: unexpected EOF
× 5: Sends a HEADERS frame with duplicated ":method" pseudo-header
field
Error: unexpected EOF
× 6: Sends a HEADERS frame with duplicated ":scheme" pseudo-header
field
Error: unexpected EOF
× 7: Sends a HEADERS frame with duplicated ":method" pseudo-header
field
Error: unexpected 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: unexpected 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: unexpected EOF
8.2. Server Push
× 1: Sends a PUSH_PROMISE frame
Error: unexpected 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: unexpected EOF
4. Dynamic Table Management
4.2. Maximum Table Size
× 1: Sends a dynamic table size update at the end of header block
Error: unexpected 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: unexpected EOF
× 2: Sends a Huffman-encoded string literal representation padded by zero
Error: unexpected EOF
× 3: Sends a Huffman-encoded string literal representation containing the
EOS symbol
Error: unexpected EOF
6. Binary Format
6.1. Indexed Header Field Representation
× 1: Sends a indexed header field representation with index 0
Error: unexpected EOF
6.3. Dynamic Table Size Update
× 1: Sends a dynamic table size update larger than the value of
SETTINGS_HEADER_TABLE_SIZE
Error: unexpected EOF
Finished in 8.4309 seconds
146 tests, 1 passed, 0 skipped, 145 failed