{"id":13646381,"url":"https://github.com/facebookarchive/fbender","last_synced_at":"2025-04-21T18:30:51.316Z","repository":{"id":54528776,"uuid":"146345801","full_name":"facebookarchive/fbender","owner":"facebookarchive","description":"A load-testing command line tool for generic network protocols","archived":true,"fork":false,"pushed_at":"2022-05-26T12:54:25.000Z","size":3625,"stargazers_count":258,"open_issues_count":1,"forks_count":16,"subscribers_count":25,"default_branch":"main","last_synced_at":"2024-11-09T19:41:39.403Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/facebookarchive.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}},"created_at":"2018-08-27T19:44:33.000Z","updated_at":"2024-10-30T14:09:11.000Z","dependencies_parsed_at":"2022-08-13T18:50:17.153Z","dependency_job_id":null,"html_url":"https://github.com/facebookarchive/fbender","commit_stats":null,"previous_names":["facebookincubator/fbender"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebookarchive%2Ffbender","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebookarchive%2Ffbender/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebookarchive%2Ffbender/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebookarchive%2Ffbender/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/facebookarchive","download_url":"https://codeload.github.com/facebookarchive/fbender/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250110784,"owners_count":21376538,"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-02T01:02:54.136Z","updated_at":"2025-04-21T18:30:51.026Z","avatar_url":"https://github.com/facebookarchive.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# FBender\n[![Build Status](https://github.com/facebookincubator/fbender/workflows/Go/badge.svg)](https://github.com/facebookincubator/fbender/actions)\n[![codecov](https://codecov.io/gh/facebookincubator/fbender/branch/main/graph/badge.svg)](https://codecov.io/gh/facebookincubator/fbender)\n[![Go Report Card](https://goreportcard.com/badge/github.com/facebookincubator/fbender)](https://goreportcard.com/report/github.com/facebookincubator/fbender)\n\nFBender is a __load testing__ command line tool for generic network protocols.\n\nAs a foundation for load testing lays the [Pinterest Bender](https://github.com/pinterest/bender)\nlibrary. Similar to Bender, FBender provides two different approaches to load\ntesting. The first, __Throughput__, gives the tester control over the throughput\n(QPS), but not over the concurrency. The second, __Concurrency__, gives the\ntester control over the concurrency, but not over the throughput. You can read\nmore about that in the [Bender documentation](https://github.com/pinterest/bender#bender).\n\nFBender has been designed to be easily extendable by additional protocols. Look\nat the guide on how to contribute new protocols.\n\n## Examples\n\nIn the _first example_ we will be load testing a __DNS__ server __example.com__\nrunning on the __default port__ (53). We will perform 3 consecutive tests for\neach __specified QPS__ (2000, 4000, 8000) each lasting for __1 minute__. The\nqueries will be generated based on the input file __queries.txt__. We will\nignore requests output.\n\n```sh\nfbender dns throughput fixed \\\n  --target example.com --duration 1m \\\n  --input queries.txt -v error \\\n  2000 4000 8000\n```\n\nIn the _next example_ we will be load testing a __TFTP__ server __example.com__\nrunning on the __default port__ (69). We will perform 3 consecutive tests for\neach __specified number of concurrent connections__ (10, 25, 50) each lasting\nfor __1 minute__. The queries will be generated based on the input file\n__files.txt__. We will ignore requests output.\n\n```sh\nfbender tftp concurrency fixed \\\n  --target example.com --duration 1m \\\n  --input files.txt -v error \\\n  10 25 50\n```\n\nThe _last example_ will focus on finding the SLA for a __DHCPv6__ server\n__example.com__. We want the timeouts not to exceed __5% of all requests__ in\nthe measure window of __1 minute__. To get the most accurate results we will be\nusing exponential backoff growth starting at 20 QPS with a precision of 10 QPS.\nThe queries will be generated based on the input file __macs.txt__. We will\nignore requests output.\n\n```sh\nfbender dhcpv6 throughput constraints \\\n  --target example.com --duration 1m \\\n  --input macs.txt -v error \\\n  --constraints \"AVG(errors) \u003c 5\" \\\n  --growth ^10 20\n```\n\n## Building FBender\n\n```sh\ngo get -u github.com/facebookincubator/fbender\ngo build github.com/facebookincubator/fbender\n```\n\n## Installing FBender\n\n```sh\ngo get -u github.com/facebookincubator/fbender\ngo install github.com/facebookincubator/fbender\n```\n\nYou may want to add the following line to your .bashrc to enable autocompletion\n```sh\nsource \u003c(fbender complete bash)\n```\n\n## Docs\n\n* [General usage guide](https://github.com/facebookincubator/fbender/blob/main/docs/USAGE.md)\n* [Protocol specific usage and examples](https://github.com/facebookincubator/fbender/blob/main/docs/PROTOCOLS.md)\n* [Extending FBender](https://github.com/facebookincubator/fbender/blob/main/docs/EXTENDING.md)\n\n## License\n\nFBender is BSD licensed, as found in the LICENSE file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacebookarchive%2Ffbender","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffacebookarchive%2Ffbender","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacebookarchive%2Ffbender/lists"}