# Тест StratoVirt

StratoVirt поддерживает два режима тестирования: модульный тест и интеграционный тест. Следует отметить, что в настоящее время интеграционный тест не полностью поддерживается на архитектуре x86_64.

## Модульный тест

Модульные тесты — это функции Rust, которые проверяют, работает ли код без тестов ожидаемым образом. Мы рекомендуем выполнять выполнение модульных тестов отдельно, запускать модульный тест StratoVirt следующим образом:

```shell
$ cargo test --workspace --exclude mod_test -- --nocapture --test-threads=1
```

## Интеграционный тест

Интеграционный тест StratoVirt — это метод комплексного тестирования. Во время теста процесс StratoVirt будет запущен как сервер и будет взаимодействовать через сокет и QMP для проверки работы функций модуля StratoVirt.

Перед запуском интеграционного теста нам нужно сначала скомпилировать `stratovirt` и `virtiofsd`, а затем экспортировать переменные среды `STRATOVIRT_BINARY` и `VIRTIOFSD_BINARY`.

Скомпилируйте StratoVirt:

```shell
$ cargo build --workspace --bins --release --target=aarch64-unknown-linux-gnu --all-features
```

Скомпилируйте virtiofsd:

```shell
$ git clone https://gitlab.com/virtio-fs/virtiofsd.git
$ cd virtiofsd
$ cargo build --release
```

Экспортируйте переменные среды `STRATOVIRT_BINARY` и `VIRTIOFSD_BINARY`:

```shell
$ export STRATOVIRT_BINARY="/path/to/stratovirt"
$ export VIRTIOFSD_BINARY="/path/to/virtiofsd"
```

Запустите интеграционный тест StratoVirt следующим образом:

```shell
$ cargo test --all-features -p mod_test -- --nocapture --test-threads=1