{"id":13589671,"url":"https://github.com/orijtech/cosmosloadtester","last_synced_at":"2026-02-09T02:36:14.633Z","repository":{"id":84237354,"uuid":"572849642","full_name":"orijtech/cosmosloadtester","owner":"orijtech","description":"Cosmos load tester","archived":false,"fork":false,"pushed_at":"2023-01-18T21:23:59.000Z","size":585,"stargazers_count":5,"open_issues_count":3,"forks_count":1,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-08-02T16:32:04.667Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/orijtech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2022-12-01T06:51:42.000Z","updated_at":"2024-04-17T09:51:05.000Z","dependencies_parsed_at":"2023-05-24T02:30:26.506Z","dependency_job_id":null,"html_url":"https://github.com/orijtech/cosmosloadtester","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orijtech%2Fcosmosloadtester","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orijtech%2Fcosmosloadtester/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orijtech%2Fcosmosloadtester/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orijtech%2Fcosmosloadtester/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/orijtech","download_url":"https://codeload.github.com/orijtech/cosmosloadtester/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223314285,"owners_count":17125045,"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","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-08-01T16:00:32.792Z","updated_at":"2026-02-09T02:36:14.570Z","avatar_url":"https://github.com/orijtech.png","language":"TypeScript","funding_links":[],"categories":["Testing"],"sub_categories":["Terminal Block Explorers"],"readme":"# cosmosloadtester\n\n`cosmosloadtester` is a load-testing tool built on top of [informalsystems/tm-load-test](https://github.com/informalsystems/tm-load-test).\nIt uses [an enhanced fork of tm-load-test](https://github.com/orijtech/tm-load-test), which provides significantly more-detailed stats such as\nlatency percentile breakdowns and detailed graphs of QPS over time.\n\nThe tool consists of [a Go server](https://github.com/orijtech/cosmosloadtester/blob/main/cmd/server/main.go) which exposes the loadtest service over HTTP using gRPC-web and a [built-in React UI](ui) for scheduling loadtests and visualizing results. [The gRPC service](proto/orijtech/cosmosloadtester/v1/loadtest_service.proto) can also be interacted with without the UI by using [gRPC](https://grpc.io/), [gRPC-Gateway](https://github.com/grpc-ecosystem/grpc-gateway), or [gRPC-web](https://github.com/grpc/grpc-web).\n\nTo leverage this tool, you'll need to [write logic to generate transactions for your message type](https://github.com/orijtech/cosmosloadtester/edit/main/README.md#registering-custom-client-factories).\n\n## Building and running the server\n\n1. Build the UI:\n```shell\nmake ui\n```\n\n2. Build the server:\n```shell\nmake server\n```\n\n3. Run the server:\n```shell\n./bin/server --port=8080\n```\n4. The server should be available at http://localhost:8080\n\n\n## Registering custom client factories\n\nTo use this tool, you will need to write a client factory that generates transactions for the message type(s) you want to load-test.\n\n1. [Create your custom client factory](https://github.com/informalsystems/tm-load-test/tree/main/pkg/loadtest#step-2-create-your-load-testing-client).\n\n      For use as a template, a sample client factory that generates an empty Cosmos transaction can be found under [clients/myabciapp/client.go](clients/myabciapp/client.go):\n    https://github.com/orijtech/cosmosloadtester/blob/1d66499b0d56fcbfb1888047a7f0ad1c697b8dbf/clients/myabciapp/client.go#L45-L53\n\n2. Register your factory with a meaningful name in `registerClientFactories` in [cmd/server/main.go](cmd/server/main.go):\n\n    https://github.com/orijtech/cosmosloadtester/blob/1d66499b0d56fcbfb1888047a7f0ad1c697b8dbf/cmd/server/main.go#L115-L124\n\n2. After adding and registering your client factory, make sure to [rebuild the server](https://github.com/orijtech/cosmosloadtester/edit/main/README.md#building-and-running-the-server).\n3. Then, you can enter its name under `Client factory` in the UI to use it:\n\n    ![image](https://user-images.githubusercontent.com/6455350/208562755-4f6fbdd1-aebb-447c-9394-fadb73a8a50a.png)\n\n\n\n## Images\n\n### Input screen\n![](https://user-images.githubusercontent.com/6455350/208561926-e5bbe6de-691b-488f-86b2-0f7794a11022.png)\n\n### Results\n![](https://user-images.githubusercontent.com/6455350/208562264-1e9f3b5d-1e94-4b62-a6f3-455654683068.png)\n\n### Sequence diagram\n![image](https://user-images.githubusercontent.com/6455350/208564793-e141055d-d0c8-42d5-9576-a2b3ed312e38.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forijtech%2Fcosmosloadtester","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Forijtech%2Fcosmosloadtester","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forijtech%2Fcosmosloadtester/lists"}