https://github.com/chaostesting/chaosgopher
Chaos testing/engineering in GO
https://github.com/chaostesting/chaosgopher
Last synced: 9 months ago
JSON representation
Chaos testing/engineering in GO
- Host: GitHub
- URL: https://github.com/chaostesting/chaosgopher
- Owner: chaostesting
- Created: 2015-10-02T10:10:02.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2015-10-02T10:13:46.000Z (over 10 years ago)
- Last Synced: 2024-11-20T16:40:00.182Z (over 1 year ago)
- Language: Go
- Size: 895 KB
- Stars: 15
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-chaos-engineering - CHAOS GOPHER - A collection of unix style tools in GO to do chaos engineering or testing. (3. Fault Injection / Languages)
README
# CHAOS GOPHER
A collection of unix style tools in GO to do chaos engineering or testing.
### TheSlowness
Coming soon, tool to simulate slowness
## MYSQL Integration Failover tests
### MYSQL M-S
Run the script in the following order to setup a master-slave MySQL cluster via docker:
1. `cd mysql` - Goes in to the `mysql` folder first.
2. `./start.sh` - Builds and starts 2 MySQL Docker containers. One master, one slave.
3. `docker logs -f mysql-master` - And **wait for master MySQL instance to finish initialization.**
4. `./setup.sh` - Sets up the master-slave relation, adds data, and do a basic query test.
5. `./failover.sh` - To start the interactive `mysqlfailover` monitor and auto-failover process.
### MYSQL M-M
The scripts are the same as the basic MySQL setup. Except that there is no failover step
as all instances are considered master.
### ETCD (dockerized)
1. `cd etcd` - Go to etcd folder.
2. `./build.sh` - Builds required Docker images.
3. `./start.sh` - Starts the main ETCD instance.
4. `./seed.sh` - Seed initial data to ETCD. Run **again** if you encounter a timeout
error.
Use `./ctl.sh` script when you need to run `etcdctl`. Example:
```sh
$ ./ctl.sh get /chaostesting/datasources
[ { "name": ...
```
### ETCD (local)
* Install via Homebrew `brew install etcd`
* Gets etcdctl via go get `go get github.com/coreos/etcd/client`
* Uses `seed-local.sh` instead of `seed.sh`
### SERVER (dockerized)
1. `cd app` - Go to the app folder.
2. `./build.sh` - Build app's Docker image.
3. `./start.sh` - Start app in Docker container. Keep the foreground process running.
4. `./start-tester.sh` - Start tester app in Docker container.
**NOTE:** The tester app should *not* crash. If it crashes, this mean something is not
configured correctly. For example, ETCD stalling may cause configuration settings to be
inconsistent inside the main app.
### SERVER (local)
Use `/run*.sh` script for local runs. Configurations needs to be updated since most
components will use the `docker0` network interface otherwise.
1. Start MySQL and ETCD containers as usual.
2. `docker pull hyperworks/disk-filler` - This image is required by the tester.
3. `cd etcd` - Go to ETCD folder.
4. `./seed-local.sh` - Seed configuration for local runs.
5. `cd ../app` - Go to app folder.
6. `export API_ENDPOINT=http://0.0.0.0:8080` - Points API endoint on local machine.
7. `export ETCD_ENDPOINT=http://0.0.0.0:2379` - Points ETCD endpoint on local machine.
8. `./run.sh` - Starts the app.
9. `./run-loader.sh` - Starts the loader (or tester with `run-tester.sh`).
### RESET
To destroy all containers in your system and start over from scratch.
```
docker rm -fv `docker ps -aq`
```