All Projects → summerwind → H2spec

summerwind / H2spec

Licence: mit
A conformance testing tool for HTTP/2 implementation.

Programming Languages

go
31211 projects - #10 most used programming language

Labels

Projects that are alternatives of or similar to H2spec

Vulcain
Fast and idiomatic client-driven REST APIs.
Stars: ✭ 3,190 (+596.51%)
Mutual labels:  http2
Swift Nio Http2
HTTP/2 support for SwiftNIO
Stars: ✭ 336 (-26.64%)
Mutual labels:  http2
Echo
High performance, minimalist Go web framework
Stars: ✭ 21,297 (+4550%)
Mutual labels:  http2
Ace
HTTP web server and client, supports http1 and http2
Stars: ✭ 295 (-35.59%)
Mutual labels:  http2
Kurly
kurly is an alternative to the widely popular curl program, written in Golang.
Stars: ✭ 319 (-30.35%)
Mutual labels:  http2
Packetproxy
A local proxy written in Java
Stars: ✭ 352 (-23.14%)
Mutual labels:  http2
Libwebsockets
canonical libwebsockets.org networking library
Stars: ✭ 3,314 (+623.58%)
Mutual labels:  http2
Node Libcurl
libcurl bindings for Node.js
Stars: ✭ 447 (-2.4%)
Mutual labels:  http2
Sofa Rpc
SOFARPC is a high-performance, high-extensibility, production-level Java RPC framework.
Stars: ✭ 3,479 (+659.61%)
Mutual labels:  http2
Nghttp2
nghttp2 - HTTP/2 C Library and tools
Stars: ✭ 3,868 (+744.54%)
Mutual labels:  http2
Vertx Examples
Vert.x examples
Stars: ✭ 3,202 (+599.13%)
Mutual labels:  http2
Jetty.project
Eclipse Jetty® - Web Container & Clients - supports HTTP/2, HTTP/1.1, HTTP/1.0, websocket, servlets, and more
Stars: ✭ 3,260 (+611.79%)
Mutual labels:  http2
Http2 Spec
Working copy of the HTTP/2 Specification
Stars: ✭ 3,622 (+690.83%)
Mutual labels:  http2
Laravel Http2serverpush
A HTTP2 SeverPush Middleware for Laravel 5
Stars: ✭ 294 (-35.81%)
Mutual labels:  http2
Tempesta
The Linux Application Delivery Controller
Stars: ✭ 429 (-6.33%)
Mutual labels:  http2
Armeria
Your go-to microservice framework for any situation, from the creator of Netty et al. You can build any type of microservice leveraging your favorite technologies, including gRPC, Thrift, Kotlin, Retrofit, Reactive Streams, Spring Boot and Dropwizard.
Stars: ✭ 3,392 (+640.61%)
Mutual labels:  http2
Isahc
The practical HTTP client that is fun to use.
Stars: ✭ 338 (-26.2%)
Mutual labels:  http2
Vapor
💧 A server-side Swift HTTP web framework.
Stars: ✭ 21,194 (+4527.51%)
Mutual labels:  http2
Nginx Autoinstall
Compile Nginx from source with custom modules on Debian and Ubuntu
Stars: ✭ 443 (-3.28%)
Mutual labels:  http2
Apnotic
A Ruby APNs HTTP/2 gem able to provide instant feedback.
Stars: ✭ 360 (-21.4%)
Mutual labels:  http2

h2spec

h2spec is a conformance testing tool for HTTP/2 implementation.
This tool is compliant with RFC 7540 (HTTP/2) and RFC 7541 (HPACK).

Install

Go to the releases page, find the version you want, and download the zip file or tarball file. The docker image is also available in Docker Hub.

Your server

Your server should respond on GET / or POST / requests with status 200 response with non-empty data.

Usage

Conformance testing tool for HTTP/2 implementation.

Usage:
  h2spec [spec...] [flags]

Flags:
  -c, --ciphers string          List of colon-separated TLS cipher names
      --dryrun                  Display only the title of test cases
      --help                    Display this help and exit
  -h, --host string             Target host (default "127.0.0.1")
  -k, --insecure                Don't verify server's certificate
  -j, --junit-report string     Path for JUnit test report
      --max-header-length int   Maximum length of HTTP header (default 4000)
  -P, --path string             Target path (default "/")
  -p, --port int                Target port
  -S, --strict                  Run all test cases including strict test cases
  -o, --timeout int             Time seconds to test timeout (default 2)
  -t, --tls                     Connect over TLS
  -v, --verbose                 Output verbose log
      --version                 Display version information and exit

Running a specific test case

You can choose a test case to run by specifying the Spec ID as the command argument. For example, if you want to run test cases for HTTP/2, run h2spec as following:

$ h2spec http2

If you add a section number after the Spec ID, test cases related to a specific section will be run. For example, if you want to run test cases related to 6.3 of HTTP/2, run h2spec as following:

$ h2spec http2/6.3

If you add a test number after the section number, you can run the specific test case individually. For example, to run only the first test case related to 6.3 of HTTP/2 6.3, run h2spec as following:

$ h2spec http2/6.3/1

The Spec ID can be specified multiple times.

$ h2spec http2/6.3 generic

Currently supported Spec IDs are as follows. generic is the original spec of h2spec, includes generic test cases for HTTP/2 servers.

Spec ID Description
http2 Test cases for RFC 7540 (HTTP/2)
hpack Test cases for RFC 7541 (HPACK)
generic Generic test cases for HTTP/2 servers

Dryrun Mode

To display the list of test cases to be run, use Dryrun Mode as follows:

$ h2spec --dryrun

Strict Mode

When Strict Mode is enabled, h2spec will run the test cases related to the contents requested with the SHOULD notation in each specification. It is useful for more rigorous verification of HTTP/2 implementation.

$ h2spec --strict

Screenshot

Sceenshot

Build

To build from source, you need to install Go and export GO111MODULE=on first.

To build:

$ make build

To test:

$ make test

License

h2spec is made available under MIT license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].