envoyproxy / envoyproxy/nighthawk

Nighthawk-based wget

Open
#760 0 comments 0 reactions 0 assignees View on GitHub
enhancement good first issue help wanted
Dominant language
C++
Stars
414
Forks
95
Avg merge
2d 9h
Merged PRs (30d)
11

Description

When an Envoy server listens with a custom transport socket, another Envoy downstream with the same transport socket can be the only tool capable of making valid requests to it.

If `wget` or `curl` doesn't work because of the custom protocol, it is difficult to test whether a server is working.

The current solution is to run a low-RPS Nighthawk benchmark for a few seconds and see if it returns 2xx. But if there is an error, some diagnostic information is lost.

We should consider creating a mode for Nighthawk where it:
- Makes a single HTTP request
- Prints or logs the full HTTP response

This would also be useful for debugging a server with an ordinary protocol where an ordinary Nighthawk benchmark was returning all 4xx or 5xx.

A cheap way to implement it:
- Log the first 2xx HTTP response in full
- Log the first 3xx HTTP response in full
- Log the first 4xx HTTP response in full
- Log the first 5xx HTTP response in full

Plus a command line flag that translates to:
- RPS 1
- Duration 10 seconds
- Termination predicates that allow up to 10 failures of each kind: connection failure, stream reset, 3xx, 4xx, 5xx
- Extra termination predicate that quits when the 2xx count exceeds 0

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.