nim-codex/testground/README.md

60 lines
1.7 KiB
Markdown

# Codex Testground
Codex Testground makes use of [Testground](https://github.com/testground/testground) and [testground-nim-sdk](https://github.com/status-im/testground-nim-sdk) for flexible end-to-end testing and infra simulations of the Codex Network.
## Prerequisites
[Testground](https://github.com/testground/testground) must be built, installed, and available in `PATH` when running `make testground`
```text
$ export PATH="${HOME}/go/bin:${PATH}"
```
## Running a Codex Testground plan locally
*Assumes a local Docker daemon. For example, on macOS [Docker Desktop](https://www.docker.com/products/docker-desktop/) should be installed and running.*
To run the default Codex Testground plan
```text
$ make testground
```
It's possible to modify a plan's build and runtime configuration via `make` variables
```text
TESTGROUND_BUILDER
TESTGROUND_OPTIONS
TESTGROUND_PLAN
TESTGROUND_RUNNER
TESTGROUND_TESTCASE
```
For example
```text
$ make \
TESTGROUND_PLAN=simple_libp2p \
TESTGROUND_OPTIONS="--instances=8" \
testground
```
Take care re: shell quoting shenanigans `(╯°□°)╯︵ ┻━┻`
## Adding a new plan
When adding a Tesground plan it should have the following basic structure
```text
testground/[plan]/
├── Dockerfile
├── config.nims
├── main.nim
└── manifest.toml
```
That basic structure can be copied from e.g. `testground/simple_tcp_ping`, but take care to replace `simple_tcp_ping` with the new plan's name in `Dockerfile` and `manifest.toml`.
## Running a plan in AWS, etc.
Write me. Should mainly be a matter of passing cloud credentials and configuration via `make` variables mentioned above. Additional `make` variables may need to be added.