{"id":7565008,"url":"https://github.com/chaostesting/chaosgopher","last_synced_at":"2025-07-09T20:32:01.597Z","repository":{"id":232121330,"uuid":"43546551","full_name":"chaostesting/chaosgopher","owner":"chaostesting","description":"Chaos testing/engineering in GO ","archived":false,"fork":false,"pushed_at":"2015-10-02T10:13:46.000Z","size":916,"stargazers_count":15,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-20T16:40:00.182Z","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":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chaostesting.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":"2015-10-02T10:10:02.000Z","updated_at":"2022-09-30T12:13:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"0ad0ce9c-9e2a-4e97-98f8-0635c9a58d88","html_url":"https://github.com/chaostesting/chaosgopher","commit_stats":null,"previous_names":["chaostesting/chaosgopher"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/chaostesting/chaosgopher","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chaostesting%2Fchaosgopher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chaostesting%2Fchaosgopher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chaostesting%2Fchaosgopher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chaostesting%2Fchaosgopher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chaostesting","download_url":"https://codeload.github.com/chaostesting/chaosgopher/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chaostesting%2Fchaosgopher/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264502653,"owners_count":23618667,"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-04-08T03:58:44.161Z","updated_at":"2025-07-09T20:32:01.590Z","avatar_url":"https://github.com/chaostesting.png","language":"Go","readme":"# CHAOS GOPHER\n\nA collection of unix style tools in GO to do chaos engineering or testing.\n\n### TheSlowness\n\nComing soon, tool to simulate slowness\n\n\n## MYSQL Integration Failover tests \n\n\n### MYSQL M-S\n\nRun the script in the following order to setup a master-slave MySQL cluster via docker:\n\n1. `cd mysql` - Goes in to the `mysql` folder first.\n2. `./start.sh` - Builds and starts 2 MySQL Docker containers. One master, one slave.\n3. `docker logs -f mysql-master` - And **wait for master MySQL instance to finish initialization.**\n4. `./setup.sh` - Sets up the master-slave relation, adds data, and do a basic query test.\n5. `./failover.sh` - To start the interactive `mysqlfailover` monitor and auto-failover process.\n\n### MYSQL M-M\n\nThe scripts are the same as the basic MySQL setup. Except that there is no failover step\nas all instances are considered master.\n\n### ETCD (dockerized)\n\n1. `cd etcd` - Go to etcd folder.\n2. `./build.sh` - Builds required Docker images.\n3. `./start.sh` - Starts the main ETCD instance.\n4. `./seed.sh` - Seed initial data to ETCD. Run **again** if you encounter a timeout\n   error.\n\nUse `./ctl.sh` script when you need to run `etcdctl`. Example:\n\n```sh\n$ ./ctl.sh get /chaostesting/datasources\n[ { \"name\": ...\n```\n\n### ETCD (local)\n\n* Install via Homebrew `brew install etcd`\n* Gets etcdctl via go get `go get github.com/coreos/etcd/client`\n* Uses `seed-local.sh` instead of `seed.sh`\n\n### SERVER (dockerized)\n\n1. `cd app` - Go to the app folder.\n2. `./build.sh` - Build app's Docker image.\n3. `./start.sh` - Start app in Docker container. Keep the foreground process running.\n4. `./start-tester.sh` - Start tester app in Docker container.\n\n**NOTE:** The tester app should *not* crash. If it crashes, this mean something is not\nconfigured correctly. For example, ETCD stalling may cause configuration settings to be\ninconsistent inside the main app.\n\n### SERVER (local)\n\nUse `/run*.sh` script for local runs. Configurations needs to be updated since most\ncomponents will use the `docker0` network interface otherwise.\n\n1. Start MySQL and ETCD containers as usual.\n2. `docker pull hyperworks/disk-filler` - This image is required by the tester.\n3. `cd etcd` - Go to ETCD folder.\n4. `./seed-local.sh` - Seed configuration for local runs.\n5. `cd ../app` - Go to app folder.\n6. `export API_ENDPOINT=http://0.0.0.0:8080` - Points API endoint on local machine.\n7. `export ETCD_ENDPOINT=http://0.0.0.0:2379` - Points ETCD endpoint on local machine.\n8. `./run.sh` - Starts the app.\n9. `./run-loader.sh` - Starts the loader (or tester with `run-tester.sh`).\n\n### RESET\n\nTo destroy all containers in your system and start over from scratch.\n\n```\ndocker rm -fv `docker ps -aq`\n```\n","funding_links":[],"categories":["3. Fault Injection"],"sub_categories":["Languages"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchaostesting%2Fchaosgopher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchaostesting%2Fchaosgopher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchaostesting%2Fchaosgopher/lists"}