add_kss_pal_qemu_tests()

12 января 2026

ID add_kss_pal_qemu_tests

Перед чтением этого раздела, рекомендуется ознакомиться с общими принципами создания и выполнения тестов политики безопасности решения на базе KasperskyOS.

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

  • синтаксис функции;
  • параметры функции;
  • артефакты, генерируемые функцией;
  • сборка и запуск PAL-тестов, созданных с использованием этой функции;
  • пример использования функции.

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

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

add_kss_pal_qemu_tests(...)

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

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

  • TEST_NAME_PREFIX <PREFIX>

    Префикс, используемый для создания имен исполняемых файлов PAL-тестов и директорий с артефактами.

    Имя каждого исполняемого файла PAL-теста формируется по шаблону: <PREFIX>PalTest<N>, где N – индекс PSL-файла в списке PSL-файлов, заданных через параметр PSL_FILES.

    Путь к директории с артефактами формируется по шаблону: <директория сборки программы>/<PREFIX>/pal-test/.

  • USE_GENERATE_KOS_TEST <ON|OFF>

    Метод генерации артефактов PAL-теста. При значении ON для каждого PAL-теста используется функция generate_kos_test(), которая генерирует полный комплект артефактов, необходимых для запуска этого теста в KasperskyOS. При значении OFF генерируется только часть артефактов PAL-теста: исполняемый файл, файлы описания инициализации и политики безопасности. Значение по умолчанию: ON.

  • PSL_FILES <FILE1> [<FILE2>...]

    Список путей к PSL-файлам (*.psl или *.psl.in). Для каждого PSL-файла из этого списка создается PAL-тест с именем <PREFIX>PalTest<N>, где: PREFIX – префикс, задаваемый в параметре TEST_NAME_PREFIX; N – индекс PSL-файла в списке.

  • ENTITIES <ENTITY1> [<ENTITY2>...]

    Список CMake-целей для сборки исполняемых файлов программ, которые необходимы при тестировании политики безопасности решения на базе KasperskyOS. Параметр необходим, если используются шаблоны *.psl.in. Эти программы будут автоматически добавлены в файлы описания инициализации и политики безопасности PAL-теста.

  • DEPENDS <TARGET1> [<TARGET2>...]

    Список CMake-целей, в результате выполнения которых IDL-, CDL-, EDL-файлы, от которых зависят PSL-файлы, будут помещены в те директории, где компилятор nk-psl-gen-c сможет их найти. Указание зависимостей гарантирует, что эти CMake-цели будут собраны до начала компиляции PSL-файлов, обеспечивая доступность IDL-, CDL-, EDL-файлов для компилятора nk-psl-gen-c.

  • CUSTOM_VFS <NAME>

    Имя CMake-цели пользовательской реализации сервера VFS. При указании этого параметра исполняемые файлы PAL-тестов будут использовать указанную реализацию для доступа к файловой системе. Параметр используется, если значение параметра USE_GENERATE_KOS_TEST равно ON.

  • FSTAB_FILE <PATH>

    Путь к пользовательскому fstab-файлу. Параметр используется, если значение параметра USE_GENERATE_KOS_TEST равно ON.

  • ENV_VARS <VAR1=VAL1> [<VAR2=VAL2>...]

    Список переменных окружения, передаваемый исполняемым файлам PAL-тестов при запуске. Параметр используется, если значение параметра USE_GENERATE_KOS_TEST равно ON.

  • GINGER_ENABLE <ON|OFF>

    Включение (ON) или отключение (OFF) шаблонизатора Ginger.

  • GINGER_DEFINITIONS <DEF1> [<DEF2>...]

    Набор переменных, используемых при раскрытии PSL-шаблонов Ginger.

  • GINGER_DUMP_DIR <DIR>

    Путь к директории, где будут сохранены промежуточные PSL-файлы, полученные из PSL-шаблонов Ginger. Если параметр не указан, то эти промежуточные файлы не сохраняются.

  • TAGS <TAG1> [<TAG2>...]

    Список тегов для PAL-тестов. Теги могут быть использованы для группировки и фильтрации PAL-тестов.

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

При выполнении функции add_kss_pal_qemu_tests() генерируются артефакты, необходимые для сборки и запуска PAL-теста в KasperskyOS. Артефакты генерируются в следующих директориях:

  • директория сборки решения – корневая директория сборки решения, задаваемая в опции -B команды cmake (обычно это директория build). В файлах сборки CMakeList.txt обозначается переменной ${CMAKE_BINARY_DIR}.
  • директория сборки программы – поддиректория в корневой директории, где собирается программа, входящая в решение: <имя директории сборки решения>/<имя директории с исходным кодом программы>. Например, поддиректорией сборки программы Einit будет директория build/einit. В файлах сборки CMakeList.txt обозначается переменной ${CMAKE_CURRENT_BINARY_DIR}.

В директории сборки решения генерируются следующие артефакты:

  • Скрипт с командами запуска этого решения под QEMU ./bin/tests/gtest_<имя PAL-теста>.qemu.sh.
  • Файл в формате YAML c параметрами теста ./bin/tests/qemu-<имя PAL-теста>-test-conf.yaml.
  • Загружаемый образ решения ./generated/einit_<имя PAL-теста>/kos-qemu-image-<имя PAL-теста>.
  • Файлы сборки инициализирующей программы Einit для PAL-теста в директории ./generated/einit_<имя PAL-теста>/.
  • fstab-файл с именем ./generated/fstab_<имя PAL-теста>/fstab.

В директории сборки программы:

  • Образ диска ./<имя PAL-теста>-images/system_hdd.img. После запуска PAL-теста на диск будут записан junit-отчет output_junit.xml.
  • Исполняемый файл PAL-теста ./<имя PAL-теста>.
  • EDL-описание PAL-теста ./pal-test/<имя PAL-теста>.edl.
  • Автоматически генерируемый транспортный код ./pal-test/<имя PAL-теста>.edl.h.
  • Сгенерированный утилитой nk-psl-gen-c исходный код:
    • декодера аудита на языке C ./pal-test/security.psl.audit.c;
    • PAL-тестов на языке C++ ./pal-test/security.psl.test.cpp;
    • модуля Kaspersky Security Module ./pal-test/security.psl.ksm.cpp.

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

Сборка и запуск PAL-теста описан в шаге 4 тестовой процедуры раздела "Создание и выполнение тестов политики безопасности решения на базе KasperskyOS".

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

Пример

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

cmake_minimum_required (VERSION 3.25)

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

project (pal_tests)

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

include (platform)

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

initialize_platform (FORCE_STATIC)

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

include (platform/image)

# Подключение CMake-библиотеки nk для работы с компилятором NK (nk-gen-c).

include (platform/nk)

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

include (test-generator/add_kss_pal_qemu_tests)

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

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

nk_build_idl_files (${PROJECT_NAME}_idl_files

NK_MODULE pal_tests

IDL "${NK_RESOURCES}/pal_tests/${IDL_FILE}")

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

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

nk_build_edl_files (${PROJECT_NAME}_edl_files

DEPENDS ${PROJECT_NAME}_idl_files

NK_MODULE pal_tests

EDL "${NK_RESOURCES}/pal_tests/${EDL_FILE})

add_kss_pal_qemu_tests (

PSL_FILES

src/security.psl

DEPENDS

${PROJECT_NAME}_edl_files)

Подробнее см. пример pal_tests, который расположен в директории examples из состава KasperskyOS Community Edition.

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!