H2SPEC Compliance Status
Tracks 146 h2spec HTTP/2 protocol tests, showing 145 passing and 1 failing with details on the remaining issue.
What this file does
Tracks 146 h2spec HTTP/2 protocol tests, showing 145 passing and 1 failing with details on the remaining issue.
When to use it
- Auditing your HTTP/2 server's specification compliance
- Reporting test results to stakeholders or in documentation
- Prioritizing fixes for the last failing protocol test
- Comparing your implementation against a known compliance baseline
Assumes this stack
H2SPEC Compliance Status
Current compliance: 145/146 tests passing (99.3%)
- 145 tests passing
- 1 test failing (5.1.1.2 - stream identifier validation)
- Total: 145 of 146 HTTP/2 protocol requirements satisfied
✅ Completed Features
1. Starting HTTP/2
- Sends a client connection preface
2. Streams and Multiplexing
- Sends a PRIORITY frame on idle stream
- Sends a WINDOW_UPDATE frame on half-closed (remote) stream
- Sends a PRIORITY frame on half-closed (remote) stream
- Sends a RST_STREAM frame on half-closed (remote) stream
- Sends a PRIORITY frame on closed stream
3. Frame Definitions
3.1. DATA
- Sends a DATA frame
- Sends multiple DATA frames
- Sends a DATA frame with padding
3.2. HEADERS
- Sends a HEADERS frame
- Sends a HEADERS frame with padding
- Sends a HEADERS frame with priority
3.3. PRIORITY
- Sends a PRIORITY frame with priority 1
- Sends a PRIORITY frame with priority 256
- Sends a PRIORITY frame with stream dependency
- Sends a PRIORITY frame with exclusive
- Sends a PRIORITY frame for an idle stream, then send a HEADER frame for a lower stream ID
3.4. RST_STREAM
- Sends a RST_STREAM frame
3.5. SETTINGS
- Sends a SETTINGS frame
3.7. PING
- Sends a PING frame
3.8. GOAWAY
- Sends a GOAWAY frame
3.9. WINDOW_UPDATE
- Sends a WINDOW_UPDATE frame with stream ID 0
- Sends a WINDOW_UPDATE frame with stream ID 1
3.10. CONTINUATION
- Sends a CONTINUATION frame
- Sends multiple CONTINUATION frames
4. HTTP Message Exchanges
- Sends a GET request
- Sends a HEAD request
- Sends a POST request
- Sends a POST request with trailers
5. HPACK
- Sends a indexed header field representation
- Sends a literal header field with incremental indexing - indexed name
- Sends a literal header field with incremental indexing - indexed name (with Huffman coding)
- Sends a literal header field with incremental indexing - new name
- Sends a literal header field with incremental indexing - new name (with Huffman coding)
- Sends a literal header field without indexing - indexed name
- Sends a literal header field without indexing - indexed name (with Huffman coding)
- Sends a literal header field without indexing - new name
- Sends a literal header field without indexing - new name (huffman encoded)
- Sends a literal header field never indexed - indexed name
- Sends a literal header field never indexed - indexed name (huffman encoded)
- Sends a literal header field never indexed - new name
- Sends a literal header field never indexed - new name (huffman encoded)
- Sends a dynamic table size update
- Sends multiple dynamic table size update
✅ HTTP/2 Protocol Tests (All Passing)
3. Starting HTTP/2
- Sends client connection preface
- Sends invalid connection preface
4. HTTP Frames
- Sends a frame with unknown type
- Sends a frame with undefined flag
- Sends a frame with reserved field bit
- Sends a DATA frame with 2^14 octets in length
- Sends a large size DATA frame that exceeds the SETTINGS_MAX_FRAME_SIZE
- Sends a large size HEADERS frame that exceeds the SETTINGS_MAX_FRAME_SIZE
- Sends invalid header block fragment
- Sends a PRIORITY frame while sending the header blocks
- Sends a HEADERS frame to another stream while sending the header blocks
5. Streams and Multiplexing
- All stream state tests
- Stream identifier tests
- Stream concurrency tests
- Stream priority and dependency tests
- Error handling tests
- Extension frame tests
6. Frame Definitions
- All DATA frame validation tests
- All HEADERS frame validation tests
- All PRIORITY frame validation tests
- All RST_STREAM frame validation tests
- All SETTINGS frame validation tests
- All PING frame validation tests
- All GOAWAY frame validation tests
- All WINDOW_UPDATE frame validation tests
- All CONTINUATION frame validation tests
7. Error Codes
- Sends a GOAWAY frame with unknown error code
- Sends a RST_STREAM frame with unknown error code
8. HTTP Message Exchanges
- Most HTTP request/response exchange tests
- All header field validation tests
- All pseudo-header field tests
- All connection-specific header field tests
- All request pseudo-header field tests
- All malformed request tests
- Server push tests
✅ HPACK Tests (All Passing)
2. Compression Process Overview
- Sends a indexed header field representation with invalid index
- Sends a literal header field representation with invalid index
4. Dynamic Table Management
- Sends a dynamic table size update at the end of header block
5. Primitive Type Representations
- Sends a Huffman-encoded string literal representation with padding longer than 7 bits
- Sends a Huffman-encoded string literal representation padded by zero
- Sends a Huffman-encoded string literal representation containing the EOS symbol
6. Binary Format
- Sends a indexed header field representation with index 0
- Sends a dynamic table size update larger than the value of SETTINGS_HEADER_TABLE_SIZE
🔧 Test Configuration
Test 5.1.1.2: Stream identifier validation failure
- Status: Failing (1 of 146 tests)
- Issue: Server responds with DATA frame instead of GOAWAY with PROTOCOL_ERROR when receiving stream ID numerically smaller than previous
- Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) + Connection closed
- Actual: DATA Frame (length:185, flags:0x01, stream_id:5)
- Impact: Minor protocol violation in stream ID ordering validation
✅ Protocol Compliance Summary
The HT2 server achieves 99.3% compliance with the HTTP/2 specification:
- 145 h2spec tests pass in both CI and local environments
- 1 test fails (5.1.1.2 - stream identifier ordering validation)
- Total: 145 of 146 HTTP/2 protocol requirements satisfied
This represents near-complete HTTP/2 protocol compliance suitable for most production use cases.
What's inside
3 major sections: completed features, protocol tests, HPACK tests; plus test configuration and compliance summary. 146 test entries total.
Change this for your project
- Replace
145/146 tests passing (99.3%)with your actual test counts - Replace
Test 5.1.1.2: Stream identifier validation failurewith your failing test details - Replace
HT2 serverwith your server name
Where it goes
Keep it in your repository where the agent or team that needs it will read it.
Worth borrowing
- Checklist format for tracking spec compliance per RFC section
- Separate section for the single failing test with expected vs actual behavior
Related Documents
Glossary
Collects advanced deep learning terms not covered in introductory glossaries, with brief definitions and links to papers.
专有词汇翻译记录
Records Chinese translations of OpenGL and graphics programming terms for consistent use across a translation project.
Glossary
Defines retrieval, chunking, embedding, search, reranking, and synthesis terms with formulas, examples, and metric comparisons for RAG experiments.
Glossary for *Artificial Intelligence: A Modern Approach*
Lists and defines hundreds of AI terms from the textbook *Artificial Intelligence: A Modern Approach*, organized alphabetically with cross-references.