{"id":15213129,"url":"https://github.com/grpc/test-infra","last_synced_at":"2025-10-23T20:03:16.004Z","repository":{"id":37891912,"uuid":"272496120","full_name":"grpc/test-infra","owner":"grpc","description":"Repo for gRPC testing infrastructure support code","archived":false,"fork":false,"pushed_at":"2025-08-25T15:36:03.000Z","size":1337,"stargazers_count":95,"open_issues_count":3,"forks_count":37,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-10-02T00:32:08.114Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grpc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE-OF-CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":"GOVERNANCE.md","roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-15T16:58:26.000Z","updated_at":"2025-09-26T01:29:19.000Z","dependencies_parsed_at":"2022-07-14T22:00:29.938Z","dependency_job_id":"ef78e6e1-b3dd-4b25-9157-e9e48bbdb52a","html_url":"https://github.com/grpc/test-infra","commit_stats":{"total_commits":424,"total_committers":23,"mean_commits":"18.434782608695652","dds":0.6556603773584906,"last_synced_commit":"e1ee5f23feed939d99b0eadea6d7911c9c8732ed"},"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/grpc/test-infra","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grpc%2Ftest-infra","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grpc%2Ftest-infra/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grpc%2Ftest-infra/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grpc%2Ftest-infra/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grpc","download_url":"https://codeload.github.com/grpc/test-infra/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grpc%2Ftest-infra/sbom","scorecard":{"id":446661,"data":{"date":"2025-08-11","repo":{"name":"github.com/grpc/test-infra","commit":"5d7ad07128b44822716fb47efefc3b24a4c2a498"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":1,"reason":"2 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/go.yaml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"16 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2024-3250 / GHSA-29wx-vh33-7x7r","Warn: Project is vulnerable to: GO-2025-3553 / GHSA-mh63-6h87-95cp","Warn: Project is vulnerable to: GO-2024-2606 / GHSA-7jwh-3vrq-q3m8 / GHSA-mrww-27vc-gghv","Warn: Project is vulnerable to: GO-2024-2605 / GHSA-m7wr-2xf7-cm9p","Warn: Project is vulnerable to: GO-2023-2402 / GHSA-45x7-px36-x8w8","Warn: Project is vulnerable to: GO-2024-3321 / GHSA-v778-237x-gjrc","Warn: Project is vulnerable to: GO-2025-3487 / GHSA-hcg3-q754-cr77","Warn: Project is vulnerable to: GO-2023-1988 / GHSA-2wrh-6pvc-2jm9","Warn: Project is vulnerable to: GO-2023-2102 / GHSA-4374-p667-p6c8","Warn: Project is vulnerable to: GO-2023-2153 / GHSA-m425-mq94-257g / GHSA-qppj-fm5r-hxr3","Warn: Project is vulnerable to: GO-2024-2687 / GHSA-4v7x-pqxf-cx7m","Warn: Project is vulnerable to: GO-2024-3333","Warn: Project is vulnerable to: GO-2025-3503 / GHSA-qxp5-gwg8-xv66","Warn: Project is vulnerable to: GO-2025-3595 / GHSA-vvgc-356p-c3xw","Warn: Project is vulnerable to: GO-2025-3488 / GHSA-6v2p-p543-phr9","Warn: Project is vulnerable to: GO-2024-2611 / GHSA-8r3f-844c-mc37"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Pinned-Dependencies","score":1,"reason":"dependency not pinned by hash detected -- score normalized to 1","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yaml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/grpc/test-infra/go.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yaml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/grpc/test-infra/go.yaml/master?enable=pin","Warn: containerImage not pinned by hash: containers/init/build/csharp/Dockerfile:15: pin your Docker image by updating mcr.microsoft.com/dotnet/sdk:6.0-bullseye-slim to mcr.microsoft.com/dotnet/sdk:6.0-bullseye-slim@sha256:fc71510497ce2ec3575359068b9c7b1b9f449cfdb0371b5c71a939963a2fedfd","Warn: containerImage not pinned by hash: containers/init/build/dotnet/Dockerfile:15: pin your Docker image by updating mcr.microsoft.com/dotnet/sdk:9.0-bookworm-slim to mcr.microsoft.com/dotnet/sdk:9.0-bookworm-slim@sha256:ae000be75dac94fc40e00f0eee903289e985995cc06dac3937469254ce5b60b6","Warn: containerImage not pinned by hash: containers/init/build/node/Dockerfile:15: pin your Docker image by updating node:18-bookworm to node:18-bookworm@sha256:c6ae79e38498325db67193d391e6ec1d224d96c693a8a4d943498556716d3783","Warn: containerImage not pinned by hash: containers/init/build/php7/Dockerfile:15: pin your Docker image by updating php:7.4-buster to php:7.4-buster@sha256:663c3c891007c2ed6440137c710c38be960e2394c37430719569764e73003ca7","Warn: containerImage not pinned by hash: containers/init/build/ruby/Dockerfile:14: pin your Docker image by updating ruby:3.1 to ruby:3.1@sha256:91627f55e8969006aab67d15c92fb930500ff73948803da1330b8a853fecebb5","Warn: containerImage not pinned by hash: containers/init/clone/Dockerfile:15: pin your Docker image by updating debian:buster to debian:buster@sha256:58ce6f1271ae1c8a2006ff7d3e54e9874d839f573d8009c20154ad0f2fb0a225","Warn: containerImage not pinned by hash: containers/init/ready/Dockerfile:15: pin your Docker image by updating golang:1.20 to golang:1.20@sha256:8f9af7094d0cb27cc783c697ac5ba25efdc4da35f8526db21f7aebb0b0b4f18a","Warn: containerImage not pinned by hash: containers/pre_built_workers/csharp/Dockerfile:15: pin your Docker image by updating mcr.microsoft.com/dotnet/sdk:6.0-bullseye-slim to mcr.microsoft.com/dotnet/sdk:6.0-bullseye-slim@sha256:fc71510497ce2ec3575359068b9c7b1b9f449cfdb0371b5c71a939963a2fedfd","Warn: containerImage not pinned by hash: containers/pre_built_workers/csharp/Dockerfile:55: pin your Docker image by updating mcr.microsoft.com/dotnet/runtime:3.1-bullseye-slim to mcr.microsoft.com/dotnet/runtime:3.1-bullseye-slim@sha256:7f2b93c45eeb435b27cce7d4494071f7311c82ec55a470f00fa1205e61d62951","Warn: containerImage not pinned by hash: containers/pre_built_workers/dotnet/Dockerfile:15: pin your Docker image by updating mcr.microsoft.com/dotnet/sdk:9.0-bookworm-slim to mcr.microsoft.com/dotnet/sdk:9.0-bookworm-slim@sha256:ae000be75dac94fc40e00f0eee903289e985995cc06dac3937469254ce5b60b6","Warn: containerImage not pinned by hash: containers/pre_built_workers/dotnet/Dockerfile:43: pin your Docker image by updating mcr.microsoft.com/dotnet/aspnet:9.0-bookworm-slim to mcr.microsoft.com/dotnet/aspnet:9.0-bookworm-slim@sha256:515c08e27cf8d933af442f0e1b6c92cc728acb71f113ca529f56c79cb597adb5","Warn: containerImage not pinned by hash: containers/pre_built_workers/go/Dockerfile:15: pin your Docker image by updating golang:1.23 to golang:1.23@sha256:60deed95d3888cc5e4d9ff8a10c54e5edc008c6ae3fba6187be6fb592e19e8c0","Warn: containerImage not pinned by hash: containers/pre_built_workers/go/Dockerfile:42: pin your Docker image by updating debian:bookworm to debian:bookworm@sha256:731dd1380d6a8d170a695dbeb17fe0eade0e1c29f654cf0a3a07f372191c3f4b","Warn: containerImage not pinned by hash: containers/pre_built_workers/java/Dockerfile:15: pin your Docker image by updating openjdk:11-jdk-bullseye to openjdk:11-jdk-bullseye@sha256:cb20a91676b5643e5e67fcd937f717936bf2694f7669fc7fbd2aa4f0320e4dd2","Warn: containerImage not pinned by hash: containers/pre_built_workers/java/Dockerfile:40: pin your Docker image by updating openjdk:11-jdk-slim-bullseye to openjdk:11-jdk-slim-bullseye@sha256:868a4f2151d38ba6a09870cec584346a5edc8e9b71fde275eb2e0625273e2fd8","Warn: containerImage not pinned by hash: containers/pre_built_workers/node/Dockerfile:15: pin your Docker image by updating node:18-bookworm to node:18-bookworm@sha256:c6ae79e38498325db67193d391e6ec1d224d96c693a8a4d943498556716d3783","Warn: containerImage not pinned by hash: containers/pre_built_workers/node/Dockerfile:48: pin your Docker image by updating debian:bookworm to debian:bookworm@sha256:731dd1380d6a8d170a695dbeb17fe0eade0e1c29f654cf0a3a07f372191c3f4b","Warn: containerImage not pinned by hash: containers/pre_built_workers/php7/Dockerfile:15: pin your Docker image by updating php:7.4-buster to php:7.4-buster@sha256:663c3c891007c2ed6440137c710c38be960e2394c37430719569764e73003ca7","Warn: containerImage not pinned by hash: containers/pre_built_workers/php7/Dockerfile:69: pin your Docker image by updating php:7.4-buster to php:7.4-buster@sha256:663c3c891007c2ed6440137c710c38be960e2394c37430719569764e73003ca7","Warn: containerImage not pinned by hash: containers/pre_built_workers/python/Dockerfile:43: pin your Docker image by updating python:3.9-slim-bullseye to python:3.9-slim-bullseye@sha256:b9e06687fbfc57f6fe563e94e4c8751e39513dde89afc120dc6f56afe5ffc761","Warn: containerImage not pinned by hash: containers/pre_built_workers/ruby/Dockerfile:15: pin your Docker image by updating ruby:3.1 to ruby:3.1@sha256:91627f55e8969006aab67d15c92fb930500ff73948803da1330b8a853fecebb5","Warn: containerImage not pinned by hash: containers/pre_built_workers/ruby/Dockerfile:50: pin your Docker image by updating ruby:3.1 to ruby:3.1@sha256:91627f55e8969006aab67d15c92fb930500ff73948803da1330b8a853fecebb5","Warn: containerImage not pinned by hash: containers/runtime/controller/Dockerfile:2","Warn: containerImage not pinned by hash: containers/runtime/controller/Dockerfile:19: pin your Docker image by updating gcr.io/distroless/static-debian11 to gcr.io/distroless/static-debian11@sha256:1dbe426d60caed5d19597532a2d74c8056cd7b1674042b88f7328690b5ead8ed","Warn: containerImage not pinned by hash: containers/runtime/cxx/Dockerfile:15: pin your Docker image by updating debian:buster to debian:buster@sha256:58ce6f1271ae1c8a2006ff7d3e54e9874d839f573d8009c20154ad0f2fb0a225","Warn: containerImage not pinned by hash: containers/runtime/dotnet/Dockerfile:15: pin your Docker image by updating mcr.microsoft.com/dotnet/aspnet:9.0-bookworm-slim to mcr.microsoft.com/dotnet/aspnet:9.0-bookworm-slim@sha256:515c08e27cf8d933af442f0e1b6c92cc728acb71f113ca529f56c79cb597adb5","Warn: containerImage not pinned by hash: containers/runtime/driver/Dockerfile:15","Warn: containerImage not pinned by hash: containers/runtime/driver/Dockerfile:44","Warn: containerImage not pinned by hash: containers/runtime/java/Dockerfile:15: pin your Docker image by updating openjdk:11 to openjdk:11@sha256:99bac5bf83633e3c7399aed725c8415e7b569b54e03e4599e580fc9cdb7c21ab","Warn: containerImage not pinned by hash: containers/runtime/node/Dockerfile:15: pin your Docker image by updating node:18-bookworm to node:18-bookworm@sha256:c6ae79e38498325db67193d391e6ec1d224d96c693a8a4d943498556716d3783","Warn: containerImage not pinned by hash: containers/runtime/php7/Dockerfile:15: pin your Docker image by updating php:7.4-buster to php:7.4-buster@sha256:663c3c891007c2ed6440137c710c38be960e2394c37430719569764e73003ca7","Warn: containerImage not pinned by hash: containers/runtime/python/Dockerfile:15: pin your Docker image by updating python:3.7-buster to python:3.7-buster@sha256:2539f956bcccbac5e4a48ebdafbbbfbd26b4ab56e65b96076ae9cd1188b119b3","Warn: containerImage not pinned by hash: containers/runtime/ruby/Dockerfile:14: pin your Docker image by updating ruby:3.1 to ruby:3.1@sha256:91627f55e8969006aab67d15c92fb930500ff73948803da1330b8a853fecebb5","Warn: containerImage not pinned by hash: containers/runtime/sidecar/Dockerfile:15: pin your Docker image by updating envoyproxy/envoy-dev:239e202a954fa3078a73b23cbc8e7f256fc991cd to envoyproxy/envoy-dev:239e202a954fa3078a73b23cbc8e7f256fc991cd@sha256:1826d1ef31d1ae93f57d8b0f6ef2c5486d55146c7b07b948439958a9f93843f5","Warn: containerImage not pinned by hash: containers/runtime/xds-server/Dockerfile:15: pin your Docker image by updating golang:1.20 to golang:1.20@sha256:8f9af7094d0cb27cc783c697ac5ba25efdc4da35f8526db21f7aebb0b0b4f18a","Warn: containerImage not pinned by hash: dashboard/config/grafana/Dockerfile:18: pin your Docker image by updating grafana/grafana:7.5.5 to grafana/grafana:7.5.5@sha256:075819791b43f30aab18497fff217d3aec918d7d55bf873818de6a916da04d54","Warn: containerImage not pinned by hash: dashboard/config/postgres_replicator/Dockerfile:18","Warn: containerImage not pinned by hash: dashboard/config/postgres_replicator/Dockerfile:28: pin your Docker image by updating golang:1.20 to golang:1.20@sha256:8f9af7094d0cb27cc783c697ac5ba25efdc4da35f8526db21f7aebb0b0b4f18a","Warn: npmCommand not pinned by hash: containers/pre_built_workers/node/Dockerfile:43","Warn: pipCommand not pinned by hash: containers/runtime/driver/Dockerfile:85-94","Warn: npmCommand not pinned by hash: containers/init/build/node/build_qps_worker.sh:18","Warn: npmCommand not pinned by hash: containers/pre_built_workers/node/build_qps_worker.sh:18","Warn: npmCommand not pinned by hash: containers/pre_built_workers/node/build_qps_worker.sh:19","Warn: goCommand not pinned by hash: .github/workflows/go.yaml:40","Warn: goCommand not pinned by hash: .github/workflows/go.yaml:41","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 pipCommand dependencies pinned","Info:   4 out of  42 containerImage dependencies pinned","Info:   3 out of   5 goCommand dependencies pinned","Info:   0 out of   4 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}}]},"last_synced_at":"2025-08-19T06:54:00.991Z","repository_id":37891912,"created_at":"2025-08-19T06:54:00.991Z","updated_at":"2025-08-19T06:54:00.991Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278354322,"owners_count":25973338,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-09-28T09:22:13.596Z","updated_at":"2025-10-07T06:12:35.671Z","avatar_url":"https://github.com/grpc.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# test-infra - gRPC test infrastructure\n\nThis repository contains code for systems that test [gRPC][grpc] which are\nversioned, released or deployed separately from the [gRPC Core][grpccore]\ncodebase.\n\nFor an overview, see\n[blog post](https://grpc.io/blog/performance-benchmarks-gke/).\n\n[grpc]: https://grpc.io\n[grpccore]: https://github.com/grpc/grpc\n\n## gRPC OSS benchmarks\n\ngRPC OSS benchmarks are a collection of libraries and executables to schedule,\nrun and monitor [gRPC performance benchmarking][benchmarking] tests on a\nKubernetes cluster.\n\n### Controller\n\nThe main executable is a [custom controller][] that manages resources of kind\n[LoadTest][loadtest]. This controller must be deployed to the cluster before\nload tests can be run on it. For deployment information, see [deployment][]. The\ncontroller is implemented with [kubebuilder][].\n\n[custom controller]: cmd/controller/main.go\n[deployment]: doc/deployment.md\n[kubebuilder]: https://kubebuilder.io\n[loadtest]: config/crd/bases/e2etest.grpc.io_loadtests.yaml\n\n### Tools\n\nThere is a set of [tools](tools/README.md) used to generate load test\nconfigurations, prepare prebuilt images and run batches of tests. These tools\nare used to run batches of tests for continuous integration.\n\n### Examples\n\n[Examples](config/samples/README.md) of load test configurations in the\nsupported languages are also provided.\n\n## Dashboard\n\nThe data generated in continuous integration are saved to [BigQuery][bigquery],\nand displayed on a public dashboard linked from the [gRPC performance\nbenchmarking][benchmarking] page.\n\nFor more information, and to build your own dashboard, see\n[dashboard](dashboard/README.md).\n\n[bigquery]: https://cloud.google.com/bigquery\n\n## PSM benchmarks\n\nThis repository now includes infrastructure to support\n[service mesh](https://istio.io/latest/about/service-mesh/) benchmarks comparing\ndataplane performance of proxyless gRPC service mesh (PSM) deployments and that\nof proxied deployments using an Envoy sidecar.\n\nThe client pod in PSM benchmarks includes a\n[fake xDS server](containers/runtime/xds-server/README.md) that serves as a gRPC\ncontrol plane. The client pod in the proxied case also includes an Envoy\n[sidecar](containers/runtime/sidecar/).\n\n[Prometheus](config/prometheus/README.md) is used to monitor CPU and memory\nutilization in PSM benchmarks.\n\n[Examples](config/samples/templates/psm/README.md) of proxied and proxyless\ntests are now available.\n\nThis is only an initial release. Additional features and more detailed\ndocumentation will be added in a future release.\n\n## Contributing\n\nWelcome! Please read [how to contribute](CONTRIBUTING.md) before proceeding.\n\n[benchmarking]: https://grpc.io/docs/guides/benchmarking/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrpc%2Ftest-infra","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrpc%2Ftest-infra","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrpc%2Ftest-infra/lists"}