Project

General

Profile

Опция компиляции CPPTESK_DESERIALIZE_UNEXPECTED_REACTION

Added by Alexander Kamkin about 13 years ago

В С++TESK версии 1.0.13 появилась возможность вывода значений полей неожиданных реакций (UNEXPECTED_REACTION). При обнаружении неожиданной реакции на выходах тестируемой RTL-модели запускается десериализатор соответствующего выходного интерфейса, ошибка регистрируется только после окончания десериализации.

Для включения этой возможности необходимо сделать две вещи:

  1. Добавить в сборку опцию -DCPPTESK_DESERIALIZE_UNEXPECTED_REACTION.
  2. Добавить в параметры макроса CPPTESK_DEFINE_BASIC_OUTPUT_LISTENER имя типа выходного сообщения:
    CPPTESK_DEFINE_BASIC_OUTPUT_LISTENER(listener_name, output_iface, message_type, condition);
    

Replies (3)

RE: Опция компиляции CPPTESK_DESERIALIZE_UNEXPECTED_REACTION - Added by Sergey Smolov about 13 years ago

А если OUTPUT_LISTENER не BASIC, а самодельный? Скажем, сделан просто некоторый DEFINE_PROCESS. Будет ли вывод полей неожиданных реакций работать и в таком случае?

RE: Опция компиляции CPPTESK_DESERIALIZE_UNEXPECTED_REACTION - Added by Mikhail Chupilko about 13 years ago

Вывод полей будет работать, но будут выводиться только те данные, которые были явным образом добавлены в сообщение, посылаемое в registerReaction.

RE: Опция компиляции CPPTESK_DESERIALIZE_UNEXPECTED_REACTION - Added by Alexander Kamkin about 13 years ago

У меня (на одном из компьютеров) новый basic listener не собирается. Для того, чтобы заработало нужно в файле include/hw/media.hpp в макросе CPPTESK_DEFINE_BASIC_OUTPUT_LISTENER() убрать typename:

#define CPPTESK_DEFINE_BASIC_OUTPUT_LISTENER(listener_name, output_iface, message_type, condition) \
    CPPTESK_DECLARE_PROCESS(listener_name) { \
    ...
    CPPTESK_START_PROCESS(); \
        while(true) { \
            CPPTESK_WAIT(condition); \
            typename adapters_map_t::iterator i = _adapters.find(&iface); \ // <= вот в этой строчке
        ...

Тикет заведен.

    (1-3/3)