# antlion-runner

A program to run antlion locally and in infrastructure. Includes a config
generator with mDNS discovery and sensible defaults.

## Using locally with an emulator

Running antlion locally with a Fuchsia emulator allows developers to perform a
sanity checks on their changes. Running this way is very quick (~5 seconds) and
can spot simple mistakes before code review!

1. Build Fuchsia with antlion support
   ```sh
   jiri update -gc # if you haven't updated in a while
   fx set workstation_eng_paused.qemu-x64 \
      --with-host //third_party/antlion:e2e_tests \
      --with-host //third_party/antlion:tests \
      --with //src/testing/sl4f
   fx build # if you haven't built in a while
   ```
2. Start the package server. Keep this running in the background.
   ```sh
   fx serve
   ```
3. In a separate terminal, start the emulator with access to external networks.
   ```sh
   ffx emu stop && ffx emu start -H --net tap && ffx log
   ```
4. In a separate terminal, run a test
   ```sh
   fx test --e2e --output //third_party/antlion:sl4f_sanity_test
   ```

> Note: Local testing with auxiliary devices is not supported by antlion runner.
Use antlion directly for these cases; see the antlion [README](../README.md).

## Testing

```sh
fx set core.qemu-x64 --with //vendor/google/build/python/antlion/runner:tests
fx test --output //vendor/google/build/python/antlion/runner:runner_test
```
