В настоящей статье представлена подробная инструкция по тестированию видов сведений в тестовой и продуктивной средах СМЭВ с использованием бесплатного Адаптера СМЭВ.
1. Общее описание процесса тестирования
Процесс тестирования видов сведений разбивается на два этапа:
- тестирование в тестовой среде СМЭВ;
- тестирование в продуктивной среде СМЭВ.
Тестирование в тестовой среде СМЭВ производится с использованием эмуляторов информационных систем поставщиков данных и эталонных запросов, прилагаемых к описанию видов сведений на технологическом портале СМЭВ.
Эмулятор представляет собой процессор XSL-преобразований, который возвращает потребителю определенный эталонный ответ в зависимости от значения определенного элемента в эталонном запросе.
Эталонные запросы, эталонные ответы и правила XSL-преобразования описываются в Руководстве пользователя вида сведений.
Для того, чтобы эталонный запрос был переадресован эмулятору, необходимо включить в запрос элемент testMessage со значением true.
Тестирование в продуктивной среде СМЭВ производится с использованием реальных запросов к реальным информационным системам поставщиков.
В обоих вариантах тестирования конечным результатом с точки зрения Ситуационного центра СМЭВ, который выносит заключение о технической готовности ИС потребителя к обмену сообщениями по виду сведений, является набор запросов и ответов в формате СМЭВ.
В обычном режиме работы СМЭВ-адаптер не сохраняет сообщения в формате СМЭВ.
Для перевода СМЭВ-адаптера в отладочный режим необходимо установить параметр development.transport.persist.soap в значение true и перезапустить СМЭВ-адаптер.
Для СМЭВ-адаптера устаревшей версии параметр development.transport.persist.soap располагается в конфигурационном файле core.properties.
Для СМЭВ-адаптера текущей версии параметр development.transport.persist.soap устанавливается в интерфейсе администратора, в разделе «Настройка конфигурации адаптера».
Для перехода в этот раздел необходимо в меню выбрать пункт «Настройка конфигурации» и в открывшейся форме выбрать режим «Показать расширенные настройки» (см. рисунок).

В расширенном режиме необходимо развернуть раздел «Отладка» и установить флаг «Сохранение входящих/исходящих сообщений СМЭВ» (см. рисунок), после чего нажать кнопку «Сохранить».


После сохранения изменений в параметрах адаптера, необходимо его перезапустить, чтобы он смог прочитать новые значения параметров при запуске.
Для этого необходимо в командной панели перейти в каталог установки СМЭВ-адаптера и выполнить команду adapter.exe restart (или sh adaper.sh restart для CentOS), а если СМЭВ-адаптер установлен как служба Windows, перезапустить службу из консоли управления службами.
СМЭВ-адаптер устаревшей версии можно перезапустить двумя способами:
- Перезагрузкой сервера (если запуск адаптера проиводится автоматически при загрузке ОС);
- Удалением процесса адаптера и повторным его запуском из консоли.
Второй вариант более предпочтительный, потому что после окончания тестирования необходимо восстановить значение параметра development.transport.persist.soap=false, и только после этого перезагружать сервер (или адаптер).
Для удаления процесса адаптера в системе CentOS необходимо выяснить его PID с помощью команды ps axu | grep java, а затем выполнить команду kill [PID].
Для повторного запуска адаптера необходимо в консоли перейти в каталог установки адаптера и выполнить команду sh startup.sh.
2. Тестирование в тестовой среде СМЭВ
Диаграмма активностей процесса тестирования ВС в тестовой среде СМЭВ представлена на рисунке.

2.1. Подготовка тестового запроса
Тестовый запрос должен быть сформирован в формате СМЭВ-адаптера, т.е. в виде сообщения ClientMessage.
Структура ClientMessage для запроса представлена на рисунке.

