Skip to content

Fork of h2spec with adjustments for usage in the Tempesta testing suite

License

Notifications You must be signed in to change notification settings

tempesta-tech/h2spec

 
 

Repository files navigation

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
  -x, --exclude strings                  Disable specific tests
      --exit-on-external-failure         Stop tests execution on an external failure event
      --external-failure-regexp string   A regular expression for a falure to be marched with
      --external-failure-source string   Path to the file that needs to be tracked for failures
      --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

Disable Certain Tests

If you use h2spec as a part of your CI/CD pipeline, you may find it useful to be able to manually exclude specific tests by their Spec IDs before the corresponding issue gets resolved:

$ h2spec --exclude hpack/2 --exclude hpack/4/1

Exit On External Failure

There are cases when you'd want h2pec to stop performing tests due to some external event happened. Usually that would be a message in some log file:

h2spec --exit-on-external-failure --external-failure-regexp "regexp that matches your error message" --external-failure-source /tmp/some_log_file

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.

About

Fork of h2spec with adjustments for usage in the Tempesta testing suite

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 99.5%
  • Other 0.5%