# Testground testplans for Lotus

This directory consists of [testplans](https://docs.testground.ai/concepts-and-architecture/test-structure) built to be run on [Testground](https://github.com/testground/testground) that exercise Lotus on [TaaS](https://ci.testground.ipfs.team).

## Table of Contents

- [Testing topics](#testing-topics)
- [Running the test cases](#running-the-test-cases)

## Testing topics

* **storage and retrieval deals:**
    * end-to-end flows where clients store and retrieve pieces from miners, including stress testing the system.
* **payment channels:**
    * stress testing payment channels via excessive lane creation, excessive payment voucher atomisation, and redemption.

## Running the test cases

If you are unfamiliar with Testground, we strongly suggest you read the Testground [Getting Started guide](https://docs.testground.ai/getting-started) in order to learn how to install Testground and how to use it.

You can find various [composition files](https://docs.testground.ai/running-test-plans#composition-runs) describing various test scenarios built as part of Project Oni at [`lotus-soup/_compositions` directory](https://github.com/filecoin-project/oni/tree/master/lotus-soup/_compositions).

We've designed the test cases so that you can run them via the `local:exec`, `local:docker` and the `cluster:k8s` runners. Note that Lotus miners are quite resource intensive, requiring gigabytes of memory. Hence you would have to run these test cases on a beafy machine (when using `local:docker` and `local:exec`), or on a Kubernetes cluster (when using `cluster:k8s`).

Here are the basics of how to run the baseline deals end-to-end test case:

### Running the baseline deals end-to-end test case

1. Compile and Install Testground from source code.
    * See the [Getting Started](https://github.com/testground/testground#getting-started) section of the README for instructions.

2. Run a Testground daemon

```
testground daemon
```

3. Download required Docker images for the `lotus-soup` test plan

```
make pull-images
```

Alternatively you can build them locally with

```
make build-images
```

4. Import the `lotus-soup` test plan into your Testground home directory

```
testground plan import --from ./lotus-soup
```

6. Run a composition for the baseline deals end-to-end test case

```
testground run composition -f ./lotus-soup/_compositions/baseline-docker-5-1.toml
```