Значение элемента itSystem должно соответствовать мнемонике информационной системы Потребителя. В тестовой среде СМЭВ мнемоники ИС участников взаимодействия имеют, как правило, суффикс «_3T», в отличие от продуктивной среды, где мнемоники оканчиваются на «_3S».
Содержимое эталонного запроса вида сведений должно быть вставлено в элемент MessagePrimaryContent.
Содержимое элемента RequestMetadata заполняется следующим образом:
Элемент | Значение | Комментарий |
clientID | Произвольный GUID | У каждого запроса, отправляемого в СМЭВ-адаптер, должен быть уникальный ClientID. Иначе будет возвращена ошибка, что такой запрос уже отправлялся в СМЭВ.
GUID можно сгенерировать online, например, здесь: https://guidgenerator.com/ |
createGroupIdentity/ FRGUServiceCode |
00000000000000000000 | Значения, используемые для генерации кода транзакции по умолчанию |
createGroupIdentity/ FRGUServiceDescription |
00000000000000000000 | |
createGroupIdentity/ FRGUServiceRecipient Description |
00000000000000000000 | |
testMessage | true | Обязательное значение для вызова эмулятора на стороне СМЭВ |
Пример сообщения ClientMessage:
<?xml version="1.0" encoding="UTF-8"?>
<tns:ClientMessage xsi:schemaLocation="urn://x-artefacts-smev-gov-ru/services/service-adapter/types smev-service-adapter-types.xsd" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn://x-artefacts-smev-gov-ru/services/service-adapter/types">
<tns:itSystem>MNEM01_3T</tns:itSystem>
<tns:RequestMessage>
<tns:RequestMetadata>
<tns:clientId>3e83e83a-6a23-4908-b0d2-e3ad08fe2584</tns:clientId>
<tns:createGroupIdentity>
<tns:FRGUServiceCode>00000000000000000000</tns:FRGUServiceCode>
<tns:FRGUServiceDescription>00000000000000000000</tns:FRGUServiceDescription>
<tns:FRGUServiceRecipientDescription>00000000000000000000</tns:FRGUServiceRecipientDescription>
</tns:createGroupIdentity>
<tns:testMessage>true</tns:testMessage>
</tns:RequestMetadata>
<tns:RequestContent>
<tns:content>
<tns:MessagePrimaryContent>
<!-- ЭТАЛОННЫЙ ЗАПРОС ВСТАВЛЯТЬ СЮДА -->
</tns:MessagePrimaryContent>
</tns:content>
</tns:RequestContent>
</tns:RequestMessage>
</tns:ClientMessage>
2.2. Размещение тестового запроса в каталоге OUT СМЭВ-адаптера
Местоположение каталога OUT зависит от версии СМЭВ-адаптера.
Для адаптера устаревшей версии этот каталог находится по адресу [каталог установки адаптера]/main/[мнемоника ИС]/OUT.
Для адаптера текущей версии этот каталог находится по адресу [каталог установки адаптера]/integration/[мнемоника ИС]/OUT.
Созданные файлы с сообщениями ClientMessage необходимо разместить в каталоге OUT.
2.3. Запуск СМЭВ-адаптера
Если в момент размещения ClientMessage в каталоге OUT СМЭВ-адаптер уже запущен, то эти сообщения будут отправлены в СМЭВ сразу же после их размещения в указанном каталоге.
В противном случае требуется запустить СМЭВ-адаптер.
Для этого необходимо открыть консоль и перейти в ней в каталог установки СМЭВ-адаптера.
Адаптер устаревшей версии запускается из консоли командой startup.bat (или sh startup.sh для CentOS).
Адаптер текущей версии запускается из консоли командой adapter.exe start (или sh adapter.sh start для CentOS).
2.4. Поиск СМЭВ-сообщений запроса и ответа
Отладочные сообщения в формате СМЭВ адаптер устаревшей версии размещает в своем каталоге установки, а адаптер текущей версии в каталоге [каталог установки адаптера]/messages.
Для поиска сообщений, соответствующих отправленному сообщению и полученному ответу, необходимо узнать, с каким messageID был отправлен запрос в СМЭВ.
Для этого нужно открыть найти сообщение в каталоге OUT/Sent по clientID:
Для поиска файлов по их содержимому необходимо включить соответствующий параметр в эксплорере Windows:
В найденном сообщении, в элементе MessageId, будет содержаться идентификатор сообщения, отправленного в СМЭВ:
По значению messageID необходимо найти сообщения в каталоге установки адаптера устаревшей версии (или в [каталог установки адаптера]/messages для текущей версии адаптера).
Должны быть найдены три сообщения:
- {мнемоника}-{GUID}-{SendRequestRequest}-{SUCCESS} – отправка в СМЭВ;
- {мнемоника}-{GUID}-{SendRequestResponse}-{SUCCESS} – подтверждение от СМЭВ;
- {мнемоника}-{GUID}-{GetResponseResponse}-{SUCCESS} – ответ от СМЭВ.
Для последнего сообщения (GetResponseResponse) необходимо найти сообщение с опросом очереди (GetResponseRequest). Оно имеет тот же GUID в наименовании файла, что и сообщение GetResponseResponse).
Сообщения Ack, о которых упоминается в Регламенте подключения ИС Участника к СМЭВ и в письмах от Ситуационного центра, СМЭВ-адаптером не фиксируются! Но СЦ, будучи информирован об использовании Потребителем СМЭВ-адаптера, не настаивает на включении Ack в результаты тестирования.
2.5. Взаимодействие с СЦ СМЭВ
Четыре найденных сообщения в формате СМЭВ необходимо упаковать в архив со значащим именем (например, «MNEM01_3T-ЕГРЮЛ-Request0.zip») и направить в Ситуационный центр СМЭВ в виде результатов тестирования.
Если тестировалось несколько эталонных запросов (а обычно так и происходит), то по четыре СМЭВ-сообщения для каждого эталонного запроса размещаются в отдельных каталогах, соответствующих эталонным запросам, например, «Request0», «Request1» и т.д.
Затем эти каталоги упаковываются в один архив, например, «MNEM01_3T-ЕГРЮЛ.zip», который отправляется в СЦ СМЭВ.
3. Тестирование в продуктивной среде СМЭВ
Тестирование в продуктивной среде СМЭВ должно производиться на сервере, имеющем доступ к продуктивной среде СМЭВ.
В СМЭВ-адаптере должен быть включен режим сохранения отладочных сообщений в формате СМЭВ (см. п. 1), после чего СМЭВ-адаптер должен быть перезапущен.
Формат сообщения ClientMessage отличается от формата, приведенного в п. 2.1, отсутствием элемента testMessage:

Содержимое запроса к виду сведений должно соответствовать реальному объекту или субъекту, сведения о котором необходимо получить.
Если в качестве запроса использовать один из эталонных запросов, то в ответ вернется, скорее всего, сообщение reject с признаком отсутствия данных в ИС Поставщика.
Дальнейший процесс ничем не отличается от тестирования ВС в тестовой среде СМЭВ, описанного в п. 2.
После окончания тестирования необходимо отключить режим сохранения отладочных сообщений в формате СМЭВ и перезапустить СМЭВ-адаптер.
______________________
Если у вас остались вопросы по данному материалу — пожалуйста, оставьте комментарий или свяжитесь с нами.
Также вы можете передать задачи организации СМЭВ-взаимодействия участникам нашего проекта. Качественная настройка СМЭВа и интеграция Адаптера с различными ИС — наш нехемульский долг.