generate_kos_test()

В разделе представлено описание функции generate_kos_test() CMake-библиотеки test_generator:

Синтаксис функции

Функция объявлена в файле, который находится в KasperskyOS Community Edition по пути: toolchain/share/cmake/Modules/test-generator/generate_kos_test.cmake.

generate_kos_test(ENTITY_NAME <NAME> TEST_TYPE <TYPE> ...)

Команда генерирует инициализирующую программу Einit, а также другие артефакты, необходимые для сборки и запуска теста на базе KasperskyOS.

Параметры функции

В KasperskyOS Community Edition доступны следующие параметры:

Функция generate_kos_test() дополнительно обрабатывает переменную окружения GTEST_FLAGFILE_PATH, которая задает путь к файлу с параметрами командной строки для Google Test.

Артефакты, генерируемые функцией

При выполнении функции generate_kos_test() в директории сборки решения (обычно это директория build) генерируются артефакты, необходимые для сборки и запуска теста в KasperskyOS.

Сборка и запуск теста

Чтобы подготовить тест с использованием CMake-библиотеки test_generator, необходимо выполнить следующие действия:

  1. Указать, используя CMake-команду cmake_minimum_required(), минимально необходимую версию системы сборки CMake для проекта, содержащего исходные файлы теста.
  2. Подключить к CMake-проекту, используя CMake-команду include(), следующие CMake-библиотеки: platform, image, test_generator.
  3. Подготовить вручную или, используя команду generate_edl_file(), сгенерировать EDL-описание теста.
  4. Сгенерировать файл *.edl.h, используя команду nk_build_edl_files().
  5. Добавить сгенерированный файл *.edl.h к проекту, используя CMake-команду add_executable().
  6. Добавить к исходной CMake-цели зависимость от CMake-цели генерации *.edl.h-файла, используя команду add_dependencies().
  7. Вызвать команду generate_kos_test() с требуемыми параметрами.

Сборка и запуск теста выполняются с использованием следующих команд:

cmake -B build -D CMAKE_TOOLCHAIN_FILE="$KOSCEDIR/toolchain/share/toolchain-aarch64-kos.cmake"

cmake -B ./build && cmake --build ./build -t kos-qemu-image-<имя теста>-sim

Где имя теста – значение параметра ENTITY_NAME.

Также запуск теста выполняется с использованием расширения KasperskyOS SDK Extension for Visual Studio Code. Подробнее см. запуск тестов в разделе "Функции расширения".

Пример

# Минимально необходимая версия системы сборки CMake для проекта.

cmake_minimum_required (VERSION 3.25)

# Название CMake-проекта.

project (Test)

# Подключение CMake-библиотеки platform.

include (platform)

# Статическая компоновка исполняемых файлов.

initialize_platform (FORCE_STATIC)

# Подключение CMake-библиотеки image, содержащей скрипты сборки образа решения.

include (platform/image)

# Подключение к проекту CMake-библиотеки test_generator.

include (test-generator/test_generator)

# Генерация EDL-файла с описанием класса процессов.

generate_edl_file(${PROJECT_NAME})

# Создание CMake-цели для генерации .edl.h-файла

# для указанного EDL-файла при помощи компилятора NK.

nk_build_edl_files(${PROJECT_NAME}_edl_files EDL ${EDL_FILE})

# Добавление CMake-цели Test для генерации исполняемого

# файла с тестом, используя файлы с исходным кодом

# теста и сгенерированный .edl.h-файл.

add_executable (${PROJECT_NAME}

<файлы с исходным кодом>

$<TARGET_OBJECTS:${PROJECT_NAME}_edl_files>)

# Добавление зависимости:

# генерация edl.h-файла должна произойти ранее сборки CMake-цели Test.

add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}_edl_files)

# Вызов команды, генерирующей артефакты для сборки gtest-теста.

# На запуск и выполнение одного тестового случая отведено 60 секунд.

generate_kos_test(ENTITY_NAME ${PROJECT_NAME} TEST_TYPE gtest TIMEOUT 60)

В начало