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

Server Test Cases

michelleflai edited this page Feb 12, 2014 · 7 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 Server sends DATA frame to client, client validate frame format (i.e. Frame Type = 0x0, non-zero stream id) Akamai (in progress)
1.2 Server sends DATA frame with payload size > 0
1.3 Server sends DATA frame with no payload
1.4 Server sends DATA frame with max payload
1.5 Server sends frame with length < payload size
1.6 Server sends DATA frame with length > payload size
1.7 Server sends DATA frame with zero stream id, expect PROTOCOL_ERROR
1.8 Server sends DATA frame size > max size, expect FRAME_SIZE_ERROR
1.9 Server ignores DATA frame received with invalid flag
2. HEADERS Frame
2.1 Server sends HEADERS frame to client, client validate frame format (i.e. Frame Type = 0x1, non-zero stream id)
2.2 Server sends HEADERS frame to client, client validate header fields (i.e. compressed correctly, lowercase names, no empty/duplicate names, no empty values, includes ":status" mandatory header with valid value, not include Connection, Keep-Alive, Proxy-Connection, TE, Transfer-Encoding, and Upgrade header fields)
2.3 Server sends HEADERS frame without header block, expect FRAME_SIZE_ERROR
2.4 Server sends HEADERS frame without priority
2.5 Server sends HEADERS frame without priority and header block, expect FRAME_SIZE_ERROR
2.6 Server sends HEADERS frame with length < payload size
2.7 Server ignores HEADERS frame received with invalid flag
2.8 Server ends stream after receiving malformed HEADERS frame with uppercase header
2.9 Server ends stream after receiving malformed HEADERS frame with empty header name
2.10 Server ends stream after receiving malformed HEADERS frame with empty header value
2.11 Server ends stream after receiving malformed HEADERS frame with duplicate header names
2.12 Server ends stream after receiving malformed HEADERS frame with no ":status" header
2.13 Server ends stream after receiving malformed HEADERS frame with bad zlib data Akamai (in progress)
3. PRIORITY Frame
3.1 Server sends PRIORITY frame to client, client validate frame format (I.e. Frame Type = 0x2, stream id = non-zero/even number, zero flag, Priority value is within range (0 to 2^31-1))
3.2 Server sends PRIORITY frame with zero priority
3.3 Server sends PRIORITY frame with lowest priority
3.4 Server sends PRIORITY frame with zero stream id, expect PROTOCOL_ERROR
3.5 Server ignores PRIORITY frame received with invalid flag
4. RST_STREAM Frame
4.1 Server sends RST_STREAM frame to client, client validate frame format
4.2 Server sends RST_STREAM frame with non-zero stream id, expect PROTOCOL_ERROR
4.3 Server ignores RST_STREAM frame received with unknown error code
4.4 Server ignores RST_STREAM frame received with invalid flag
4.5 Server receives RST_STREAM frame with stream id in the idle state, expect PROTOCOL_ERROR Akamai (in progress)
5. SETTINGS Frame
5.1 Server sends SETTINGS frame to client, client validate frame format
5.2 Server sends SETTINGS frame with ACK
5.3 Server sends SETTINGS frame with no payload, expect PROTOCOL_ERROR
5.4 Server sends SETTINGS frame with non-zero stream id, expect PROTOCOL_ERROR
5.5 Server ignores SETTINGS frame with invalid setting id
5.6 Server sends SETTINGS frame with ACK and payload, expect FRAME_SIZE_ERROR
5.7 Server sends SETTINGS frame with missing value, expect FRAME_SIZE_ERROR
5.8 Server sends SETTINGS frame with invalid flag
5.9 Server disable server push after receiving SETTINGS frame with zero SETTINGS_MAX_CONCURRENT_STREAMS value
6. PUSH_PROMISE Frame
6.1 Server sends PUSH_PROMISE frame to client, client validate frame format
6.2 Server ignore PUSH_PROMISE frame received
6.3 Server receives PUSH_PROMISE frame with stream id zero Akamai (in progress)
6.4 Server receives PUSH_PROMISE frame with non-idle stream id Akamai (in progress)
6.5 Server receives PUSH_PROMISE frame with stream id less than current stream id Akamai (in progress)
7. PING Frame
7.1 Server sends PING frame to client, client validate frame format
7.2 Server sends PING frame with ACK
7.3 Server receives PING frame with length > 8, expect FRAME_SIZE_ERROR Akamai (in progress)
7.4 Server receives PING frame with length < 8, expect FRAME_SIZE_ERROR Akamai (in progress)
7.5 Server receives PING frame with non-zero stream id, expect PROTOCOL_ERROR Akamai (in progress)
7.6 Server ignores PING frame received with invalid flag Akamai (in progress)
8. GOAWAY Frame
8.1 Server sends GOAWAY frame to client, client validate frame format (i.e. frame type=0x7, zero flag)
8.2 Server sends GOAWAY frame with no debug data
8.3 Server sends GOAWAY frame with zero last-stream-id
8.4 Server sends GOAWAY frame with incorrect Last-Stream-Id
8.5 Server sends GOAWAY frame with unknown error code
8.6 Server ignores GOAWAY frame received with invalid flag
8.7 Server sends GOAWAY frame with non-zero Stream Id
8.8 Server sends GOAWAY frame with missing Last-Stream-Id, expect FRAME_SIZE_ERROR
8.9 Server sends GOAWAY frame with missing error code, expect FRAME_SIZE_ERROR
9. WINDOW_UPDATE Frame
9.1 Server sends WINDOW_UPDATE frame to client, client validate frame format (i.e. frame type=0x9, zero flag)
9.2 Server sends WINDOW_UPDATE frame with minimum size
9.3 Server sends WINDOW_UPDATE frame with max size
9.4 Server sends WINDOW_UPDATE frame with zero stream id
9.5 Server sends WINDOW_UPDATE frame with non-zero stream id
9.6 Server ignores WINDOW_UPDATE frame received with invalid flag
9.7 Server sends WINDOW_UPDATE frame with invalid size
9.8 Server sends WINDOW_UPDATE frame with no payload
9.9 Server sends WINDOW_UPDATE frame with payload > 4 bytes
10. CONTINUATION Frame
10.1 Server sends CONTINUATION frame to client, client validate frame format
10.2 Server sends CONTINUATION frame with END_HEADERS flag
10.3 Server sends CONTINUATION frame with zero stream id, expect PROTOCOL_ERROR
10.4 Server ignores CONTINUATION frame received with invalid flag
10.5 Server sends CONTINUATION frame with no payload
11. Malformed Frame
11.1 Server ignores frame received with unknown frame type
11.2 Server ignores frame received with non-zero reserve bit
11.3 Server ignores frame received with without stream id

###Sample Stream Tests

1. Test cases Status(in progress/complete)
1.2 Verify server sends stream with odd 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