diff --git a/substreams/ethereum-template/test_assets.yaml b/substreams/ethereum-template/test_assets.yaml new file mode 100644 index 0000000..31edb21 --- /dev/null +++ b/substreams/ethereum-template/test_assets.yaml @@ -0,0 +1,28 @@ +substreams_yaml_path: ./substreams.yaml +protocol_type_names: + - "type_name_1" + - "type_name_2" +tests: + - name: test_pool_creation + start_block: 123 + stop_block: 456 + expected_state: + protocol_components: + - id: "0xbebc44782c7db0a1a60cb6fe97d0b483032ff1c7" + tokens: + - "0xdac17f958d2ee523a2206206994597c13d831ec7" + - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" + - "0x6b175474e89094c44da98b954eedeac495271d0f" + static_attributes: + creation_tx: "0x20793bbf260912aae189d5d261ff003c9b9166da8191d8f9d63ff1c7722f3ac6" + - name: test_something_else + start_block: 123 + stop_block: 456 + expected_state: + protocol_components: + - id: "0xdc24316b9ae028f1497c275eb9192a3ea0f67022" + tokens: + - "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" + - "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84" + static_attributes: + creation_tx: "0xfac67ecbd423a5b915deff06045ec9343568edaec34ae95c43d35f2c018afdaa" diff --git a/testing/README.md b/testing/README.md new file mode 100644 index 0000000..7f64c80 --- /dev/null +++ b/testing/README.md @@ -0,0 +1,53 @@ +# Substreams Testing + +We know testing your Substreams modules can be a pain. So, our goal here is to provide a quick and easy way to run end-to-end tests. + +Our script will build the `.spkg` for your Substreams module, index the specified block range, and check if the expected state has been correctly indexed in PostgreSQL. + +## How to Test + +Here's what you need to do: + +1. Get the latest version of our indexer. +2. Define your tests and expected state. +3. Run the testing script. + +### Get the Latest Version of Tycho (Indexer) + +We don't have a direct download link yet. Please reach out to us to get the latest version. Once you have it, place it in the `/testing/` folder. + +### Define Your Tests + +Define all your tests in a `yaml` file. You can find a template in `substreams/ethereum-template/test_assets.yaml`. + +You'll need to: + +- Point to the target substreams config file. +- Specify the expected protocol types. +- Define your tests. + +For each test, the script will index all blocks between `start-block` and `stop-block` and check that the indexed state matches the expected state. + +### Run the Script + +Once everything is set up, run our script using the CLI. + +First, you need a local postgres database + +```bash +docker-compose up -d db +``` + +Then export an environment variable for RPC connection + +```bash +export RPC_URL=your-chain-rpc +``` + +And finally run the testing script + +```bash +python testing/cli.py --test_yaml_path "./substreams/your-substreams-folder/test_assets.yaml" +``` + +You can get the available CLI flags using `--help`