Hypertext Transfer Protocol Version 2 (HTTP/2) 3. Starting HTTP/2 3.5. HTTP/2 Connection Preface [send] Raw Data (0x505249202a20485454502f322e300d0a0d0a534d0d0a0d0a) [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) ✔ 1: Sends client connection preface [send] Raw Data (0x494e56414c494420434f4e4e454354494f4e20505245464143450d0a0d0a) [recv] Connection closed ✔ 2: Sends invalid connection preface 4. HTTP Frames 4.1. Frame Format [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] Raw Data (0x000008160000000000) [send] Raw Data (0x0000000000000000) [send] PING Frame (length:8, flags:0x00, stream_id:0) [recv] PING Frame (length:8, flags:0x01, stream_id:0) ✔ 1: Sends a frame with unknown type [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] Raw Data (0x000008061600000000) [send] Raw Data (0x0000000000000000) [recv] PING Frame (length:8, flags:0x01, stream_id:0) ✔ 2: Sends a frame with undefined flag [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] Raw Data (0x000008061680000000) [send] Raw Data (0x0000000000000000) [recv] PING Frame (length:8, flags:0x01, stream_id:0) ✔ 3: Sends a frame with reserved field bit 4.2. Frame Size [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x04, stream_id:1) [send] DATA Frame (length:16384, flags:0x01, stream_id:1) [recv] HEADERS Frame (length:63, flags:0x04, stream_id:1) ✔ 1: Sends a DATA frame with 2^14 octets in length [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x04, stream_id:1) [send] DATA Frame (length:16385, flags:0x01, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 2: Sends a large size DATA frame that exceeds the SETTINGS_MAX_FRAME_SIZE [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:17575, flags:0x05, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 3: Sends a large size HEADERS frame that exceeds the SETTINGS_MAX_FRAME_SIZE 4.3. Header Compression and Decompression [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] Raw Data (0x00000101050000000140) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 1: Sends invalid header block fragment [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x00, stream_id:1) [send] PRIORITY Frame (length:5, flags:0x00, stream_id:1) [send] CONTINUATION Frame (length:3512, flags:0x04, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 2: Sends a PRIORITY frame while sending the header blocks [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x00, stream_id:1) [send] HEADERS Frame (length:4, flags:0x05, stream_id:3) [send] CONTINUATION Frame (length:3512, flags:0x04, stream_id:1) [recv] Connection closed ✔ 3: Sends a HEADERS frame to another stream while sending the header blocks 5. Streams and Multiplexing 5.1. Stream States [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] DATA Frame (length:4, flags:0x01, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 1: idle: Sends a DATA frame [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] RST_STREAM Frame (length:4, flags:0x00, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 2: idle: Sends a RST_STREAM frame [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] WINDOW_UPDATE Frame (length:4, flags:0x00, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 3: idle: Sends a WINDOW_UPDATE frame [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] CONTINUATION Frame (length:15, flags:0x04, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 4: idle: Sends a CONTINUATION frame [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x05, stream_id:1) [send] DATA Frame (length:4, flags:0x01, stream_id:1) [recv] HEADERS Frame (length:63, flags:0x04, stream_id:1) [recv] DATA Frame (length:91, flags:0x01, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 5: half closed (remote): Sends a DATA frame [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x05, stream_id:1) [send] HEADERS Frame (length:4, flags:0x05, stream_id:1) [recv] HEADERS Frame (length:63, flags:0x04, stream_id:1) [recv] DATA Frame (length:91, flags:0x01, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) [recv] Connection closed ✔ 6: half closed (remote): Sends a HEADERS frame [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x05, stream_id:1) [send] CONTINUATION Frame (length:15, flags:0x04, stream_id:1) [recv] HEADERS Frame (length:63, flags:0x04, stream_id:1) [recv] DATA Frame (length:91, flags:0x01, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 7: half closed (remote): Sends a CONTINUATION frame [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x04, stream_id:1) [send] RST_STREAM Frame (length:4, flags:0x00, stream_id:1) [send] DATA Frame (length:4, flags:0x01, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 8: closed: Sends a DATA frame after sending RST_STREAM frame [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x04, stream_id:1) [send] RST_STREAM Frame (length:4, flags:0x00, stream_id:1) [send] HEADERS Frame (length:4, flags:0x05, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) [recv] Connection closed ✔ 9: closed: Sends a HEADERS frame after sending RST_STREAM frame [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x04, stream_id:1) [send] RST_STREAM Frame (length:4, flags:0x00, stream_id:1) [send] CONTINUATION Frame (length:3512, flags:0x04, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 10: closed: Sends a CONTINUATION frame after sending RST_STREAM frame [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x05, stream_id:1) [recv] HEADERS Frame (length:63, flags:0x04, stream_id:1) [recv] DATA Frame (length:91, flags:0x01, stream_id:1) [send] DATA Frame (length:4, flags:0x01, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 11: closed: Sends a DATA frame [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x05, stream_id:1) [recv] HEADERS Frame (length:63, flags:0x04, stream_id:1) [recv] DATA Frame (length:91, flags:0x01, stream_id:1) [send] HEADERS Frame (length:15, flags:0x05, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) [recv] Connection closed ✔ 12: closed: Sends a HEADERS frame [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x05, stream_id:1) [recv] HEADERS Frame (length:63, flags:0x04, stream_id:1) [recv] DATA Frame (length:91, flags:0x01, stream_id:1) [send] CONTINUATION Frame (length:3512, flags:0x04, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 13: closed: Sends a CONTINUATION frame 5.1.1. Stream Identifiers [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x05, stream_id:2) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 1: Sends even-numbered stream identifier [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x05, stream_id:5) [send] HEADERS Frame (length:4, flags:0x05, stream_id:3) [recv] HEADERS Frame (length:63, flags:0x04, stream_id:1) [recv] DATA Frame (length:91, flags:0x01, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 2: Sends stream identifier that is numerically smaller than previous 5.1.2. Stream Concurrency [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] HEADERS Frame (length:15, flags:0x05, stream_id:1) [send] HEADERS Frame (length:15, flags:0x05, stream_id:3) [send] HEADERS Frame (length:15, flags:0x05, stream_id:5) [send] HEADERS Frame (length:15, flags:0x05, stream_id:7) [send] HEADERS Frame (length:15, flags:0x05, stream_id:9) [send] HEADERS Frame (length:15, flags:0x05, stream_id:11) [send] HEADERS Frame (length:15, flags:0x05, stream_id:13) [send] HEADERS Frame (length:15, flags:0x05, stream_id:15) [send] HEADERS Frame (length:15, flags:0x05, stream_id:17) [send] HEADERS Frame (length:15, flags:0x05, stream_id:19) [send] HEADERS Frame (length:15, flags:0x05, stream_id:21) [send] HEADERS Frame (length:15, flags:0x05, stream_id:23) [send] HEADERS Frame (length:15, flags:0x05, stream_id:25) [send] HEADERS Frame (length:15, flags:0x05, stream_id:27) [send] HEADERS Frame (length:15, flags:0x05, stream_id:29) [send] HEADERS Frame (length:15, flags:0x05, stream_id:31) [send] HEADERS Frame (length:15, flags:0x05, stream_id:33) [send] HEADERS Frame (length:15, flags:0x05, stream_id:35) [send] HEADERS Frame (length:15, flags:0x05, stream_id:37) [send] HEADERS Frame (length:15, flags:0x05, stream_id:39) [send] HEADERS Frame (length:15, flags:0x05, stream_id:41) [send] HEADERS Frame (length:15, flags:0x05, stream_id:43) [send] HEADERS Frame (length:15, flags:0x05, stream_id:45) [send] HEADERS Frame (length:15, flags:0x05, stream_id:47) [send] HEADERS Frame (length:15, flags:0x05, stream_id:49) [send] HEADERS Frame (length:15, flags:0x05, stream_id:51) [send] HEADERS Frame (length:15, flags:0x05, stream_id:53) [send] HEADERS Frame (length:15, flags:0x05, stream_id:55) [send] HEADERS Frame (length:15, flags:0x05, stream_id:57) [send] HEADERS Frame (length:15, flags:0x05, stream_id:59) [send] HEADERS Frame (length:15, flags:0x05, stream_id:61) [send] HEADERS Frame (length:15, flags:0x05, stream_id:63) [send] HEADERS Frame (length:15, flags:0x05, stream_id:65) [send] HEADERS Frame (length:15, flags:0x05, stream_id:67) [send] HEADERS Frame (length:15, flags:0x05, stream_id:69) [send] HEADERS Frame (length:15, flags:0x05, stream_id:71) [send] HEADERS Frame (length:15, flags:0x05, stream_id:73) [send] HEADERS Frame (length:15, flags:0x05, stream_id:75) [send] HEADERS Frame (length:15, flags:0x05, stream_id:77) [send] HEADERS Frame (length:15, flags:0x05, stream_id:79) [send] HEADERS Frame (length:15, flags:0x05, stream_id:81) [send] HEADERS Frame (length:15, flags:0x05, stream_id:83) [send] HEADERS Frame (length:15, flags:0x05, stream_id:85) [send] HEADERS Frame (length:15, flags:0x05, stream_id:87) [send] HEADERS Frame (length:15, flags:0x05, stream_id:89) [send] HEADERS Frame (length:15, flags:0x05, stream_id:91) [send] HEADERS Frame (length:15, flags:0x05, stream_id:93) [send] HEADERS Frame (length:15, flags:0x05, stream_id:95) [send] HEADERS Frame (length:15, flags:0x05, stream_id:97) [send] HEADERS Frame (length:15, flags:0x05, stream_id:99) [send] HEADERS Frame (length:15, flags:0x05, stream_id:101) [send] HEADERS Frame (length:15, flags:0x05, stream_id:103) [send] HEADERS Frame (length:15, flags:0x05, stream_id:105) [send] HEADERS Frame (length:15, flags:0x05, stream_id:107) [send] HEADERS Frame (length:15, flags:0x05, stream_id:109) [send] HEADERS Frame (length:15, flags:0x05, stream_id:111) [send] HEADERS Frame (length:15, flags:0x05, stream_id:113) [send] HEADERS Frame (length:15, flags:0x05, stream_id:115) [send] HEADERS Frame (length:15, flags:0x05, stream_id:117) [send] HEADERS Frame (length:15, flags:0x05, stream_id:119) [send] HEADERS Frame (length:15, flags:0x05, stream_id:121) [send] HEADERS Frame (length:15, flags:0x05, stream_id:123) [send] HEADERS Frame (length:15, flags:0x05, stream_id:125) [send] HEADERS Frame (length:15, flags:0x05, stream_id:127) [send] HEADERS Frame (length:15, flags:0x05, stream_id:129) [send] HEADERS Frame (length:15, flags:0x05, stream_id:131) [send] HEADERS Frame (length:15, flags:0x05, stream_id:133) [send] HEADERS Frame (length:15, flags:0x05, stream_id:135) [send] HEADERS Frame (length:15, flags:0x05, stream_id:137) [send] HEADERS Frame (length:15, flags:0x05, stream_id:139) [send] HEADERS Frame (length:15, flags:0x05, stream_id:141) [send] HEADERS Frame (length:15, flags:0x05, stream_id:143) [send] HEADERS Frame (length:15, flags:0x05, stream_id:145) [send] HEADERS Frame (length:15, flags:0x05, stream_id:147) [send] HEADERS Frame (length:15, flags:0x05, stream_id:149) [send] HEADERS Frame (length:15, flags:0x05, stream_id:151) [send] HEADERS Frame (length:15, flags:0x05, stream_id:153) [send] HEADERS Frame (length:15, flags:0x05, stream_id:155) [send] HEADERS Frame (length:15, flags:0x05, stream_id:157) [send] HEADERS Frame (length:15, flags:0x05, stream_id:159) [send] HEADERS Frame (length:15, flags:0x05, stream_id:161) [send] HEADERS Frame (length:15, flags:0x05, stream_id:163) [send] HEADERS Frame (length:15, flags:0x05, stream_id:165) [send] HEADERS Frame (length:15, flags:0x05, stream_id:167) [send] HEADERS Frame (length:15, flags:0x05, stream_id:169) [send] HEADERS Frame (length:15, flags:0x05, stream_id:171) [send] HEADERS Frame (length:15, flags:0x05, stream_id:173) [send] HEADERS Frame (length:15, flags:0x05, stream_id:175) [send] HEADERS Frame (length:15, flags:0x05, stream_id:177) [send] HEADERS Frame (length:15, flags:0x05, stream_id:179) [send] HEADERS Frame (length:15, flags:0x05, stream_id:181) [send] HEADERS Frame (length:15, flags:0x05, stream_id:183) [send] HEADERS Frame (length:15, flags:0x05, stream_id:185) [send] HEADERS Frame (length:15, flags:0x05, stream_id:187) [send] HEADERS Frame (length:15, flags:0x05, stream_id:189) [send] HEADERS Frame (length:15, flags:0x05, stream_id:191) [send] HEADERS Frame (length:15, flags:0x05, stream_id:193) [send] HEADERS Frame (length:15, flags:0x05, stream_id:195) [send] HEADERS Frame (length:15, flags:0x05, stream_id:197) [send] HEADERS Frame (length:15, flags:0x05, stream_id:199) [send] HEADERS Frame (length:15, flags:0x05, stream_id:201) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] HEADERS Frame (length:63, flags:0x04, stream_id:1) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:3) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:5) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:7) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:9) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:11) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:13) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:15) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:17) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:19) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:21) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:23) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:25) [recv] HEADERS Frame (length:30, flags:0x04, stream_id:27) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:29) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:31) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:33) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:35) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:37) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:39) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:41) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:43) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:45) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:47) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:49) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:51) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:53) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:55) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:57) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:59) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:61) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:63) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:65) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:67) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:69) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:71) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:73) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:75) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:77) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:79) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:81) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:83) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:85) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:87) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:89) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:91) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:93) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:95) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:97) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:99) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:101) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:103) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:105) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:107) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:109) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:111) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:113) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:115) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:117) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:119) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:121) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:123) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:125) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:127) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:129) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:131) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:133) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:135) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:137) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:139) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:141) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:143) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:145) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:147) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:149) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:151) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:153) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:155) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:157) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:159) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:161) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:163) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:165) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:167) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:169) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:171) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:173) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:175) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:177) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:179) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:181) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:183) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:185) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:187) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:189) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:191) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:193) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:195) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:197) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:199) [recv] HEADERS Frame (length:3, flags:0x04, stream_id:201) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 1: Sends HEADERS frames that causes their advertised concurrent stream limit to be exceeded 5.3. Stream Priority 5.3.1. Stream Dependencies [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:20, flags:0x25, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 1: Sends HEADERS frame that depends on itself [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] PRIORITY Frame (length:5, flags:0x00, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 2: Sends PRIORITY frame that depend on itself 5.4. Error Handling 5.4.1. Connection Error Handling [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] Raw Data (0x000008060000000003) [send] Raw Data (0x0000000000000000) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) [recv] Connection closed ✔ 1: Sends an invalid PING frame for connection close [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] Raw Data (0x000008060000000003) [send] Raw Data (0x0000000000000000) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 2: Sends an invalid PING frame to receive GOAWAY frame 5.5. Extending HTTP/2 [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] Raw Data (0x000008160000000000) [send] Raw Data (0x0000000000000000) [send] PING Frame (length:8, flags:0x00, stream_id:0) [recv] PING Frame (length:8, flags:0x01, stream_id:0) ✔ 1: Sends an unknown extension frame [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x01, stream_id:1) [send] Raw Data (0x000008160000000000) [send] Raw Data (0x0000000000000000) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 2: Sends an unknown extension frame in the middle of a header block 6. Frame Definitions 6.1. DATA [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] ??? Frame (Failed to parse the frame) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 1: Sends a DATA frame with 0x0 stream identifier [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x05, stream_id:1) [send] DATA Frame (length:4, flags:0x01, stream_id:1) [recv] HEADERS Frame (length:63, flags:0x04, stream_id:1) [recv] DATA Frame (length:91, flags:0x01, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 2: Sends a DATA frame on the stream that is not in "open" or "half-closed (local)" state [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:18, flags:0x04, stream_id:1) [send] Raw Data (0x000005000900000001) [send] Raw Data (0x0654657374) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 3: Sends a DATA frame with invalid pad length 6.2. HEADERS [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x00, stream_id:1) [send] PRIORITY Frame (length:5, flags:0x00, stream_id:1) [send] CONTINUATION Frame (length:3512, flags:0x04, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 1: Sends a HEADERS frame without the END_HEADERS flag, and a PRIORITY frame [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x00, stream_id:1) [send] HEADERS Frame (length:4, flags:0x05, stream_id:3) [send] CONTINUATION Frame (length:3512, flags:0x04, stream_id:1) [recv] Connection closed ✔ 2: Sends a HEADERS frame to another stream while sending a HEADERS frame [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] ??? Frame (Failed to parse the frame) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 3: Sends a HEADERS frame with 0x0 stream identifier [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] Raw Data (0x000010010d00000001) [send] Raw Data (0x11) [send] Raw Data (0x828784418a089d5c0b8170dc6da6c1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 4: Sends a HEADERS frame with invalid pad length 6.3. PRIORITY [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] ??? Frame (Failed to parse the frame) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 1: Sends a PRIORITY frame with 0x0 stream identifier [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x05, stream_id:1) [send] Raw Data (0x000004020000000001) [send] Raw Data (0x80000001) [recv] HEADERS Frame (length:63, flags:0x04, stream_id:1) [recv] DATA Frame (length:91, flags:0x01, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 2: Sends a PRIORITY frame with a length other than 5 octets 6.4. RST_STREAM [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] ??? Frame (Failed to parse the frame) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 1: Sends a RST_STREAM frame with 0x0 stream identifier [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] RST_STREAM Frame (length:4, flags:0x00, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 2: Sends a RST_STREAM frame on a idle stream [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x05, stream_id:1) [send] Raw Data (0x000003030000000001) [send] Raw Data (0x000000) [recv] HEADERS Frame (length:63, flags:0x04, stream_id:1) [recv] DATA Frame (length:91, flags:0x01, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 3: Sends a RST_STREAM frame with a length other than 4 octets 6.5. SETTINGS [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] Raw Data (0x000001040100000000) [send] Raw Data (0x00) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 1: Sends a SETTINGS frame with ACK flag and payload [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] Raw Data (0x000006040000000001) [send] Raw Data (0x000300000064) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 2: Sends a SETTINGS frame with a stream identifier other than 0x0 [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] Raw Data (0x000003040000000000) [send] Raw Data (0x000300) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 3: Sends a SETTINGS frame with a length other than a multiple of 6 octets 6.5.2. Defined SETTINGS Parameters [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 1: SETTINGS_ENABLE_PUSH (0x2): Sends the value other than 0 or 1 [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] ??? Frame (Failed to parse the frame) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 2: SETTINGS_INITIAL_WINDOW_SIZE (0x4): Sends the value above the maximum flow control window size [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) [recv] Connection closed ✔ 3: SETTINGS_MAX_FRAME_SIZE (0x5): Sends the value below the initial value [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) [recv] Connection closed ✔ 4: SETTINGS_MAX_FRAME_SIZE (0x5): Sends the value above the maximum allowed frame size [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] PING Frame (length:8, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] PING Frame (length:8, flags:0x01, stream_id:0) ✔ 5: Sends a SETTINGS frame with unknown identifier 6.5.3. Settings Synchronization [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x05, stream_id:1) [recv] HEADERS Frame (length:63, flags:0x04, stream_id:1) [recv] DATA Frame (length:91, flags:0x01, stream_id:1) [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] SETTINGS Frame (length:12, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x05, stream_id:1) [recv] HEADERS Frame (length:63, flags:0x04, stream_id:1) [recv] DATA Frame (length:1, flags:0x00, stream_id:1) ✔ 1: Sends multiple values of SETTINGS_INITIAL_WINDOW_SIZE [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) ✔ 2: Sends a SETTINGS frame without ACK flag 6.7. PING [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] PING Frame (length:8, flags:0x00, stream_id:0) [recv] PING Frame (length:8, flags:0x01, stream_id:0) ✔ 1: Sends a PING frame [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] PING Frame (length:8, flags:0x01, stream_id:0) [send] PING Frame (length:8, flags:0x00, stream_id:0) [recv] PING Frame (length:8, flags:0x01, stream_id:0) ✔ 2: Sends a PING frame with ACK [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] Raw Data (0x000008060000000001) [send] Raw Data (0x0000000000000000) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 3: Sends a PING frame with a stream identifier field value other than 0x0 [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] Raw Data (0x000006060000000000) [send] Raw Data (0x000000000000) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 4: Sends a PING frame with a length field value other than 8 6.8. GOAWAY [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] Raw Data (0x000008070000000001) [send] Raw Data (0x0000000000000000) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 1: Sends a GOAWAY frame with a stream identifier other than 0x0 6.9. WINDOW_UPDATE [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] ??? Frame (Failed to parse the frame) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 1: Sends a WINDOW_UPDATE frame with a flow control window increment of 0 [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x04, stream_id:1) [send] ??? Frame (Failed to parse the frame) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 2: Sends a WINDOW_UPDATE frame with a flow control window increment of 0 on a stream [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] Raw Data (0x000003080000000000) [send] Raw Data (0x000001) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 3: Sends a WINDOW_UPDATE frame with a length other than 4 octets 6.9.1. The Flow-Control Window [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x05, stream_id:1) [recv] HEADERS Frame (length:63, flags:0x04, stream_id:1) [recv] DATA Frame (length:91, flags:0x01, stream_id:1) [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x05, stream_id:1) [recv] HEADERS Frame (length:63, flags:0x04, stream_id:1) [recv] DATA Frame (length:1, flags:0x00, stream_id:1) ✔ 1: Sends SETTINGS frame to set the initial window size to 1 and sends HEADERS frame [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] WINDOW_UPDATE Frame (length:4, flags:0x00, stream_id:0) [send] WINDOW_UPDATE Frame (length:4, flags:0x00, stream_id:0) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 2: Sends multiple WINDOW_UPDATE frames increasing the flow control window to above 2^31-1 [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x04, stream_id:1) [send] WINDOW_UPDATE Frame (length:4, flags:0x00, stream_id:1) [send] WINDOW_UPDATE Frame (length:4, flags:0x00, stream_id:1) [recv] RST_STREAM Frame (length:4, flags:0x00, stream_id:1) ✔ 3: Sends multiple WINDOW_UPDATE frames increasing the flow control window to above 2^31-1 on a stream 6.9.2. Initial Flow-Control Window Size [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x05, stream_id:1) [recv] HEADERS Frame (length:63, flags:0x04, stream_id:1) [recv] DATA Frame (length:91, flags:0x01, stream_id:1) [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x05, stream_id:1) [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] HEADERS Frame (length:63, flags:0x04, stream_id:1) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] DATA Frame (length:1, flags:0x00, stream_id:1) ✔ 1: Changes SETTINGS_INITIAL_WINDOW_SIZE after sending HEADERS frame [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x05, stream_id:1) [recv] HEADERS Frame (length:63, flags:0x04, stream_id:1) [recv] DATA Frame (length:91, flags:0x01, stream_id:1) [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x05, stream_id:1) [recv] HEADERS Frame (length:63, flags:0x04, stream_id:1) [recv] DATA Frame (length:3, flags:0x00, stream_id:1) [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] WINDOW_UPDATE Frame (length:4, flags:0x00, stream_id:1) [recv] DATA Frame (length:1, flags:0x00, stream_id:1) ✔ 2: Sends a SETTINGS frame for window size to be negative [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] Raw Data (0x000006040000000000) [send] Raw Data (0x000480000000) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 3: Sends a SETTINGS_INITIAL_WINDOW_SIZE settings with an exceeded maximum window size value 6.10. CONTINUATION [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x01, stream_id:1) [send] CONTINUATION Frame (length:3512, flags:0x00, stream_id:1) [send] CONTINUATION Frame (length:1, flags:0x04, stream_id:1) [recv] HEADERS Frame (length:63, flags:0x04, stream_id:1) ✔ 1: Sends multiple CONTINUATION frames preceded by a HEADERS frame [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x00, stream_id:1) [send] CONTINUATION Frame (length:3512, flags:0x00, stream_id:1) [send] DATA Frame (length:4, flags:0x01, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 2: Sends a CONTINUATION frame followed by any frame other than CONTINUATION [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x01, stream_id:1) [send] ??? Frame (Failed to parse the frame) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 3: Sends a CONTINUATION frame with 0x0 stream identifier [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x05, stream_id:1) [send] CONTINUATION Frame (length:3512, flags:0x04, stream_id:1) [recv] HEADERS Frame (length:63, flags:0x04, stream_id:1) [recv] DATA Frame (length:91, flags:0x01, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 4: Sends a CONTINUATION frame preceded by a HEADERS frame with END_HEADERS flag [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x01, stream_id:1) [send] CONTINUATION Frame (length:3512, flags:0x04, stream_id:1) [send] CONTINUATION Frame (length:1, flags:0x04, stream_id:1) [recv] HEADERS Frame (length:63, flags:0x04, stream_id:1) [recv] DATA Frame (length:91, flags:0x01, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 5: Sends a CONTINUATION frame preceded by a CONTINUATION frame with END_HEADERS flag [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x00, stream_id:1) [send] DATA Frame (length:4, flags:0x01, stream_id:1) [send] CONTINUATION Frame (length:3512, flags:0x00, stream_id:1) [send] ??? Frame (Failed to parse the frame) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 6: Sends a CONTINUATION frame preceded by a DATA frame 7. Error Codes [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] GOAWAY Frame (length:8, flags:0x00, stream_id:0) [send] PING Frame (length:8, flags:0x00, stream_id:0) [recv] PING Frame (length:8, flags:0x01, stream_id:0) ✔ 1: Sends a GOAWAY frame with unknown error code [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x04, stream_id:1) [send] RST_STREAM Frame (length:4, flags:0x00, stream_id:1) [send] PING Frame (length:8, flags:0x00, stream_id:0) [recv] PING Frame (length:8, flags:0x01, stream_id:0) ✔ 2: Sends a RST_STREAM frame with unknown error code 8. HTTP Message Exchanges 8.1. HTTP Request/Response Exchange [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x04, stream_id:1) [send] DATA Frame (length:4, flags:0x00, stream_id:1) [send] HEADERS Frame (length:10, flags:0x04, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 1: Sends a second HEADERS frame without the END_STREAM flag 8.1.2. HTTP Header Fields [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:26, flags:0x05, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 1: Sends a HEADERS frame that contains the header field name in uppercase letters 8.1.2.1. Pseudo-Header Fields [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:24, flags:0x05, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 1: Sends a HEADERS frame that contains a unknown pseudo-header field [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:16, flags:0x05, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 2: Sends a HEADERS frame that contains the pseudo-header field defined for response [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:15, flags:0x04, stream_id:1) [send] DATA Frame (length:4, flags:0x00, stream_id:1) [send] HEADERS Frame (length:1, flags:0x04, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 3: Sends a HEADERS frame that contains a pseudo-header field as trailers [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:25, flags:0x05, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 4: Sends a HEADERS frame that contains a pseudo-header field that appears in a header block after a regular header field 8.1.2.2. Connection-Specific Header Fields [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:33, flags:0x05, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 1: Sends a HEADERS frame that contains the connection-specific header field [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:44, flags:0x05, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 2: Sends a HEADERS frame that contains the TE header field with any value other than "trailers" 8.1.2.3. Request Pseudo-Header Fields [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:16, flags:0x05, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 1: Sends a HEADERS frame with empty ":path" pseudo-header field [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:13, flags:0x05, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 2: Sends a HEADERS frame that omits ":method" pseudo-header field [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:14, flags:0x05, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 3: Sends a HEADERS frame that omits ":scheme" pseudo-header field [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:14, flags:0x05, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 4: Sends a HEADERS frame that omits ":path" pseudo-header field [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:16, flags:0x05, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 5: Sends a HEADERS frame with duplicated ":method" pseudo-header field [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:16, flags:0x05, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 6: Sends a HEADERS frame with duplicated ":scheme" pseudo-header field [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:16, flags:0x05, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 7: Sends a HEADERS frame with duplicated ":path" pseudo-header field 8.1.2.6. Malformed Requests and Responses [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:18, flags:0x04, stream_id:1) [send] DATA Frame (length:4, flags:0x01, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 1: Sends a HEADERS frame with the "content-length" header field which does not equal the DATA frame payload length [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] HEADERS Frame (length:18, flags:0x04, stream_id:1) [send] DATA Frame (length:4, flags:0x00, stream_id:1) [send] DATA Frame (length:4, flags:0x01, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 2: Sends a HEADERS frame with the "content-length" header field which does not equal the sum of the multiple DATA frames payload length 8.2. Server Push [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [send] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [recv] SETTINGS Frame (length:0, flags:0x01, stream_id:0) [send] PUSH_PROMISE Frame (length:19, flags:0x04, stream_id:1) [recv] GOAWAY Frame (length:8, flags:0x00, stream_id:0) ✔ 1: Sends a PUSH_PROMISE frame Finished in 2.8575 seconds 95 tests, 95 passed, 0 skipped, 0 failed