Files
evm/tests/README.md
2025-08-01 01:23:42 +00:00

55 lines
2.4 KiB
Markdown

# Developing with tmpnet
The `load/` and `warp/` paths contain end-to-end (e2e) tests that use
the [tmpnet
fixture](https://github.com/luxfi/luxd/blob/master/tests/fixture/tmpnet/README.md). By
default both test suites use the tmpnet fixture to create a temporary
network that exists for only the duration of their execution.
It is possible to create a temporary network that can be reused across
test runs to minimize the setup cost involved:
```bash
# From the root of a clone of luxd, build the tmpnetctl cli
$ ./scripts/build_tmpnetctl.sh
# Start a new temporary network configured with evm's default plugin path
$ ./build/tmpnetctl start-network --lux-path=./build/luxd
# From the root of a clone of evm, execute the warp test suite against the existing network
$ ginkgo -vv ./tests/warp -- --use-existing-network --network-dir=$HOME/.tmpnet/networks/latest
# To stop the temporary network when no longer needed, execute the following from the root of the clone of luxd
$ ./build/tmpnetctl stop-network --network-dir=$HOME/.tmpnet/networks/latest
```
The network started by `tmpnetctl` won't come with subnets configured,
so the test suite will add them to the network the first time it
runs. Subsequent test runs will be able to reuse those subnets without
having to set them up.
## Collection of logs and metrics
Logs and metrics can be optionally collected for tmpnet networks and
viewed in grafana. The details of configuration and usage for
evm mirror those of luxd and the same
[documentation](https://github.com/luxfi/luxd/blob/master/tests/fixture/tmpnet/README.md#Monitoring)
applies.
## Optional Dev Shell
Some activities, such as collecting metrics and logs from the nodes targeted by an e2e
test run, require binary dependencies. One way of making these dependencies available is
to use a nix shell which will give access to the dependencies expected by the test
tooling:
- Install [nix](https://nixos.org/). The [determinate systems
installer](https://github.com/DeterminateSystems/nix-installer?tab=readme-ov-file#install-nix)
is recommended.
- Use ./scripts/dev_shell.sh to start a nix shell
- Execute the dependency-requiring command (e.g. `ginkgo -v ./tests/warp -- --start-collectors`)
This repo also defines a `.envrc` file to configure [devenv](https://direnv.net/). With `devenv`
and `nix` installed, a shell at the root of the repo will automatically start a nix dev
shell.