Как тестировать gRPC
t.me/qa_chillout![](/file/7a417244cc6771318aa6a.png)
Два приложения в сети нуждаются в некотором посреднике, чтобы общаться друг с другом. На текущий момент существует несколько типов организации взаимодействия: REST, SOAP, RPC. О первых двух мы говорили ранее, а вот на последнем остановимся в этой статье и рассмотрим основные определения.
RPC (Remote Procedure Call) — удаленный вызов процедуры — класс технологий, позволяющих программам вызывать функции или процедуры в другом адресном пространстве. Обычно реализация RPC-технологии включает два компонента: сетевой протокол для обмена в режиме клиент-сервер и язык сериализации объектов.
gRPC (Remote Procedure Calls) — это система удалённого вызова процедур (RPC) с открытым исходным кодом, первоначально разработанная в Google в 2015 году. Другими словами, это мощный фреймворк для работы с удаленными вызовами процедур.
В gRPC клиентское приложение может напрямую вызывать метод серверного приложения на другом компьютере, как если бы это был локальный объект, что упрощает создание распределенных приложений и служб. Как и во многих системах RPC, gRPC основан на идее определения службы, указывающей методы, которые могут вызываться удаленно, с их параметрами и типами возвращаемых данных. На стороне сервера сервер реализует этот интерфейс и запускает сервер gRPC для обработки клиентских вызовов. На стороне клиента у клиента есть заглушка (на некоторых языках называемая просто клиентом), которая предоставляет те же методы, что и сервер.
Клиенты и серверы gRPC могут работать и взаимодействовать друг с другом в различных средах — от серверов внутри Google до вашего собственного рабочего стола — и могут быть написаны на любом из поддерживаемых gRPC языков (например, можно создать сервер gRPC на Java с клиентами на Go, Python или Ruby).
gRPC использует protoc
специальный плагин gRPC для генерации кода из вашего файла proto: вы получаете сгенерированный клиентский и серверный код gRPC, а также обычный код буфера протокола для заполнения, сериализации и извлечения ваших типов сообщений.
Как тестировать gRPC
grpcui
![](/file/3616166ab4d6cdaeb7036.png)
Программа c графическим интерфейсом для взаимодействия с gRPC. По сути как Postman, только для gRPC. Она написана на Go.
Давайте разберемся как настроить и запустить этот инструмент:
- Скачать и установить docker https://www.docker.com/products/docker-desktop
- Скачать и поставить go https://go.dev/doc/install
- Склонировать образ докера для grpcui https://github.com/fullstorydev/grpcui
- Загрузить образ докера, выполнив команду:
docker pull wongnai/grpcui
5. Запустить контейнер
docker run -eGRPCUI_SERVER={host:port} -p8080:8080 wongnai/grpcui
В результате выполнения этой команды получим урл на веб-интерфейс grpcui.
Пример выполнения команды:
docker run -eGRPCUI_SERVER=youla-grpc.devtest.ru:80 -p8080:8080 wongnai/grpcui gRPC Web UI available at http://0.0.0.0:8080/
По адресу http://0.0.0.0:8080 открывается web-интерфейс:
![](/file/3f0d26f7765771c6ce3fe.png)
Затем, в Request Form передаем необходимые параметры и их значения для запроса. Сначала выберем необходимый метод, в поле Method name — CreateLimit. Например, попробуем создать лимиты на публикацию товаров в определенной категории для конкретного пользователя:
![](/file/f6bb020ac2144900da037.png)
В Response Data получаем ответ с информацией по созданным лимитам:
![](/file/8df8ab61f11457926d171.png)
Обсудить статью, узнать больше можно в телеграм канале «Тестировщики нужны».