# IREE regression testing suite

This project defines tooling and tests comprising IREE's model regression
testing suite. It aims operate at the compiler-input level and choreographs
the normal tool flows of `iree-compile`, `iree-run-module`, 
`iree-benchmark-module`, etc.

## Quick Start

If you have IREE tools on your path or have a virtual environment setup:

```
pip install -e experimental/regression_suite
PATH=../iree-build/tools:$PATH \
pytest experimental/regression_suite
```

Useful options:

* `-s`: Stream all test output.
* `-m MARKEXPR`: Select subsets of the test suite.

Common marker selections:

* `-m "plat_host_cpu and presubmit"`: Run the host-CPU tests configured for
  presubmit on the CI.
* `-m "plat_rdna3_vulkan and presubmit"`: Run the host-CPU tests configured for
  presubmit on the CI.

You can display all markers with `pytest experimental/regression_suite --markers`

## Setting up a venv

NOTE: For this to work, you must previously have installed GitHub command line
tools and authenticated (`gh auth`). See https://cli.github.com/.

The test suite doesn't care how you get tools on your path, but a common
case is to run the regression suite from built compilers and tools from a
GitHub presubmit or postsubmit run. This can be done in one step by setting
up a venv:

```
deactivate  # If have any venv active.
python ./build_tools/pkgci/setup_venv.py \
  /tmp/iree_gh_venv \
  --fetch-gh-workflow=<<RUN_ID>> \
  [--compiler-variant=asserts] [--runtime-variant=asserts]
source /tmp/iree_gh_venv/bin/activate
```

In the above, `<<RUN_ID>>` is the value in any GitHub action presubmit/postsubmit
workflow which has built package artifacts. As an example, if looking at a GitHub
Actions status page on: 
`https://github.com/openxla/iree/actions/runs/5957351746/job/16159877442`, then
the run id is the first number in the URL (5957351746).

Running the above will allow you to run `pytest` and you will have tools as built
at the commit from which the workflow run originated.
