{"id":20810548,"url":"https://github.com/huttotw/zoom","last_synced_at":"2025-10-04T19:49:48.256Z","repository":{"id":57572148,"uuid":"163850191","full_name":"huttotw/zoom","owner":"huttotw","description":"A load testing utility that can generate different requests according to some predefined template.","archived":false,"fork":false,"pushed_at":"2019-01-04T21:58:08.000Z","size":29,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-18T14:32:32.969Z","etag":null,"topics":["concurrent","configuration","http","load","random","template","test"],"latest_commit_sha":null,"homepage":null,"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/huttotw.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}},"created_at":"2019-01-02T14:19:16.000Z","updated_at":"2019-03-26T18:43:56.000Z","dependencies_parsed_at":"2022-08-24T03:11:21.767Z","dependency_job_id":null,"html_url":"https://github.com/huttotw/zoom","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/huttotw%2Fzoom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huttotw%2Fzoom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huttotw%2Fzoom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huttotw%2Fzoom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/huttotw","download_url":"https://codeload.github.com/huttotw/zoom/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243158745,"owners_count":20245660,"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":["concurrent","configuration","http","load","random","template","test"],"created_at":"2024-11-17T20:25:58.232Z","updated_at":"2025-10-04T19:49:43.208Z","avatar_url":"https://github.com/huttotw.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# zoom\n\nZoom is a load testing utility capable of generating different requests according to some template. This should be used to simulate lots of users on a system, or a bunch of random requests at some endpoint.\n\n## Running\nTo run a load test and send a new KSUID and random number each time:\n```\ndocker run huttotw/zoom:latest zoom -n 10000 -concurrency 10 -url http://localhost:8080 -template '{\"id\":\"{{ ksuid }}\",\"num\":{{ intn 100 }}}' -method POST\n```\n\nThis will send 10,000 `POST` requests, 10 at a time, to `http://localhost:8080` with a payload formatted like:\n```json\n{\"id\":\"1FDJSGnlAp4C9XTHZQ2XM0u8vFx\",\"num\":15}\n```\n\n## Flags\n| flag            | definition                                                       | required |\n|-----------------|------------------------------------------------------------------|----------|\n| n               | the number of requests you want to send, omit for infinite       | no       |\n| concurrent      | the number of requests to make at one time                       | yes      |\n| method          | the HTTP method used to send the request                         | yes      |\n| url             | the URL to send the request to                                   | yes      |\n| h               | a header to send with each request, multiple allowed             | no       |\n| template        | the Go template string that you want to use to form each request | one of template or template-file |\n| template-file   | the file that contains your template to form each reqeust        | one of template or template-file |\n\n## Available Functions\n| function   | description                                                                   |\n|------------|-------------------------------------------------------------------------------|\n| `email`    | a random email address                                                        |\n| `enum`     | randomly selects one of the arguments given                                   |\n| `intn`     | choose a random number between 0 and the given argument                       |\n| `ip`       | a random ip address                                                           |\n| `ksuid`    | a ksuid from [github.com/segmentio/ksuid](https://github.com/segmentio/ksuid) |\n| `string`   | a random string                                                               |\n| `url`      | a random url                                                                  |\n| `time`     | the current time                                                              |\n\n## Adding new template functions\nSince we use `text/template` to form each request, adding new functions to be available at execution time is as simple as adding to the function map in `cmd/zoom/templates.go`. Please see the official documentation for more detail: https://golang.org/pkg/text/template/#FuncMap.\n\n## License\nCopyright © 2019 Trevor Hutto\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this work except in compliance with the License. You may obtain a copy of the License in the LICENSE file, or at:\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhuttotw%2Fzoom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhuttotw%2Fzoom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhuttotw%2Fzoom/lists"}