Комментарии 9
Спасибо за статью, интересный код. Но я бы хотела прояснить вопрос с тестированием.
Что конкретно тут тестируется? Соединение с Kafka?

Если я использую Kafka при тестировании на проекте, то я либо получаю сообщения из нее и проверяю из валидность. Или наоборот, я отправляю сообщения в Kafka, чем запускаю работу какой-либо функциональности, которая ее ждет.
Т.е. не соединение с Kafka основная цель тестирования, а сообщения и их валидность.

С уважением, Ирина
Очень характерный вопрос (мне кажется, и к предудущему посту автора это же самое относится). Написан какой-то код, его довольно много, но при этом автор вообще не рассказал, что же конкретно он тестирует. В коде ровно один assert. Ну т.е. все что написано — ради одной проверки, не многовато-ли кода ради такого?

Если же это какой-то тестовый фреймворк, который позволит другие тесты писать проще и быстрее — то не следовало бы сначала рассказать, в чем задумка?

А если же речь о том, что интеграция с кафкой производится через промежуточный REST, то об этом тоже в общем ничего не написано. У кафки и так достаточно несложный API, зачем и для чего REST — не очевидно.
Цель — это показать возможность написания тестов, в которых используется не только kafka, но и прикладной код, который работает на другом уровне.
Согласен, что описание примера получилось скомканным (постараюсь добавить больше деталей).
Попробую дополнить. Пусть будет сервис со своим API, внутри сервиса есть обращение, к другим сервисам, к примеру, kafka и взаимодействие с этими сервисами, нетривиальное. Требуется написать для такого сервиса интеграционные тесты.

Интеграцио́нное тести́рование — одна из фаз тестирования ПО, при которой отдельные модули объединяются и тестируются в группе.


Я не совсем понял из статьи, какие модули объединяются для тестирования в группе?
Здесь имеется ввиду проверка взаимодействия между сущностями в разных слоях.
Т.е. проверяется транспортная функция REST API, что оно вообще работает?
Когда сервисы интегрируются при помощи Kafka очень удобно использовать REST API, как универсальный и стандартный способ обмена сообщениями.

Я как-то на первом предложении потерялся. Какая тут связь?
Идея простая.
Есть клиенты/сервисы, которые работают с REST API. Их задача — отправить сообщение другим сервисам и дождаться ответа. Для таких сервисов нужно и реализовать подобное решение т.к. работать с kafka они не умеют.
Где это может пригодиться?
К примеру, есть модели машинного обучения, которые работают на базе Spark Streaming. Эти модели по входным данным в виде вектора возвращают результат в виде скаляра. Данные извлекаются из одного topic, а результаты записываются в другой. И есть клиенты, которые должны получать результаты моделей и могут это делать только через REST API. Тогда реализуется такой сервис. С 3-я методами. Отправить запрос на расчет с данными и вернуть ключ запроса. Получить по ключу статус расчета. Получить по ключу результаты расчета.
Конечно, это можно сделать, к примеру, на websocket-х, но это уже за пределами этой статьи.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.