Skip to content
This repository has been archived by the owner on Sep 22, 2020. It is now read-only.

Client Test Cases

squirrelfm edited this page Feb 24, 2014 · 13 revisions

Note: Please update status field with "in progress" when you grab the test and mark "complete" after test check in.

###Framing Tests

1. DATA Frame Status (in progress/complete)
1.1 Client receives DATA frame with payload size > 0 MSOT (in progress)
1.2 Client receives DATA frame with no payload
1.3 Client receives DATA frame with max payload
1.4 Client receives DATA frame with length < payload size
1.5 Client receives DATA frame with length > payload size
1.6 Client receives DATA frame with zero stream id, expect PROTOCOL_ERROR Done
1.7 Client receives DATA frame size > max size, expect FRAME_SIZE_ERROR error Done
2. HEADERS Frame
2.1 Client sends HEADERS frame to server, server validate frame format (i.e. Frame Type = 0x1, non-zero stream id) Done
2.2 Client sends HEADERS frame to server, server validate header fields (i.e. compressed correctly, lowercase names, no empty/duplicate names, no empty values, includes ":method", ":scheme", ":authority", ":path" mandatory header fields with valid value, not include Connection, Keep-Alive, Proxy-Connection, TE, Transfer-Encoding, and Upgrade header fields) Done
2.2 Client receives HEADERS frame without header block
2.3 Client receives HEADERS frame without priority
2.4 Client receives HEADERS frame without priority and header block Done
2.5 Client receives HEADERS frame with length < payload size
2.6 Client not accepts malformed HEADERS frame with uppercase header and end the stream Done
2.7 Client not accepts malformed HEADERS frame with empty header name and end the stream
2.8 Client not accepts malformed HEADERS frame with empty header value and end the stream Done
2.9 Client not accepts malformed HEADERS frame with duplicate header names and end the stream
2.10 Client not accepts malformed HEADERS frame with no ":status" header and end the stream Done
2.11 Client not accepts malformed HEADERS frame with bad zlib data and end the stream
2.12 Client accepts HEADERS frame with "set-cookie" header with either a comma-separated list or single concatenated value Done
3. PRIORITY Frame
3.1 Client receives PRIORITY frame with zero priority
3.2 Client receives PRIORITY frame with lowest priority
3.3 Client receives PRIORITY frame with zero stream id, expect PROTOCOL_ERROR Done
4. RST_STREAM Frame
4.1 Client receives RST_STREAM frame
4.2 Client receives RST_STREAM frame with zero stream id, expect PROTOCOL_ERROR Done
4.3 Client receives RST_STREAM frame with stream id in the idle state, expect PROTOCOL_ERROR
5. SETTINGS Frame
5.1 Client receives SETTINGS frame to server
5.2 Client receives SETTINGS frame with ACK
5.3 Client receives SETTINGS frame with zero SETTINGS_MAX_CONCURRENT_STREAMS value
5.4 Client receives SETTINGS frame with no payload
5.5 Client receives SETTINGS frame with non-zero stream id, expect PROTOCOL_ERROR Done
5.6 Client ignores SETTINGS frame received with invalid setting id Done
5.7 Client receives SETTINGS frame with ACK and payload, expect FRAME_SIZE_ERROR
5.8 Client receives SETTINGS frame with missing value
6. PUSH_PROMISE Frame
6.1 Client receives PUSH_PROMISE frame with zero stream id, expect PROTOCOL_ERROR Done
6.1 Client receives PUSH_PROMISE frame with invalid Promised-Stream-ID Done
6.2 Client ignores PUSH_PROMISE frame with invalid flag
7. PING Frame
7.1 Client receives PING frame to server, server validate frame format
7.2 Client receives PING frame to server with ACK
7.3 Client receives PING frame with length > 8, expect FRAME_SIZE_ERROR
7.4 Client receives PING frame with length < 8, expect FRAME_SIZE_ERROR
7.5 Client receives PING frame with non-zero stream id, expect PROTOCOL_ERROR Done
8. GOAWAY Frame
8.1 Client receives GOAWAY frame
8.2 Client receives GOAWAY frame with no debug data
8.3 Client receives GOAWAY frame with zero last-stream-id
8.4 Client receives GOAWAY frame with incorrect Last-Stream-Id
8.5 Client receives GOAWAY frame with unknown error code Done
8.6 Client receives GOAWAY frame with non-zero Stream Id Done
8.7 Client receives GOAWAY frame with missing Last-Stream-Id Done
8.8 Client receives GOAWAY frame with missing error code Done
9. WINDOW_UPDATE Frame
9.1 Client receives WINDOW_UPDATE frame
9.2 Client receives WINDOW_UPDATE frame with minimum size
9.3 Client receives WINDOW_UPDATE frame with max size
9.4 Client receives WINDOW_UPDATE frame with zero stream id
9.5 Client receives WINDOW_UPDATE frame with non-zero stream id
9.6 Client receives WINDOW_UPDATE frame with invalid size
9.7 Client receives WINDOW_UPDATE frame with no payload
9.8 Client receives WINDOW_UPDATE frame with payload > 4 bytes
10. CONTINUATION Frame
10.1 Client receives CONTINUATION frame
10.2 Client receives CONTINUATION frame with END_HEADERS flag
10.3 Client receives CONTINUATION frame with zero stream id, expect PROTOCOL_ERROR
10.4 Client ignores CONTINUATION frame received with invalid flag
10.5 Client receives CONTINUATION frame with no payload
11. Malformed Frame
11.1 Client ignores frame received with unknown frame type
11.2 Client ignores frame received with non-zero reserve bit Done
11.3 Client ignores frame received with without stream id

###Sample Stream Tests

1. Test cases Status
1.1 Receive stream with push_promise after data received
1.2 Verify client sends stream with even stream id
1.3 Decreasing stream id
1.4 Duplicate stream id is used
1.5 DATA after RST_STREAM
1.6 FLOW_CONTROL_ERROR after bad WINDOW_UPDATE size
Clone this wiki locally