Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add ghz #159

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@ COPY --from=fetcher /tmp/calicoctl /usr/local/bin/calicoctl
# Installing termshark
COPY --from=fetcher /tmp/termshark /usr/local/bin/termshark

# Installing ghz
COPY --from=fetcher /tmp/ghz /usr/local/bin/ghz

# Installing grpcurl
COPY --from=fetcher /tmp/grpcurl /usr/local/bin/grpcurl

Expand Down
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,7 @@ To troubleshoot these issues, `netshoot` includes a set of powerful tools as rec
ethtool \
file\
fping \
ghz \
grpcurl \
iftop \
iperf \
Expand Down Expand Up @@ -720,6 +721,21 @@ grpcurl -plaintext grpc.server.com:80 my.custom.server.Service/Method

More info, examples and lots of documentation on `Grpcurl` [here](https://github.com/fullstorydev/grpcurl)

## Ghz
ghz is a command-line tool that lets you load test a gRPC server. It's basically hey! for gRPC servers.

Invoking an RPC on a trusted server (e.g. TLS without self-signed key or custom CA) that requires no client certs and supports server reflection is the simplest thing to do with ghz. This minimal invocation sends an empty request body:

```bash
ghz grpc.server.com:443 --call my.custom.server.Service/Method

# no TLS
ghz --insecure grpc.server.com:80 --call my.custom.server.Service/Method
```

More info, examples and lots of documentation on `Ghz` [here](https://github.com/bojand/ghz)


## Fortio

Fortio is a fast, small (4Mb docker image, minimal dependencies), reusable, embeddable go library as well as a command line tool and server process, the server includes a simple web UI and REST API to trigger run and see graphical representation of the results (both a single latency graph and a multiple results comparative min, max, avg, qps and percentiles graphs).
Expand Down
12 changes: 12 additions & 0 deletions build/fetch_binaries.sh
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,17 @@ get_termshark() {
esac
}

get_ghz() {
if [ "$ARCH" == "amd64" ]; then
TERM_ARCH=x86_64
else
TERM_ARCH="$ARCH"
fi
VERSION=$(get_latest_release bojand/ghz | sed -e 's/^v//')
LINK="https://github.com/bojand/ghz/releases/download/v${VERSION}/ghz-linux-${TERM_ARCH}.tar.gz"
wget "$LINK" -O /tmp/ghz && chmod +x /tmp/ghz
}

get_grpcurl() {
if [ "$ARCH" == "amd64" ]; then
TERM_ARCH=x86_64
Expand Down Expand Up @@ -80,5 +91,6 @@ get_fortio() {
get_ctop
get_calicoctl
get_termshark
get_ghz
get_grpcurl
get_fortio