-
Notifications
You must be signed in to change notification settings - Fork 55
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
486 / Запуск тестов по websoket #496
Conversation
Caution Review failedThe pull request is closed. WalkthroughОбновление вводит новую функциональность для управления WebSocket-соединениями, специально разработанную для тестовой среды. Добавлен модуль, который экспортирует процедуры для подключения к серверу, уведомлений о отчетах и обработки сообщений. Реализовано множество обработчиков событий соединения, а также процедуры для запуска тестов и обработки результатов. Кроме того, внесены изменения в конфигурационные файлы и другие модули, что расширяет возможности взаимодействия между компонентами системы. Changes
Assessment against linked issues
Possibly related PRs
Suggested labels
Poem
📜 Recent review detailsConfiguration used: CodeRabbit UI ⛔ Files ignored due to path filters (4)
📒 Files selected for processing (8)
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 6
🧹 Nitpick comments (13)
exts/yaxunit/src/CommonModules/ЮТВнешнийЗапускТестовСлужебныйКлиент/Module.bsl (9)
1-18
: Заголовок лицензии корректен, но обращение к копирайту требует проверки.Проверьте, соответствует ли копирайт фактическому периоду (2021-2025) всем требованиям проекта и не вызывает ли конфликт с иными файлами.
63-84
: Реализация ожидания сообщения до 8.3.27 и планировщика запросов.
- Использование
ПодключитьОбработчикОжидания
обеспечивает периодический опрос.- Проверьте, нет ли избыточного нагружения системы при частом опросе (каждый 1 сек/0.2 сек). Это может повлиять на производительность.
122-129
: Обработчик открытия соединения.
- Отправка приветственного сообщения с версией протокола выглядит уместно.
- Желательно логировать также адрес сервера для дополнительной отладки.
130-142
: Обработчик получения сообщения.
- Запуск теста на основе ключа типа сообщения
runTest
непосредственно в обработчике – хорошая идея, но возможно вынести в отдельную процедуру для лучшей масштабируемости.- Рекомендуется предусмотреть обработку любых неизвестных типов сообщений.
148-152
: Обработчик закрытия соединения.
- Определитесь, нужно ли пытаться восстановить соединение после закрытия или уведомлять других компонентов о том, что связь потеряна.
154-163
: Отправка сообщения по соединению.
- Присутствует корректная обработка исключений, что важно для надёжности.
- При неоднократных ошибках отправки стоит рассмотреть более детальный механизм переотправки.
213-218
: Оповещение для пользователя + логирование.
- Метод
ПоказатьОповещениеПользователя
и логирование делают взаимодействие более прозрачным.- Следует учитывать, что частые всплывающие уведомления могут мешать работе, особенно при тестировании.
226-234
: Функция получения текущего соединения.
- Дополнительная проверка на
Неопределено
повышает устойчивость.- При необходимости обеспечить потоко-безопасность (если это актуально), стоит защитить доступ к общей переменной.
236-249
: Обработка ошибки соединения.
- Счётчик ограничивает количество попыток. После 5 ошибок соединение сбрасывается.
- Возможно, следует логировать текст ошибки или причины. Это упростит анализ.
exts/yaxunit/src/Configuration/ManagedApplicationModule.bsl (2)
3-3
: Обновление копирайта на 2025 год.Убедитесь, что во всех файлах репозитория отражён единый период копирайта, чтобы избежать путаницы.
22-22
: Добавление глобальной переменной для хранения параметров подключения.
- Переменная отмечена как
Экспорт
, проверьте, действительно ли нужен экспорт или можно ограничиться локальной областью видимости.- Рекомендуется добавить явное описание (комментарий) назначения переменной.
exts/yaxunit/src/CommonModules/ЮТОтчетJUnitСлужебный/Module.bsl (1)
410-490
: Добавление функции для формирования описания отдельного теста.Функция
ОписаниеТеста
корректно формирует структурированное описание теста, включая обработку различных типов ошибок и их детальное описание.Рекомендации по улучшению:
- Добавить документацию к функциям с описанием параметров и возвращаемых значений
- Рассмотреть возможность разделения функции на более мелкие для улучшения читаемости
// Формирует описание теста для отчета // // Параметры: // РезультатТеста - Структура - Результат выполнения теста // Статусы - Структура - Статусы выполнения тестов // // Возвращаемое значение: // Структура - Описание тестаexts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl (1)
156-156
: Дополните документацию параметра rpc.Рекомендуется расширить документацию параметра
rpc
, добавив описание полей структуры:
- port - номер порта для WebSocket-соединения
- enable - признак включения внешнего запуска
- key - ключ авторизации
- transport - тип транспорта (ws)
-// * rpc - Структура - Параметры внешнего запуска тестов. Параметры запуска тестов из EDT без перезапуска предприятия. +// * rpc - Структура - Параметры внешнего запуска тестов. Параметры запуска тестов из EDT без перезапуска предприятия: +// * port - Число - Номер порта для WebSocket-соединения +// * enable - Булево - Признак включения внешнего запуска +// * key - Строка - Ключ авторизации +// * transport - Строка - Тип транспорта (ws)Also applies to: 173-173
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
exts/yaxunit/src/CommonTemplates/ЮТWebSocketAddIn/Template.bin
is excluded by!**/*.bin
📒 Files selected for processing (18)
exts/yaxunit/src/CommonModules/ЮТВнешнийЗапускТестовСлужебныйКлиент/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТВнешнийЗапускТестовСлужебныйКлиент/ЮТВнешнийЗапускТестовСлужебныйКлиент.mdo
(1 hunks)exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйВызовСервера/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйГлобальный/Module.bsl
(2 hunks)exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиент/Module.bsl
(3 hunks)exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl
(1 hunks)exts/yaxunit/src/CommonModules/ЮТКомпоненты/Module.bsl
(2 hunks)exts/yaxunit/src/CommonModules/ЮТКомпонентыСлужебныйВызовСервера/Module.bsl
(3 hunks)exts/yaxunit/src/CommonModules/ЮТКомпонентыСлужебныйКлиент/Module.bsl
(2 hunks)exts/yaxunit/src/CommonModules/ЮТОтчетJUnitСлужебный/Module.bsl
(2 hunks)exts/yaxunit/src/CommonModules/ЮТОтчетСлужебный/Module.bsl
(3 hunks)exts/yaxunit/src/CommonModules/ЮТПараметрыЗапускаСлужебный/Module.bsl
(2 hunks)exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl
(3 hunks)exts/yaxunit/src/CommonTemplates/ЮТWebSocketAddIn/ЮТWebSocketAddIn.mdo
(1 hunks)exts/yaxunit/src/Configuration/Configuration.mdo
(2 hunks)exts/yaxunit/src/Configuration/ManagedApplicationModule.bsl
(3 hunks)exts/yaxunit/src/DataProcessors/ЮТЮнитТесты/Forms/Основная/Module.bsl
(2 hunks)tests/src/CommonModules/Обр_ЮТHTTPОтвет/Module.bsl
(0 hunks)
💤 Files with no reviewable changes (1)
- tests/src/CommonModules/Обр_ЮТHTTPОтвет/Module.bsl
✅ Files skipped from review due to trivial changes (3)
- exts/yaxunit/src/CommonTemplates/ЮТWebSocketAddIn/ЮТWebSocketAddIn.mdo
- exts/yaxunit/src/CommonModules/ЮТПараметрыЗапускаСлужебный/Module.bsl
- exts/yaxunit/src/CommonModules/ЮТВнешнийЗапускТестовСлужебныйКлиент/ЮТВнешнийЗапускТестовСлужебныйКлиент.mdo
👮 Files not reviewed due to content moderation or server errors (4)
- exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйВызовСервера/Module.bsl
- exts/yaxunit/src/CommonModules/ЮТКомпонентыСлужебныйВызовСервера/Module.bsl
- exts/yaxunit/src/CommonModules/ЮТКомпоненты/Module.bsl
- exts/yaxunit/src/CommonModules/ЮТОтчетСлужебный/Module.bsl
🔇 Additional comments (16)
exts/yaxunit/src/CommonModules/ЮТВнешнийЗапускТестовСлужебныйКлиент/Module.bsl (7)
19-49
: Проверка корректности обработки параметров подключения.
- Валидация порта и ключа клиента выглядит уместной.
- Сообщение об ошибке при неизвестном транспорте помогает быстро понять источник проблемы.
- Рекомендуется документировать, что поддерживается только
ws
, чтобы не было вопросов по другим протоколам.
51-62
: Логика отправки оповещения после сохранения отчёта выглядит правильно.
- Метод привязан к глобальному хранилищу соединения, что упрощает доступ.
- При отсутствии соединения функция корректно завершается без ошибок.
107-120
: Подключение для платформы 8.3.27 и выше.
- Использование обработчиков (
ОбработчикиWebSocketКлиентСоединения
) выглядит корректно.- Убедитесь, что
МенеджерСоединений
будет доступен в среде, где запускается это решение (проверка установки веб-сокета).
165-169
: Формирование структуры сообщения.
- Аргумент
Идентификатор
по умолчанию = 0. Убедитесь, не требуется ли генерация уникального идентификатора для многоэтапных транзакций.
171-187
: Процедура запуска теста.
- Код формирования временного модуля выглядит логичным.
- Убедитесь, что
client
,ordinaryClient
иserver
заполнены корректно, иначе тесты могут выполняться не в той конфигурации.
197-211
: Функция формирования отчёта.
- Цикл добавляет сформированные структуры отчётов для каждого набора тестов.
- Рекомендуется учесть сценарий, если
Результат
окажется пустым или содержит нестандартный формат.
220-224
: Сохранение соединения во внешнюю структуру.
- Код краткий и понятный.
- Убедитесь, что не происходит перезаписи другого активного соединения по ошибке.
exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйГлобальный/Module.bsl (1)
27-32
: Новая процедура периодического опроса WebSocket-соединения.
- Вызывается метод
ПолучитьСообщениеДо8_3_27()
, что важно для обратной совместимости.- Убедитесь, что при платформе 8.3.27+ этот метод всё ещё актуален или вызывает соответствующую логику.
exts/yaxunit/src/Configuration/ManagedApplicationModule.bsl (2)
46-47
: Перенос старта логики в общую процедуруЮТПриНачалеРаботыСистемы
.
- Правильно использовать централизованное место для инициализации, упрощает дальнейшее сопровождение.
- Возможно, стоит добавить проверки среды или параметров перед подключением.
51-51
: Изменение аннотации на&После("ОбработкаОтображенияОшибки")
.
- Локализация аннотации может повлиять на совместимость с другими расширениями. Убедитесь, что во всех местах кода стилистика одинакова.
exts/yaxunit/src/CommonModules/ЮТКомпонентыСлужебныйКлиент/Module.bsl (1)
26-26
: Добавление компонента WebSocket.Добавление компонента WebSocket соответствует требованиям PR для реализации внешнего запуска тестов через WebSocket.
exts/yaxunit/src/Configuration/Configuration.mdo (1)
60-60
: Регистрация компонентов WebSocket в конфигурации.Добавление общего шаблона
ЮТWebSocketAddIn
и общего модуляЮТВнешнийЗапускТестовСлужебныйКлиент
соответствует архитектуре решения для поддержки WebSocket функциональности.Also applies to: 71-71
exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl (1)
375-375
: Добавление параметра безопасности при создании внешней обработки.Добавление параметра
Ложь
в вызовВнешниеОбработки.Создать
улучшает безопасность при создании внешних обработок.exts/yaxunit/src/CommonModules/ЮТОтчетJUnitСлужебный/Module.bsl (1)
374-408
: Добавление функции для формирования описания набора тестов.Функция
ОписаниеНабора
корректно формирует структурированное описание набора тестов, включая все необходимые метрики (количество тестов, ошибок, пропущенных тестов и т.д.).exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиент/Module.bsl (2)
33-33
: Обработчик добавлен в правильное место цепочки.Обработчик
ОбработчикПодключитсяКСерверуВнешнегоУправления
добавлен после подключения компонентов и перед инициализацией.
368-379
: Обработчик реализован корректно.Обработчик проверяет наличие параметров подключения и флага enable перед вызовом метода подключения к серверу.
Проверим обработку ошибок подключения:
✅ Verification successful
Обработка ошибок реализована корректно
Механизм подключения к серверу включает:
- Валидацию параметров подключения с информативными сообщениями об ошибках
- Обработку ошибок соединения через try-catch
- Механизм переподключения с ограничением попыток
- Обработчики событий для ошибок WebSocket
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Check error handling in WebSocket connection # Expected: Find error handling code for connection failures rg -A 5 'ПодключитсяКСерверу'Length of output: 3799
Script:
#!/bin/bash # Search for try-catch blocks around WebSocket operations rg -U "Попытка.*?WebSocket.*?Исключение" -A 10Length of output: 48
Script:
#!/bin/bash # Get full implementation of connection method ast-grep --pattern 'Процедура ПодключитсяКСерверу($$$) $$$'Length of output: 61
Script:
#!/bin/bash # Get full content of files containing WebSocket connection implementation cat "exts/yaxunit/src/DataProcessors/ЮТЮнитТесты/Forms/Основная/Module.bsl" cat "exts/yaxunit/src/CommonModules/ЮТВнешнийЗапускТестовСлужебныйКлиент/Module.bsl"Length of output: 43210
exts/yaxunit/src/CommonModules/ЮТВнешнийЗапускТестовСлужебныйКлиент/Module.bsl
Outdated
Show resolved
Hide resolved
exts/yaxunit/src/CommonModules/ЮТВнешнийЗапускТестовСлужебныйКлиент/Module.bsl
Outdated
Show resolved
Hide resolved
exts/yaxunit/src/CommonModules/ЮТВнешнийЗапускТестовСлужебныйКлиент/Module.bsl
Outdated
Show resolved
Hide resolved
exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиент/Module.bsl
Outdated
Show resolved
Hide resolved
exts/yaxunit/src/DataProcessors/ЮТЮнитТесты/Forms/Основная/Module.bsl
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SonarQube Quality Gate failed! 
0 Bugs
0 Vulnerabilities
9 Code Smells
No data Coverage
5.15% Duplication
|
||
ЮТПараметрыПодключенияКВнешнемуСервису.СчетчикОшибок = ЮТПараметрыПодключенияКВнешнемуСервису.СчетчикОшибок + 1; | ||
|
||
Если Критичная Или ЮТПараметрыПодключенияКВнешнемуСервису.СчетчикОшибок > 5 Тогда |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔗Создайте константу с понятным названием, присвойте ей значение "5" и используйте эту константу вместо магического числа.
badpractice
parameters
Why is this an issue?
КонецЕсли; | ||
|
||
Попытка | ||
Ответ = Соединение.ПолучитьСообщение(100); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔗Создайте константу с понятным названием, присвойте ей значение "100" и используйте эту константу вместо магического числа.
badpractice
parameters
Why is this an issue?
ЗапомнитьСоединение(Соединение); | ||
|
||
ПодключениеКСерверуОбработчикОткрытияСоединения(Соединение); | ||
ПодключитьОбработчикОжидания("ЮТОпросВебСокетСоединения", 0.2, Истина); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔗Создайте константу с понятным названием, присвойте ей значение "0.2" и используйте эту константу вместо магического числа.
badpractice
parameters
Why is this an issue?
Процедура ПодключениеВебСокет8_3_27(АдресСервера) | ||
|
||
//@skip-check bsl-legacy-check-string-literal | ||
Обработчики = Новый (Тип("ОбработчикиWebSocketКлиентСоединения"), ЮТКоллекции.ЗначениеВМассиве("ПодключениеКСерверуОбработчикОткрытияСоединения", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔗Уберите инициализацию параметров конструктора вложенными методами
standard
badpractice
brainoverload
parameters
Why is this an issue?
@@ -363,6 +364,19 @@ | |||
|
|||
КонецПроцедуры | |||
|
|||
//@skip-check bsl-variable-name-invalid | |||
//@skip-check doc-comment-parameter-section | |||
Процедура ОбработчикПодключитсяКСерверуВнешнегоУправления(_, ПараметрыИсполнения) Экспорт |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔗Необходимо добавить описание всех параметров метода
standard
badpractice
Why is this an issue?
|
||
КонецФункции | ||
|
||
Функция ОписаниеТеста(РезультатТеста, Статусы) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔗Уменьшите когнитивную сложность "ОписаниеТеста" с 28 до 15
brainoverload
parameters
Why is this an issue?
ЗаписатьЗначения = Истина; | ||
ЗаписатьСтек = Истина; | ||
ИначеЕсли Статус = Статусы.Пропущен Тогда | ||
ИмяУзла = "skipped"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔗Синтаксическая конструкция "Если...Тогда...ИначеЕсли..." содержит повторяющиеся блоки кода
suspicious
Why is this an issue?
@@ -19,6 +19,7 @@ | |||
#Область ОписаниеПеременных | |||
|
|||
Перем ЮТДанныеКонтекста Экспорт; | |||
Перем ЮТПараметрыПодключенияКВнешнемуСервису Экспорт; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@@ -19,6 +19,7 @@ | |||
#Область ОписаниеПеременных | |||
|
|||
Перем ЮТДанныеКонтекста Экспорт; | |||
Перем ЮТПараметрыПодключенияКВнешнемуСервису Экспорт; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔗Не рекомендуется использовать экспортные переменные. Это может стать источником трудновоспроизводимых ошибок
standard
design
unpredictable
Why is this an issue?
Описание изменений
Реализован механизм запуска тестов "снаружи" используя web socket
Close #486
Summary by CodeRabbit
Примечания к выпуску
Новые возможности
Улучшения
Исправления