60 lines
1.7 KiB
Markdown
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.
|