{"id":20698399,"url":"https://github.com/sozu-proxy/proxy-test-suite","last_synced_at":"2026-04-22T01:02:00.759Z","repository":{"id":152265827,"uuid":"122072602","full_name":"sozu-proxy/proxy-test-suite","owner":"sozu-proxy","description":null,"archived":false,"fork":false,"pushed_at":"2018-02-20T16:26:53.000Z","size":15,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-17T18:57:28.943Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sozu-proxy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-02-19T14:18:20.000Z","updated_at":"2021-07-24T14:23:06.000Z","dependencies_parsed_at":"2023-07-06T22:15:22.399Z","dependency_job_id":null,"html_url":"https://github.com/sozu-proxy/proxy-test-suite","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/sozu-proxy%2Fproxy-test-suite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sozu-proxy%2Fproxy-test-suite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sozu-proxy%2Fproxy-test-suite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sozu-proxy%2Fproxy-test-suite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sozu-proxy","download_url":"https://codeload.github.com/sozu-proxy/proxy-test-suite/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242967686,"owners_count":20214280,"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-11-17T00:24:34.141Z","updated_at":"2025-12-24T01:44:52.833Z","avatar_url":"https://github.com/sozu-proxy.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Proxy test suite\n\nthis tool is meant to provide an easy way to test and reproduce proxy bugs.\n\nEvery test case must implement the following trait:\n\n```rust\npub trait Check {\n  fn generate_request(\u0026self) -\u003e Vec\u003cu8\u003e;\n  fn check_request(\u0026self, req: \u0026httparse::Request) -\u003e Result\u003c(), String\u003e;\n  fn generate_response(\u0026self) -\u003e Vec\u003cu8\u003e;\n  fn check_response(\u0026self, res: \u0026httparse::Response) -\u003e Result\u003c(), String\u003e;\n}\n```\n\nThe trait will allow us to make non standard compliant request and responses.\n\nThe tool will:\n\n- set up a HTTP server (right now, hardcoded to address `127.0.0.1:1026`)\n- set up a HTTP client\n- the client will send the request to the proxy (right now, hardcoded to address `127.0.0.1:8080`)\n- the server will parse it with httparse (we're explicitely not using sozu's parser to find behaviour differences)\n- the server will verify that the received request matches the one we want (it's expected that the proxy adds or remove some headers)\n- the server sends the response\n- the client will parse the response with httparse\n- the client will verify that the received response matche the one we want\n\n## Planned ideas\n\n- find a nice way to generically write test cases\n- execute all of the test cases, or a specific one if we want\n- add some random behaviour, that could be fixed with a seed:\n  - insert spaces in the headers\n  - reorder the headers\n  - split the writes to the sockets to test partial parsing or chunking\n  - split the body in various chunks\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsozu-proxy%2Fproxy-test-suite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsozu-proxy%2Fproxy-test-suite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsozu-proxy%2Fproxy-test-suite/lists"}