test-infra

module
v1.5.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 26, 2023 License: Apache-2.0

README

test-infra - gRPC test infrastructure

This repository contains code for systems that test gRPC which are versioned, released or deployed separately from the gRPC Core codebase.

For an overview, see blog post.

gRPC OSS benchmarks

gRPC OSS benchmarks are a collection of libraries and executables to schedule, run and monitor gRPC performance benchmarking tests on a Kubernetes cluster.

Controller

The main executable is a custom controller that manages resources of kind LoadTest. This controller must be deployed to the cluster before load tests can be run on it. For deployment information, see deployment. The controller is implemented with kubebuilder.

Tools

There is a set of tools used to generate load test configurations, prepare prebuilt images and run batches of tests. These tools are used to run batches of tests for continuous integration.

Examples

Examples of load test configurations in the supported languages are also provided.

Dashboard

The data generated in continuous integration are saved to BigQuery, and displayed on a public dashboard linked from the gRPC performance benchmarking page.

For more information, and to build your own dashboard, see dashboard.

PSM benchmarks

This repository now includes infrastructure to support service mesh benchmarks comparing dataplane performance of proxyless gRPC service mesh (PSM) deployments and that of proxied deployments using an Envoy sidecar.

The client pod in PSM benchmarks includes a fake xDS server that serves as a gRPC control plane. The client pod in the proxied case also includes an Envoy sidecar.

Prometheus is used to monitor CPU and memory utilization in PSM benchmarks.

Examples of proxied and proxyless tests are now available.

This is only an initial release. Additional features and more detailed documentation will be added in a future release.

Contributing

Welcome! Please read how to contribute before proceeding.

Directories

Path Synopsis
api
v1
Package v1 contains API Schema definitions for the e2etest.grpc.io v1 API group +kubebuilder:object:generate=true +groupName=e2etest.grpc.io
Package v1 contains API Schema definitions for the e2etest.grpc.io v1 API group +kubebuilder:object:generate=true +groupName=e2etest.grpc.io
cmd
cmd
containers
dashboard
Package kubehelpers contains helper functions for interacting with Kubernetes clusters and resources.
Package kubehelpers contains helper functions for interacting with Kubernetes clusters and resources.
Package optional provides convenient functions to declare literals and take their address in a single line.
Package optional provides convenient functions to declare literals and take their address in a single line.
Package proto contains the proto definitions for the service, as well as, their generated code.
Package proto contains the proto definitions for the service, as well as, their generated code.
Package status contains code for determining the current state of the world, including which pods belong to a load test.
Package status contains code for determining the current state of the world, including which pods belong to a load test.
tools
runner
Package runner contains code for a test runner that can run a list of load tests, wait for them to complete, and report on the results.
Package runner contains code for a test runner that can run a list of load tests, wait for them to complete, and report on the results.
runner/xunit
Package xunit defines types and utility functions in order to generate XML reports.
Package xunit defines types and utility functions in order to generate XML reports.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL