-
-
Save AMekss/6276516343e8e5b9d18d96e7e96d7a96 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Generic tests for HTTP/2 server | |
1. Starting HTTP/2 | |
✔ 1: Sends a client connection preface | |
2. Streams and Multiplexing | |
using source address 127.0.0.1:59703stream | |
× 1: Sends a PRIORITY frame on idle stream | |
-> The endpoint MUST accept PRIORITY frame. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:) | |
Actual: Timeout | |
✔ 2: Sends a WINDOW_UPDATE frame on half-closed (remote) stream | |
✔ 3: Sends a PRIORITY frame on half-closed (remote) stream | |
using source address 127.0.0.1:59709f-closed (remote) stream | |
× 4: Sends a RST_STREAM frame on half-closed (remote) stream | |
-> The endpoint MUST accept RST_STREAM frame. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:) | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59711d stream | |
× 5: Sends a PRIORITY frame on closed stream | |
-> The endpoint MUST accept PRIORITY frame. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:) | |
Actual: Timeout | |
3. Frame Definitions | |
3.1. DATA | |
✔ 1: Sends a DATA frame | |
✔ 2: Sends multiple DATA frames | |
✔ 3: Sends a DATA frame with padding | |
3.2. HEADERS | |
✔ 1: Sends a HEADERS frame | |
✔ 2: Sends a HEADERS frame with padding | |
✔ 3: Sends a HEADERS frame with priority | |
3.3. PRIORITY | |
✔ 1: Sends a PRIORITY frame with priority 1 | |
✔ 2: Sends a PRIORITY frame with priority 256 | |
✔ 3: Sends a PRIORITY frame with stream dependency | |
✔ 4: Sends a PRIORITY frame with exclusive | |
✔ 5: Sends a PRIORITY frame for an idle stream, then send a HEADER frame for a lower stream ID | |
3.4. RST_STREAM | |
using source address 127.0.0.1:59735 | |
× 1: Sends a RST_STREAM frame | |
-> The endpoint MUST accept RST_STREAM frame. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:) | |
Actual: Timeout | |
3.5. SETTINGS | |
✔ 1: Sends a SETTINGS frame | |
3.7. PING | |
using source address 127.0.0.1:59739 | |
× 1: Sends a PING frame | |
-> The endpoint MUST accept PING frame. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:h2spec) | |
Actual: Timeout | |
3.8. GOAWAY | |
using source address 127.0.0.1:59742 | |
× 1: Sends a GOAWAY frame | |
-> The endpoint MUST accept GOAWAY frame. | |
Expected: Connection closed | |
PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:h2spec) | |
Actual: Timeout | |
3.9. WINDOW_UPDATE | |
using source address 127.0.0.1:59744h stream ID 0 | |
× 1: Sends a WINDOW_UPDATE frame with stream ID 0 | |
-> The endpoint MUST accept WINDOW_UPDATE frame. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:) | |
Actual: Timeout | |
✔ 2: Sends a WINDOW_UPDATE frame with stream ID 1 | |
3.10. CONTINUATION | |
using source address 127.0.0.1:59748 | |
× 1: Sends a CONTINUATION frame | |
-> The endpoint MUST accept CONTINUATION frame. | |
Expected: HEADERS Frame (stream_id:1) | |
Actual: Connection closed | |
using source address 127.0.0.1:59750mes | |
× 2: Sends multiple CONTINUATION frames | |
-> The endpoint MUST accept multiple CONTINUATION frames. | |
Expected: HEADERS Frame (stream_id:1) | |
Actual: Connection closed | |
4. HTTP Message Exchanges | |
✔ 1: Sends a GET request | |
✔ 2: Sends a HEAD request | |
✔ 3: Sends a POST request | |
✔ 4: Sends a POST request with trailers | |
5. HPACK | |
✔ 1: Sends a indexed header field representation | |
✔ 2: Sends a literal header field with incremental indexing - indexed name | |
✔ 3: Sends a literal header field with incremental indexing - indexed name (with Huffman coding) | |
✔ 4: Sends a literal header field with incremental indexing - new name | |
✔ 5: Sends a literal header field with incremental indexing - new name (with Huffman coding) | |
✔ 6: Sends a literal header field without indexing - indexed name | |
✔ 7: Sends a literal header field without indexing - indexed name (with Huffman coding) | |
✔ 8: Sends a literal header field without indexing - new name | |
✔ 9: Sends a literal header field without indexing - new name (huffman encoded) | |
using source address 127.0.0.1:59782ever indexed - indexed name | |
× 10: Sends a literal header field never indexed - indexed name | |
-> The endpoint MUST accept literal header field never indexed | |
Expected: HEADERS Frame (stream_id:1) | |
Actual: Connection closed | |
using source address 127.0.0.1:59784ever indexed - indexed name (huffman encoded) | |
× 11: Sends a literal header field never indexed - indexed name (huffman encoded) | |
-> The endpoint MUST accept literal header field never indexed | |
Expected: HEADERS Frame (stream_id:1) | |
Actual: Connection closed | |
using source address 127.0.0.1:59786ever indexed - new name | |
× 12: Sends a literal header field never indexed - new name | |
-> The endpoint MUST accept literal header field never indexed | |
Expected: HEADERS Frame (stream_id:1) | |
Actual: Connection closed | |
using source address 127.0.0.1:59788ever indexed - new name (huffman encoded) | |
× 13: Sends a literal header field never indexed - new name (huffman encoded) | |
-> The endpoint MUST accept literal header field never indexed | |
Expected: HEADERS Frame (stream_id:1) | |
Actual: Connection closed | |
✔ 14: Sends a dynamic table size update | |
✔ 15: Sends multiple dynamic table size update | |
Hypertext Transfer Protocol Version 2 (HTTP/2) | |
3. Starting HTTP/2 | |
3.5. HTTP/2 Connection Preface | |
✔ 1: Sends client connection preface | |
✔ 2: Sends invalid connection preface | |
4. HTTP Frames | |
4.1. Frame Format | |
using source address 127.0.0.1:59798 | |
× 1: Sends a frame with unknown type | |
-> The endpoint MUST ignore and discard any frame that has a type that is unknown. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:) | |
Actual: Timeout | |
using source address 127.0.0.1:59800ag | |
× 2: Sends a frame with undefined flag | |
-> The endpoint MUST ignore any flags that is undefined. | |
Expected: PING frame | |
Actual: Timeout | |
using source address 127.0.0.1:59802ld bit | |
× 3: Sends a frame with reserved field bit | |
-> The endpoint MUST ignore the value of reserved field. | |
Expected: PING frame | |
Actual: Timeout | |
4.2. Frame Size | |
✔ 1: Sends a DATA frame with 2^14 octets in length | |
using source address 127.0.0.1:59806hat exceeds the SETTINGS_MAX_FRAME_SIZE | |
× 2: Sends a large size DATA frame that exceeds the SETTINGS_MAX_FRAME_SIZE | |
-> The endpoint MUST send an error code of FRAME_SIZE_ERROR. | |
Expected: GOAWAY Frame (Error Code: FRAME_SIZE_ERROR) | |
RST_STREAM Frame (Error Code: FRAME_SIZE_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:4088, flags:0x01, stream_id:1) | |
✔ 3: Sends a large size HEADERS frame that exceeds the SETTINGS_MAX_FRAME_SIZE | |
4.3. Header Compression and Decompression | |
✔ 1: Sends invalid header block fragment | |
using source address 127.0.0.1:59812nding the header blocks | |
× 2: Sends a PRIORITY frame while sending the header blocks | |
-> The endpoint MUST terminate the connection with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59815r stream while sending the header blocks | |
× 3: Sends a HEADERS frame to another stream while sending the header blocks | |
-> The endpoint MUST terminate the connection with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:3) | |
5. Streams and Multiplexing | |
5.1. Stream States | |
using source address 127.0.0.1:59817 | |
× 1: idle: Sends a DATA frame | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59819 | |
× 2: idle: Sends a RST_STREAM frame | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59821me | |
× 3: idle: Sends a WINDOW_UPDATE frame | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
✔ 4: idle: Sends a CONTINUATION frame | |
using source address 127.0.0.1:59825ATA frame | |
× 5: half closed (remote): Sends a DATA frame | |
-> The endpoint MUST respond with a stream error of type STREAM_CLOSED. | |
Expected: GOAWAY Frame (Error Code: STREAM_CLOSED) | |
RST_STREAM Frame (Error Code: STREAM_CLOSED) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59827EADERS frame | |
× 6: half closed (remote): Sends a HEADERS frame | |
-> The endpoint MUST respond with a stream error of type STREAM_CLOSED. | |
Expected: GOAWAY Frame (Error Code: STREAM_CLOSED) | |
RST_STREAM Frame (Error Code: STREAM_CLOSED) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59829ONTINUATION frame | |
× 7: half closed (remote): Sends a CONTINUATION frame | |
-> The endpoint MUST respond with a stream error of type STREAM_CLOSED. | |
Expected: GOAWAY Frame (Error Code: STREAM_CLOSED) | |
RST_STREAM Frame (Error Code: STREAM_CLOSED) | |
GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59832r sending RST_STREAM frame | |
× 8: closed: Sends a DATA frame after sending RST_STREAM frame | |
-> The endpoint MUST treat this as a stream error of type STREAM_CLOSED. | |
Expected: GOAWAY Frame (Error Code: STREAM_CLOSED) | |
RST_STREAM Frame (Error Code: STREAM_CLOSED) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59834fter sending RST_STREAM frame | |
× 9: closed: Sends a HEADERS frame after sending RST_STREAM frame | |
-> The endpoint MUST treat this as a stream error of type STREAM_CLOSED. | |
Expected: GOAWAY Frame (Error Code: STREAM_CLOSED) | |
RST_STREAM Frame (Error Code: STREAM_CLOSED) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59836rame after sending RST_STREAM frame | |
× 10: closed: Sends a CONTINUATION frame after sending RST_STREAM frame | |
-> The endpoint MUST treat this as a stream error of type STREAM_CLOSED. | |
Expected: GOAWAY Frame (Error Code: STREAM_CLOSED) | |
RST_STREAM Frame (Error Code: STREAM_CLOSED) | |
GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59838 | |
× 11: closed: Sends a DATA frame | |
-> The endpoint MUST treat this as a connection error of type STREAM_CLOSED. | |
Expected: GOAWAY Frame (Error Code: STREAM_CLOSED) | |
RST_STREAM Frame (Error Code: STREAM_CLOSED) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59840 | |
× 12: closed: Sends a HEADERS frame | |
-> The endpoint MUST treat this as a connection error of type STREAM_CLOSED. | |
Expected: GOAWAY Frame (Error Code: STREAM_CLOSED) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59842rame | |
× 13: closed: Sends a CONTINUATION frame | |
-> The endpoint MUST treat this as a connection error of type STREAM_CLOSED. | |
Expected: GOAWAY Frame (Error Code: STREAM_CLOSED) | |
GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
5.1.1. Stream Identifiers | |
using source address 127.0.0.1:59844tifier | |
× 1: Sends even-numbered stream identifier | |
-> The endpoint MUST respond with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:2) | |
using source address 127.0.0.1:59846 numerically smaller than previous | |
× 2: Sends stream identifier that is numerically smaller than previous | |
-> The endpoint MUST respond with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:3) | |
5.1.2. Stream Concurrency | |
using source address 127.0.0.1:59849s their advertised concurrent stream limit to be exceeded | |
× 1: Sends HEADERS frames that causes their advertised concurrent stream limit to be exceeded | |
-> The endpoint MUST treat this as a stream error of type PROTOCOL_ERROR or REFUSED_STREAM. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
GOAWAY Frame (Error Code: REFUSED_STREAM) | |
RST_STREAM Frame (Error Code: REFUSED_STREAM) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:201) | |
5.3. Stream Priority | |
5.3.1. Stream Dependencies | |
using source address 127.0.0.1:59851s on itself | |
× 1: Sends HEADERS frame that depends on itself | |
-> The endpoint MUST treat this as a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59853d on itself | |
× 2: Sends PRIORITY frame that depend on itself | |
-> The endpoint MUST treat this as a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
5.4. Error Handling | |
5.4.1. Connection Error Handling | |
using source address 127.0.0.1:59855 connection close | |
× 1: Sends an invalid PING frame for connection close | |
-> The endpoint MUST close the TCP connection | |
Expected: Connection closed | |
Actual: Timeout | |
5.5. Extending HTTP/2 | |
using source address 127.0.0.1:59857e | |
× 1: Sends an unknown extension frame | |
-> The endpoint MUST ignore unknown or unsupported values in all extensible protocol elements. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:) | |
Actual: Timeout | |
using source address 127.0.0.1:59859e in the middle of a header block | |
× 2: Sends an unknown extension frame in the middle of a header block | |
-> The endpoint MUST treat as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
6. Frame Definitions | |
6.1. DATA | |
using source address 127.0.0.1:59861eam identifier | |
× 1: Sends a DATA frame with 0x0 stream identifier | |
-> The endpoint MUST respond with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Error: connection error: PROTOCOL_ERROR | |
using source address 127.0.0.1:59863m that is not in "open" or "half-closed (local)" state | |
× 2: Sends a DATA frame on the stream that is not in "open" or "half-closed (local)" state | |
-> The endpoint MUST respond with a stream error of type STREAM_CLOSED. | |
Expected: GOAWAY Frame (Error Code: STREAM_CLOSED) | |
RST_STREAM Frame (Error Code: STREAM_CLOSED) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
✔ 3: Sends a DATA frame with invalid pad length | |
6.2. HEADERS | |
using source address 127.0.0.1:59868he END_HEADERS flag, and a PRIORITY frame | |
× 1: Sends a HEADERS frame without the END_HEADERS flag, and a PRIORITY frame | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59870r stream while sending a HEADERS frame | |
× 2: Sends a HEADERS frame to another stream while sending a HEADERS frame | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:3) | |
using source address 127.0.0.1:59872stream identifier | |
× 3: Sends a HEADERS frame with 0x0 stream identifier | |
-> The endpoint MUST respond with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Error: connection error: PROTOCOL_ERROR | |
✔ 4: Sends a HEADERS frame with invalid pad length | |
6.3. PRIORITY | |
using source address 127.0.0.1:59876 stream identifier | |
× 1: Sends a PRIORITY frame with 0x0 stream identifier | |
-> The endpoint MUST respond with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59878ength other than 5 octets | |
× 2: Sends a PRIORITY frame with a length other than 5 octets | |
-> The endpoint MUST respond with a stream error of type FRAME_SIZE_ERROR. | |
Expected: GOAWAY Frame (Error Code: FRAME_SIZE_ERROR) | |
RST_STREAM Frame (Error Code: FRAME_SIZE_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
6.4. RST_STREAM | |
using source address 127.0.0.1:59880x0 stream identifier | |
× 1: Sends a RST_STREAM frame with 0x0 stream identifier | |
-> The endpoint MUST respond with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59882dle stream | |
× 2: Sends a RST_STREAM frame on a idle stream | |
-> The endpoint MUST respond with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59884 length other than 4 octets | |
× 3: Sends a RST_STREAM frame with a length other than 4 octets | |
-> The endpoint MUST respond with a connection error of type FRAME_SIZE_ERROR. | |
Expected: GOAWAY Frame (Error Code: FRAME_SIZE_ERROR) | |
RST_STREAM Frame (Error Code: FRAME_SIZE_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
6.5. SETTINGS | |
using source address 127.0.0.1:59886 flag and payload | |
× 1: Sends a SETTINGS frame with ACK flag and payload | |
-> The endpoint MUST respond with a connection error of type FRAME_SIZE_ERROR. | |
Expected: GOAWAY Frame (Error Code: FRAME_SIZE_ERROR) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59889tream identifier other than 0x0 | |
× 2: Sends a SETTINGS frame with a stream identifier other than 0x0 | |
-> The endpoint MUST respond with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: SETTINGS Frame (length:0, flags:0x01, stream_id:0) | |
using source address 127.0.0.1:59891ength other than a multiple of 6 octets | |
× 3: Sends a SETTINGS frame with a length other than a multiple of 6 octets | |
-> The endpoint MUST respond with a connection error of type FRAME_SIZE_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
GOAWAY Frame (Error Code: FRAME_SIZE_ERROR) | |
RST_STREAM Frame (Error Code: FRAME_SIZE_ERROR) | |
Connection closed | |
Actual: SETTINGS Frame (length:0, flags:0x01, stream_id:0) | |
6.5.2. Defined SETTINGS Parameters | |
using source address 127.0.0.1:59893ds the value other than 0 or 1 | |
× 1: SETTINGS_ENABLE_PUSH (0x2): Sends the value other than 0 or 1 | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: SETTINGS Frame (length:0, flags:0x01, stream_id:0) | |
using source address 127.0.0.1:59895x4): Sends the value above the maximum flow control window size | |
× 2: SETTINGS_INITIAL_WINDOW_SIZE (0x4): Sends the value above the maximum flow control window size | |
-> The endpoint MUST treat this as a connection error of type FLOW_CONTROL_ERROR. | |
Expected: GOAWAY Frame (Error Code: FLOW_CONTROL_ERROR) | |
Connection closed | |
Actual: SETTINGS Frame (length:0, flags:0x01, stream_id:0) | |
using source address 127.0.0.1:59897Sends the value below the initial value | |
× 3: SETTINGS_MAX_FRAME_SIZE (0x5): Sends the value below the initial value | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: SETTINGS Frame (length:0, flags:0x01, stream_id:0) | |
using source address 127.0.0.1:59899Sends the value above the maximum allowed frame size | |
× 4: SETTINGS_MAX_FRAME_SIZE (0x5): Sends the value above the maximum allowed frame size | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: SETTINGS Frame (length:0, flags:0x01, stream_id:0) | |
using source address 127.0.0.1:59901nown identifier | |
× 5: Sends a SETTINGS frame with unknown identifier | |
-> The endpoint MUST ignore that setting. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:) | |
Actual: SETTINGS Frame (length:0, flags:0x01, stream_id:0) | |
6.5.3. Settings Synchronization | |
using source address 127.0.0.1:59904GS_INITIAL_WINDOW_SIZE | |
× 1: Sends multiple values of SETTINGS_INITIAL_WINDOW_SIZE | |
-> The endpoint MUST process the values in the settings in the order they apper. | |
Expected: DATA Frame (length:1, flags:0x00, stream_id:1) | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
✔ 2: Sends a SETTINGS frame without ACK flag | |
6.7. PING | |
using source address 127.0.0.1:59910 | |
× 1: Sends a PING frame | |
-> The endpoint MUST sends a PING frame with ACK, with an identical payload. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:h2spec) | |
Actual: Timeout | |
using source address 127.0.0.1:59912 | |
× 2: Sends a PING frame with ACK | |
-> The endpoint MUST NOT respond to PING frames with ACK. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:h2spec) | |
Actual: Timeout | |
using source address 127.0.0.1:59914m identifier field value other than 0x0 | |
× 3: Sends a PING frame with a stream identifier field value other than 0x0 | |
-> The endpoint MUST respond with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59916h field value other than 8 | |
× 4: Sends a PING frame with a length field value other than 8 | |
-> The endpoint MUST treat this as a connection error of type FRAME_SIZE_ERROR. | |
Expected: GOAWAY Frame (Error Code: FRAME_SIZE_ERROR) | |
Connection closed | |
Actual: Timeout | |
6.8. GOAWAY | |
using source address 127.0.0.1:59918eam identifier other than 0x0 | |
× 1: Sends a GOAWAY frame with a stream identifier other than 0x0 | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
6.9. WINDOW_UPDATE | |
using source address 127.0.0.1:59920h a flow control window increment of 0 | |
× 1: Sends a WINDOW_UPDATE frame with a flow control window increment of 0 | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59922h a flow control window increment of 0 on a stream | |
× 2: Sends a WINDOW_UPDATE frame with a flow control window increment of 0 on a stream | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59924h a length other than 4 octets | |
× 3: Sends a WINDOW_UPDATE frame with a length other than 4 octets | |
-> The endpoint MUST treat this as a connection error of type FRAME_SIZE_ERROR. | |
Expected: GOAWAY Frame (Error Code: FRAME_SIZE_ERROR) | |
Connection closed | |
Actual: Timeout | |
6.9.1. The Flow-Control Window | |
using source address 127.0.0.1:59927 initial window size to 1 and sends HEADERS frame | |
× 1: Sends SETTINGS frame to set the initial window size to 1 and sends HEADERS frame | |
-> The endpoint MUST NOT send a flow-controlled frame with a length that exceeds the space available. | |
Expected: DATA Frame (length:1, flags:0x00, stream_id:1) | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59931ames increasing the flow control window to above 2^31-1 | |
× 2: Sends multiple WINDOW_UPDATE frames increasing the flow control window to above 2^31-1 | |
-> The endpoint MUST sends a GOAWAY frame with a FLOW_CONTROL_ERROR code. | |
Expected: GOAWAY Frame (Error Code: FLOW_CONTROL_ERROR) | |
Actual: Timeout | |
using source address 127.0.0.1:59933ames increasing the flow control window to above 2^31-1 on a stream | |
× 3: Sends multiple WINDOW_UPDATE frames increasing the flow control window to above 2^31-1 on a stream | |
-> The endpoint MUST sends a RST_STREAM frame with a FLOW_CONTROL_ERROR code. | |
Expected: RST_STREAM Frame (Error Code: FLOW_CONTROL_ERROR) | |
Actual: Timeout | |
6.9.2. Initial Flow-Control Window Size | |
using source address 127.0.0.1:59935_SIZE after sending HEADERS frame | |
× 1: Changes SETTINGS_INITIAL_WINDOW_SIZE after sending HEADERS frame | |
-> The endpoint MUST adjust the size of all stream flow-control windows. | |
Expected: DATA Frame (length:1, flags:0x00, stream_id:1) | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59939ow size to be negative | |
× 2: Sends a SETTINGS frame for window size to be negative | |
-> The endpoint MUST track the negative flow-control window. | |
Expected: DATA Frame (length:1, flags:0x00, stream_id:1) | |
Actual: Timeout | |
using source address 127.0.0.1:59943_SIZE settings with an exceeded maximum window size value | |
× 3: Sends a SETTINGS_INITIAL_WINDOW_SIZE settings with an exceeded maximum window size value | |
-> The endpoint MUST treat this as a connection error of type FLOW_CONTROL_ERROR. | |
Expected: GOAWAY Frame (Error Code: FLOW_CONTROL_ERROR) | |
Connection closed | |
Actual: SETTINGS Frame (length:0, flags:0x01, stream_id:0) | |
6.10. CONTINUATION | |
✔ 1: Sends multiple CONTINUATION frames preceded by a HEADERS frame | |
using source address 127.0.0.1:59947owed by any frame other than CONTINUATION | |
× 2: Sends a CONTINUATION frame followed by any frame other than CONTINUATION | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:5, flags:0x01, stream_id:1) | |
✔ 3: Sends a CONTINUATION frame with 0x0 stream identifier | |
using source address 127.0.0.1:59951eded by a HEADERS frame with END_HEADERS flag | |
× 4: Sends a CONTINUATION frame preceded by a HEADERS frame with END_HEADERS flag | |
-> The endpoint MUST respond with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59953eded by a CONTINUATION frame with END_HEADERS flag | |
× 5: Sends a CONTINUATION frame preceded by a CONTINUATION frame with END_HEADERS flag | |
-> The endpoint MUST respond with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
✔ 6: Sends a CONTINUATION frame preceded by a DATA frame | |
7. Error Codes | |
using source address 127.0.0.1:59958wn error code | |
× 1: Sends a GOAWAY frame with unknown error code | |
-> The endpoint MUST NOT trigger any special behavior. | |
Expected: Connection closed | |
PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:h2spec) | |
Actual: Timeout | |
using source address 127.0.0.1:59960nknown error code | |
× 2: Sends a RST_STREAM frame with unknown error code | |
-> The endpoint MUST NOT trigger any special behavior. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:) | |
Actual: Timeout | |
8. HTTP Message Exchanges | |
8.1. HTTP Request/Response Exchange | |
using source address 127.0.0.1:59962thout the END_STREAM flag | |
× 1: Sends a second HEADERS frame without the END_STREAM flag | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:5, flags:0x01, stream_id:1) | |
8.1.2. HTTP Header Fields | |
using source address 127.0.0.1:59964ains the header field name in uppercase letters | |
× 1: Sends a HEADERS frame that contains the header field name in uppercase letters | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
8.1.2.1. Pseudo-Header Fields | |
using source address 127.0.0.1:59966ains a unknown pseudo-header field | |
× 1: Sends a HEADERS frame that contains a unknown pseudo-header field | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59968ains the pseudo-header field defined for response | |
× 2: Sends a HEADERS frame that contains the pseudo-header field defined for response | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59970ains a pseudo-header field as trailers | |
× 3: Sends a HEADERS frame that contains a pseudo-header field as trailers | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:5, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59972ains a pseudo-header field that appears in a header block after a regular header field | |
× 4: Sends a HEADERS frame that contains a pseudo-header field that appears in a header block after a regular header field | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
8.1.2.2. Connection-Specific Header Fields | |
using source address 127.0.0.1:59975ains the connection-specific header field | |
× 1: Sends a HEADERS frame that contains the connection-specific header field | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59977ains the TE header field with any value other than "trailers" | |
× 2: Sends a HEADERS frame that contains the TE header field with any value other than "trailers" | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
8.1.2.3. Request Pseudo-Header Fields | |
using source address 127.0.0.1:59979y ":path" pseudo-header field | |
× 1: Sends a HEADERS frame with empty ":path" pseudo-header field | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59982s ":method" pseudo-header field | |
× 2: Sends a HEADERS frame that omits ":method" pseudo-header field | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59984s ":scheme" pseudo-header field | |
× 3: Sends a HEADERS frame that omits ":scheme" pseudo-header field | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59986s ":path" pseudo-header field | |
× 4: Sends a HEADERS frame that omits ":path" pseudo-header field | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59988icated ":method" pseudo-header field | |
× 5: Sends a HEADERS frame with duplicated ":method" pseudo-header field | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59991icated ":scheme" pseudo-header field | |
× 6: Sends a HEADERS frame with duplicated ":scheme" pseudo-header field | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59993icated ":path" pseudo-header field | |
× 7: Sends a HEADERS frame with duplicated ":path" pseudo-header field | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
8.1.2.6. Malformed Requests and Responses | |
using source address 127.0.0.1:59995"content-length" header field which does not equal the DATA frame payload length | |
× 1: Sends a HEADERS frame with the "content-length" header field which does not equal the DATA frame payload length | |
-> The endpoint MUST treat this as a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:5, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59998"content-length" header field which does not equal the sum of the multiple DATA frames payload length | |
× 2: Sends a HEADERS frame with the "content-length" header field which does not equal the sum of the multiple DATA frames payload length | |
-> The endpoint MUST treat this as a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:10, flags:0x01, stream_id:1) | |
8.2. Server Push | |
using source address 127.0.0.1:60000 | |
× 1: Sends a PUSH_PROMISE frame | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
HPACK: Header Compression for HTTP/2 | |
2. Compression Process Overview | |
2.3. Indexing Tables | |
2.3.3. Index Address Space | |
using source address 127.0.0.1:60002presentation with invalid index | |
× 1: Sends a indexed header field representation with invalid index | |
-> The endpoint MUST treat this as a decoding error. | |
Expected: GOAWAY Frame (Error Code: COMPRESSION_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
✔ 2: Sends a literal header field representation with invalid index | |
4. Dynamic Table Management | |
4.2. Maximum Table Size | |
using source address 127.0.0.1:60006te at the end of header block | |
× 1: Sends a dynamic table size update at the end of header block | |
-> The endpoint MUST treat this as a decoding error. | |
Expected: GOAWAY Frame (Error Code: COMPRESSION_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
5. Primitive Type Representations | |
5.2. String Literal Representation | |
using source address 127.0.0.1:60008literal representation with padding longer than 7 bits | |
× 1: Sends a Huffman-encoded string literal representation with padding longer than 7 bits | |
-> The endpoint MUST treat this as a decoding error. | |
Expected: GOAWAY Frame (Error Code: COMPRESSION_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:60011literal representation padded by zero | |
× 2: Sends a Huffman-encoded string literal representation padded by zero | |
-> The endpoint MUST treat this as a decoding error. | |
Expected: GOAWAY Frame (Error Code: COMPRESSION_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:60013literal representation containing the EOS symbol | |
× 3: Sends a Huffman-encoded string literal representation containing the EOS symbol | |
-> The endpoint MUST treat this as a decoding error. | |
Expected: GOAWAY Frame (Error Code: COMPRESSION_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
6. Binary Format | |
6.1. Indexed Header Field Representation | |
✔ 1: Sends a indexed header field representation with index 0 | |
6.3. Dynamic Table Size Update | |
using source address 127.0.0.1:60019te larger than the value of SETTINGS_HEADER_TABLE_SIZE | |
× 1: Sends a dynamic table size update larger than the value of SETTINGS_HEADER_TABLE_SIZE | |
-> The endpoint MUST treat this as a decoding error. | |
Expected: GOAWAY Frame (Error Code: COMPRESSION_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
Failures: | |
Generic tests for HTTP/2 server | |
2. Streams and Multiplexing | |
using source address 127.0.0.1:59703 | |
× 1: Sends a PRIORITY frame on idle stream | |
-> The endpoint MUST accept PRIORITY frame. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:) | |
Actual: Timeout | |
using source address 127.0.0.1:59709 | |
× 4: Sends a RST_STREAM frame on half-closed (remote) stream | |
-> The endpoint MUST accept RST_STREAM frame. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:) | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59711 | |
× 5: Sends a PRIORITY frame on closed stream | |
-> The endpoint MUST accept PRIORITY frame. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:) | |
Actual: Timeout | |
3. Frame Definitions | |
3.4. RST_STREAM | |
using source address 127.0.0.1:59735 | |
× 1: Sends a RST_STREAM frame | |
-> The endpoint MUST accept RST_STREAM frame. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:) | |
Actual: Timeout | |
3.7. PING | |
using source address 127.0.0.1:59739 | |
× 1: Sends a PING frame | |
-> The endpoint MUST accept PING frame. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:h2spec) | |
Actual: Timeout | |
3.8. GOAWAY | |
using source address 127.0.0.1:59742 | |
× 1: Sends a GOAWAY frame | |
-> The endpoint MUST accept GOAWAY frame. | |
Expected: Connection closed | |
PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:h2spec) | |
Actual: Timeout | |
3.9. WINDOW_UPDATE | |
using source address 127.0.0.1:59744 | |
× 1: Sends a WINDOW_UPDATE frame with stream ID 0 | |
-> The endpoint MUST accept WINDOW_UPDATE frame. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:) | |
Actual: Timeout | |
3.10. CONTINUATION | |
using source address 127.0.0.1:59748 | |
× 1: Sends a CONTINUATION frame | |
-> The endpoint MUST accept CONTINUATION frame. | |
Expected: HEADERS Frame (stream_id:1) | |
Actual: Connection closed | |
using source address 127.0.0.1:59750 | |
× 2: Sends multiple CONTINUATION frames | |
-> The endpoint MUST accept multiple CONTINUATION frames. | |
Expected: HEADERS Frame (stream_id:1) | |
Actual: Connection closed | |
5. HPACK | |
using source address 127.0.0.1:59782 | |
× 10: Sends a literal header field never indexed - indexed name | |
-> The endpoint MUST accept literal header field never indexed | |
Expected: HEADERS Frame (stream_id:1) | |
Actual: Connection closed | |
using source address 127.0.0.1:59784 | |
× 11: Sends a literal header field never indexed - indexed name (huffman encoded) | |
-> The endpoint MUST accept literal header field never indexed | |
Expected: HEADERS Frame (stream_id:1) | |
Actual: Connection closed | |
using source address 127.0.0.1:59786 | |
× 12: Sends a literal header field never indexed - new name | |
-> The endpoint MUST accept literal header field never indexed | |
Expected: HEADERS Frame (stream_id:1) | |
Actual: Connection closed | |
using source address 127.0.0.1:59788 | |
× 13: Sends a literal header field never indexed - new name (huffman encoded) | |
-> The endpoint MUST accept literal header field never indexed | |
Expected: HEADERS Frame (stream_id:1) | |
Actual: Connection closed | |
Hypertext Transfer Protocol Version 2 (HTTP/2) | |
4. HTTP Frames | |
4.1. Frame Format | |
using source address 127.0.0.1:59798 | |
× 1: Sends a frame with unknown type | |
-> The endpoint MUST ignore and discard any frame that has a type that is unknown. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:) | |
Actual: Timeout | |
using source address 127.0.0.1:59800 | |
× 2: Sends a frame with undefined flag | |
-> The endpoint MUST ignore any flags that is undefined. | |
Expected: PING frame | |
Actual: Timeout | |
using source address 127.0.0.1:59802 | |
× 3: Sends a frame with reserved field bit | |
-> The endpoint MUST ignore the value of reserved field. | |
Expected: PING frame | |
Actual: Timeout | |
4.2. Frame Size | |
using source address 127.0.0.1:59806 | |
× 2: Sends a large size DATA frame that exceeds the SETTINGS_MAX_FRAME_SIZE | |
-> The endpoint MUST send an error code of FRAME_SIZE_ERROR. | |
Expected: GOAWAY Frame (Error Code: FRAME_SIZE_ERROR) | |
RST_STREAM Frame (Error Code: FRAME_SIZE_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:4088, flags:0x01, stream_id:1) | |
4.3. Header Compression and Decompression | |
using source address 127.0.0.1:59812 | |
× 2: Sends a PRIORITY frame while sending the header blocks | |
-> The endpoint MUST terminate the connection with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59815 | |
× 3: Sends a HEADERS frame to another stream while sending the header blocks | |
-> The endpoint MUST terminate the connection with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:3) | |
5. Streams and Multiplexing | |
5.1. Stream States | |
using source address 127.0.0.1:59817 | |
× 1: idle: Sends a DATA frame | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59819 | |
× 2: idle: Sends a RST_STREAM frame | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59821 | |
× 3: idle: Sends a WINDOW_UPDATE frame | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59825 | |
× 5: half closed (remote): Sends a DATA frame | |
-> The endpoint MUST respond with a stream error of type STREAM_CLOSED. | |
Expected: GOAWAY Frame (Error Code: STREAM_CLOSED) | |
RST_STREAM Frame (Error Code: STREAM_CLOSED) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59827 | |
× 6: half closed (remote): Sends a HEADERS frame | |
-> The endpoint MUST respond with a stream error of type STREAM_CLOSED. | |
Expected: GOAWAY Frame (Error Code: STREAM_CLOSED) | |
RST_STREAM Frame (Error Code: STREAM_CLOSED) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59829 | |
× 7: half closed (remote): Sends a CONTINUATION frame | |
-> The endpoint MUST respond with a stream error of type STREAM_CLOSED. | |
Expected: GOAWAY Frame (Error Code: STREAM_CLOSED) | |
RST_STREAM Frame (Error Code: STREAM_CLOSED) | |
GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59832 | |
× 8: closed: Sends a DATA frame after sending RST_STREAM frame | |
-> The endpoint MUST treat this as a stream error of type STREAM_CLOSED. | |
Expected: GOAWAY Frame (Error Code: STREAM_CLOSED) | |
RST_STREAM Frame (Error Code: STREAM_CLOSED) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59834 | |
× 9: closed: Sends a HEADERS frame after sending RST_STREAM frame | |
-> The endpoint MUST treat this as a stream error of type STREAM_CLOSED. | |
Expected: GOAWAY Frame (Error Code: STREAM_CLOSED) | |
RST_STREAM Frame (Error Code: STREAM_CLOSED) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59836 | |
× 10: closed: Sends a CONTINUATION frame after sending RST_STREAM frame | |
-> The endpoint MUST treat this as a stream error of type STREAM_CLOSED. | |
Expected: GOAWAY Frame (Error Code: STREAM_CLOSED) | |
RST_STREAM Frame (Error Code: STREAM_CLOSED) | |
GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59838 | |
× 11: closed: Sends a DATA frame | |
-> The endpoint MUST treat this as a connection error of type STREAM_CLOSED. | |
Expected: GOAWAY Frame (Error Code: STREAM_CLOSED) | |
RST_STREAM Frame (Error Code: STREAM_CLOSED) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59840 | |
× 12: closed: Sends a HEADERS frame | |
-> The endpoint MUST treat this as a connection error of type STREAM_CLOSED. | |
Expected: GOAWAY Frame (Error Code: STREAM_CLOSED) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59842 | |
× 13: closed: Sends a CONTINUATION frame | |
-> The endpoint MUST treat this as a connection error of type STREAM_CLOSED. | |
Expected: GOAWAY Frame (Error Code: STREAM_CLOSED) | |
GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
5.1.1. Stream Identifiers | |
using source address 127.0.0.1:59844 | |
× 1: Sends even-numbered stream identifier | |
-> The endpoint MUST respond with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:2) | |
using source address 127.0.0.1:59846 | |
× 2: Sends stream identifier that is numerically smaller than previous | |
-> The endpoint MUST respond with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:3) | |
5.1.2. Stream Concurrency | |
using source address 127.0.0.1:59849 | |
× 1: Sends HEADERS frames that causes their advertised concurrent stream limit to be exceeded | |
-> The endpoint MUST treat this as a stream error of type PROTOCOL_ERROR or REFUSED_STREAM. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
GOAWAY Frame (Error Code: REFUSED_STREAM) | |
RST_STREAM Frame (Error Code: REFUSED_STREAM) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:201) | |
5.3. Stream Priority | |
5.3.1. Stream Dependencies | |
using source address 127.0.0.1:59851 | |
× 1: Sends HEADERS frame that depends on itself | |
-> The endpoint MUST treat this as a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59853 | |
× 2: Sends PRIORITY frame that depend on itself | |
-> The endpoint MUST treat this as a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
5.4. Error Handling | |
5.4.1. Connection Error Handling | |
using source address 127.0.0.1:59855 | |
× 1: Sends an invalid PING frame for connection close | |
-> The endpoint MUST close the TCP connection | |
Expected: Connection closed | |
Actual: Timeout | |
5.5. Extending HTTP/2 | |
using source address 127.0.0.1:59857 | |
× 1: Sends an unknown extension frame | |
-> The endpoint MUST ignore unknown or unsupported values in all extensible protocol elements. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:) | |
Actual: Timeout | |
using source address 127.0.0.1:59859 | |
× 2: Sends an unknown extension frame in the middle of a header block | |
-> The endpoint MUST treat as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
6. Frame Definitions | |
6.1. DATA | |
using source address 127.0.0.1:59861 | |
× 1: Sends a DATA frame with 0x0 stream identifier | |
-> The endpoint MUST respond with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Error: connection error: PROTOCOL_ERROR | |
using source address 127.0.0.1:59863 | |
× 2: Sends a DATA frame on the stream that is not in "open" or "half-closed (local)" state | |
-> The endpoint MUST respond with a stream error of type STREAM_CLOSED. | |
Expected: GOAWAY Frame (Error Code: STREAM_CLOSED) | |
RST_STREAM Frame (Error Code: STREAM_CLOSED) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
6.2. HEADERS | |
using source address 127.0.0.1:59868 | |
× 1: Sends a HEADERS frame without the END_HEADERS flag, and a PRIORITY frame | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59870 | |
× 2: Sends a HEADERS frame to another stream while sending a HEADERS frame | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:3) | |
using source address 127.0.0.1:59872 | |
× 3: Sends a HEADERS frame with 0x0 stream identifier | |
-> The endpoint MUST respond with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Error: connection error: PROTOCOL_ERROR | |
6.3. PRIORITY | |
using source address 127.0.0.1:59876 | |
× 1: Sends a PRIORITY frame with 0x0 stream identifier | |
-> The endpoint MUST respond with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59878 | |
× 2: Sends a PRIORITY frame with a length other than 5 octets | |
-> The endpoint MUST respond with a stream error of type FRAME_SIZE_ERROR. | |
Expected: GOAWAY Frame (Error Code: FRAME_SIZE_ERROR) | |
RST_STREAM Frame (Error Code: FRAME_SIZE_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
6.4. RST_STREAM | |
using source address 127.0.0.1:59880 | |
× 1: Sends a RST_STREAM frame with 0x0 stream identifier | |
-> The endpoint MUST respond with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59882 | |
× 2: Sends a RST_STREAM frame on a idle stream | |
-> The endpoint MUST respond with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59884 | |
× 3: Sends a RST_STREAM frame with a length other than 4 octets | |
-> The endpoint MUST respond with a connection error of type FRAME_SIZE_ERROR. | |
Expected: GOAWAY Frame (Error Code: FRAME_SIZE_ERROR) | |
RST_STREAM Frame (Error Code: FRAME_SIZE_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
6.5. SETTINGS | |
using source address 127.0.0.1:59886 | |
× 1: Sends a SETTINGS frame with ACK flag and payload | |
-> The endpoint MUST respond with a connection error of type FRAME_SIZE_ERROR. | |
Expected: GOAWAY Frame (Error Code: FRAME_SIZE_ERROR) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59889 | |
× 2: Sends a SETTINGS frame with a stream identifier other than 0x0 | |
-> The endpoint MUST respond with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: SETTINGS Frame (length:0, flags:0x01, stream_id:0) | |
using source address 127.0.0.1:59891 | |
× 3: Sends a SETTINGS frame with a length other than a multiple of 6 octets | |
-> The endpoint MUST respond with a connection error of type FRAME_SIZE_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
GOAWAY Frame (Error Code: FRAME_SIZE_ERROR) | |
RST_STREAM Frame (Error Code: FRAME_SIZE_ERROR) | |
Connection closed | |
Actual: SETTINGS Frame (length:0, flags:0x01, stream_id:0) | |
6.5.2. Defined SETTINGS Parameters | |
using source address 127.0.0.1:59893 | |
× 1: SETTINGS_ENABLE_PUSH (0x2): Sends the value other than 0 or 1 | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: SETTINGS Frame (length:0, flags:0x01, stream_id:0) | |
using source address 127.0.0.1:59895 | |
× 2: SETTINGS_INITIAL_WINDOW_SIZE (0x4): Sends the value above the maximum flow control window size | |
-> The endpoint MUST treat this as a connection error of type FLOW_CONTROL_ERROR. | |
Expected: GOAWAY Frame (Error Code: FLOW_CONTROL_ERROR) | |
Connection closed | |
Actual: SETTINGS Frame (length:0, flags:0x01, stream_id:0) | |
using source address 127.0.0.1:59897 | |
× 3: SETTINGS_MAX_FRAME_SIZE (0x5): Sends the value below the initial value | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: SETTINGS Frame (length:0, flags:0x01, stream_id:0) | |
using source address 127.0.0.1:59899 | |
× 4: SETTINGS_MAX_FRAME_SIZE (0x5): Sends the value above the maximum allowed frame size | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: SETTINGS Frame (length:0, flags:0x01, stream_id:0) | |
using source address 127.0.0.1:59901 | |
× 5: Sends a SETTINGS frame with unknown identifier | |
-> The endpoint MUST ignore that setting. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:) | |
Actual: SETTINGS Frame (length:0, flags:0x01, stream_id:0) | |
6.5.3. Settings Synchronization | |
using source address 127.0.0.1:59904 | |
× 1: Sends multiple values of SETTINGS_INITIAL_WINDOW_SIZE | |
-> The endpoint MUST process the values in the settings in the order they apper. | |
Expected: DATA Frame (length:1, flags:0x00, stream_id:1) | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
6.7. PING | |
using source address 127.0.0.1:59910 | |
× 1: Sends a PING frame | |
-> The endpoint MUST sends a PING frame with ACK, with an identical payload. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:h2spec) | |
Actual: Timeout | |
using source address 127.0.0.1:59912 | |
× 2: Sends a PING frame with ACK | |
-> The endpoint MUST NOT respond to PING frames with ACK. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:h2spec) | |
Actual: Timeout | |
using source address 127.0.0.1:59914 | |
× 3: Sends a PING frame with a stream identifier field value other than 0x0 | |
-> The endpoint MUST respond with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59916 | |
× 4: Sends a PING frame with a length field value other than 8 | |
-> The endpoint MUST treat this as a connection error of type FRAME_SIZE_ERROR. | |
Expected: GOAWAY Frame (Error Code: FRAME_SIZE_ERROR) | |
Connection closed | |
Actual: Timeout | |
6.8. GOAWAY | |
using source address 127.0.0.1:59918 | |
× 1: Sends a GOAWAY frame with a stream identifier other than 0x0 | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
6.9. WINDOW_UPDATE | |
using source address 127.0.0.1:59920 | |
× 1: Sends a WINDOW_UPDATE frame with a flow control window increment of 0 | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59922 | |
× 2: Sends a WINDOW_UPDATE frame with a flow control window increment of 0 on a stream | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
using source address 127.0.0.1:59924 | |
× 3: Sends a WINDOW_UPDATE frame with a length other than 4 octets | |
-> The endpoint MUST treat this as a connection error of type FRAME_SIZE_ERROR. | |
Expected: GOAWAY Frame (Error Code: FRAME_SIZE_ERROR) | |
Connection closed | |
Actual: Timeout | |
6.9.1. The Flow-Control Window | |
using source address 127.0.0.1:59927 | |
× 1: Sends SETTINGS frame to set the initial window size to 1 and sends HEADERS frame | |
-> The endpoint MUST NOT send a flow-controlled frame with a length that exceeds the space available. | |
Expected: DATA Frame (length:1, flags:0x00, stream_id:1) | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59931 | |
× 2: Sends multiple WINDOW_UPDATE frames increasing the flow control window to above 2^31-1 | |
-> The endpoint MUST sends a GOAWAY frame with a FLOW_CONTROL_ERROR code. | |
Expected: GOAWAY Frame (Error Code: FLOW_CONTROL_ERROR) | |
Actual: Timeout | |
using source address 127.0.0.1:59933 | |
× 3: Sends multiple WINDOW_UPDATE frames increasing the flow control window to above 2^31-1 on a stream | |
-> The endpoint MUST sends a RST_STREAM frame with a FLOW_CONTROL_ERROR code. | |
Expected: RST_STREAM Frame (Error Code: FLOW_CONTROL_ERROR) | |
Actual: Timeout | |
6.9.2. Initial Flow-Control Window Size | |
using source address 127.0.0.1:59935 | |
× 1: Changes SETTINGS_INITIAL_WINDOW_SIZE after sending HEADERS frame | |
-> The endpoint MUST adjust the size of all stream flow-control windows. | |
Expected: DATA Frame (length:1, flags:0x00, stream_id:1) | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59939 | |
× 2: Sends a SETTINGS frame for window size to be negative | |
-> The endpoint MUST track the negative flow-control window. | |
Expected: DATA Frame (length:1, flags:0x00, stream_id:1) | |
Actual: Timeout | |
using source address 127.0.0.1:59943 | |
× 3: Sends a SETTINGS_INITIAL_WINDOW_SIZE settings with an exceeded maximum window size value | |
-> The endpoint MUST treat this as a connection error of type FLOW_CONTROL_ERROR. | |
Expected: GOAWAY Frame (Error Code: FLOW_CONTROL_ERROR) | |
Connection closed | |
Actual: SETTINGS Frame (length:0, flags:0x01, stream_id:0) | |
6.10. CONTINUATION | |
using source address 127.0.0.1:59947 | |
× 2: Sends a CONTINUATION frame followed by any frame other than CONTINUATION | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:5, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59951 | |
× 4: Sends a CONTINUATION frame preceded by a HEADERS frame with END_HEADERS flag | |
-> The endpoint MUST respond with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59953 | |
× 5: Sends a CONTINUATION frame preceded by a CONTINUATION frame with END_HEADERS flag | |
-> The endpoint MUST respond with a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
7. Error Codes | |
using source address 127.0.0.1:59958 | |
× 1: Sends a GOAWAY frame with unknown error code | |
-> The endpoint MUST NOT trigger any special behavior. | |
Expected: Connection closed | |
PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:h2spec) | |
Actual: Timeout | |
using source address 127.0.0.1:59960 | |
× 2: Sends a RST_STREAM frame with unknown error code | |
-> The endpoint MUST NOT trigger any special behavior. | |
Expected: PING Frame (length:8, flags:0x01, stream_id:0, opaque_data:) | |
Actual: Timeout | |
8. HTTP Message Exchanges | |
8.1. HTTP Request/Response Exchange | |
using source address 127.0.0.1:59962 | |
× 1: Sends a second HEADERS frame without the END_STREAM flag | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:5, flags:0x01, stream_id:1) | |
8.1.2. HTTP Header Fields | |
using source address 127.0.0.1:59964 | |
× 1: Sends a HEADERS frame that contains the header field name in uppercase letters | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
8.1.2.1. Pseudo-Header Fields | |
using source address 127.0.0.1:59966 | |
× 1: Sends a HEADERS frame that contains a unknown pseudo-header field | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59968 | |
× 2: Sends a HEADERS frame that contains the pseudo-header field defined for response | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59970 | |
× 3: Sends a HEADERS frame that contains a pseudo-header field as trailers | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:5, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59972 | |
× 4: Sends a HEADERS frame that contains a pseudo-header field that appears in a header block after a regular header field | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
8.1.2.2. Connection-Specific Header Fields | |
using source address 127.0.0.1:59975 | |
× 1: Sends a HEADERS frame that contains the connection-specific header field | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59977 | |
× 2: Sends a HEADERS frame that contains the TE header field with any value other than "trailers" | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
8.1.2.3. Request Pseudo-Header Fields | |
using source address 127.0.0.1:59979 | |
× 1: Sends a HEADERS frame with empty ":path" pseudo-header field | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59982 | |
× 2: Sends a HEADERS frame that omits ":method" pseudo-header field | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59984 | |
× 3: Sends a HEADERS frame that omits ":scheme" pseudo-header field | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59986 | |
× 4: Sends a HEADERS frame that omits ":path" pseudo-header field | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59988 | |
× 5: Sends a HEADERS frame with duplicated ":method" pseudo-header field | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59991 | |
× 6: Sends a HEADERS frame with duplicated ":scheme" pseudo-header field | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59993 | |
× 7: Sends a HEADERS frame with duplicated ":path" pseudo-header field | |
-> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
8.1.2.6. Malformed Requests and Responses | |
using source address 127.0.0.1:59995 | |
× 1: Sends a HEADERS frame with the "content-length" header field which does not equal the DATA frame payload length | |
-> The endpoint MUST treat this as a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:5, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:59998 | |
× 2: Sends a HEADERS frame with the "content-length" header field which does not equal the sum of the multiple DATA frames payload length | |
-> The endpoint MUST treat this as a stream error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
RST_STREAM Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:10, flags:0x01, stream_id:1) | |
8.2. Server Push | |
using source address 127.0.0.1:60000 | |
× 1: Sends a PUSH_PROMISE frame | |
-> The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR. | |
Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) | |
Connection closed | |
Actual: Timeout | |
HPACK: Header Compression for HTTP/2 | |
2. Compression Process Overview | |
2.3. Indexing Tables | |
2.3.3. Index Address Space | |
using source address 127.0.0.1:60002 | |
× 1: Sends a indexed header field representation with invalid index | |
-> The endpoint MUST treat this as a decoding error. | |
Expected: GOAWAY Frame (Error Code: COMPRESSION_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
4. Dynamic Table Management | |
4.2. Maximum Table Size | |
using source address 127.0.0.1:60006 | |
× 1: Sends a dynamic table size update at the end of header block | |
-> The endpoint MUST treat this as a decoding error. | |
Expected: GOAWAY Frame (Error Code: COMPRESSION_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
5. Primitive Type Representations | |
5.2. String Literal Representation | |
using source address 127.0.0.1:60008 | |
× 1: Sends a Huffman-encoded string literal representation with padding longer than 7 bits | |
-> The endpoint MUST treat this as a decoding error. | |
Expected: GOAWAY Frame (Error Code: COMPRESSION_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:60011 | |
× 2: Sends a Huffman-encoded string literal representation padded by zero | |
-> The endpoint MUST treat this as a decoding error. | |
Expected: GOAWAY Frame (Error Code: COMPRESSION_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
using source address 127.0.0.1:60013 | |
× 3: Sends a Huffman-encoded string literal representation containing the EOS symbol | |
-> The endpoint MUST treat this as a decoding error. | |
Expected: GOAWAY Frame (Error Code: COMPRESSION_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
6. Binary Format | |
6.3. Dynamic Table Size Update | |
using source address 127.0.0.1:60019 | |
× 1: Sends a dynamic table size update larger than the value of SETTINGS_HEADER_TABLE_SIZE | |
-> The endpoint MUST treat this as a decoding error. | |
Expected: GOAWAY Frame (Error Code: COMPRESSION_ERROR) | |
Connection closed | |
Actual: DATA Frame (length:20, flags:0x01, stream_id:1) | |
Finished in 181.0516 seconds | |
146 tests, 45 passed, 0 skipped, 101 failed |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment