lift_indicator_suite/tests/host/protocol/README.md

2.1 KiB
Raw Permalink Blame History

test_protocol

Модуль под тестом

firmware/test/src/protocol.c — сериализация JSON-событий протокола (session_start, test_begin, test_result, summary, confirm_request, pong, error).

Категория

B — зависит от cli_send() и bsp_tick_get_ms(), подменяемых через fff.

Моки

  • cli_send — fff void-фейк; итоговая строка захватывается через custom_fake (capture_cli_send) в статический буфер, т.к. аргумент — указатель на стековый буфер protocol_send_*(), живой только до возврата.
  • bsp_tick_get_ms — fff value-фейк, управляет значением uptime_ms в session_start.
  • bsp_delay — fff void-фейк-заглушка (не используется в проверках).

Что проверяется

Точный JSON-текст, передаваемый в cli_send(), для каждого типа сообщения: session_start (нулевой и ненулевой uptime, версия прошивки), test_begin (critical: true/false), test_result (pass, fail с деталями, skip), summary (общий результат pass/fail), confirm_request (кастомный таймаут и подстановка таймаута по умолчанию при timeout_ms == 0), pong, error (разные коды ошибок).

Гарантии

  • Формат JSON точно соответствует протоколу — сравнивается побайтово с эталонной строкой, а не только наличием отдельных полей.
  • Каждый protocol_send_*() вызывает cli_send() ровно один раз.
  • confirm_request с timeout_ms == 0 всегда получает PROTOCOL_CONFIRM_TIMEOUT_MS вместо нуля.

Запуск

ctest --preset host-debug-test -R test_protocol -V