У меня есть конфигурация микросервисной архитектуры, и я хочу ее протестировать. У меня довольно сложная настройка с некоторыми синхронными HTTP-запросами и системой очереди сообщений (RabbitMQ).
Поскольку я использую сервер API другой компании, я не хочу рисковать перегрузить их сервер. Этот запрос представляет собой синхронный вызов, который запрашивает у поставщика API и возвращает довольно объемный ответ. Вместо этого я хочу иметь заглушку / макет, который будет возвращать аналогичный ответ и с аналогичной задержкой. Скажем, например, ответ этого сервера составляет 5 с и возвращает 2 КБ данных, затем я хочу ввести задержку 5 с и вернуть более или менее некоторые данные сравнительного размера (другими словами, мне нужна некоторая настройка) в том формате, который у меня есть готовый.
Чтобы добраться до этого момента, мне нужно (а) записать значительный ответ и отредактировать его. В частности, я хочу отредактировать его, чтобы отфильтровать некоторые конфиденциальные данные, а также увеличить его размер и сделать его больше, чтобы я мог подчеркнуть аспект пропускной способности системы. (b) Мне нужно оставаться как можно ближе к нативному решению, чтобы получить хорошее представление о времени отклика с этой стороны, а также я хочу как можно меньше накладных расходов при стресс-тестировании. Я смотрел некоторые решения, такие как WireMock, которые, если я правильно понимаю, настраивают поддельный сервер для тестирования. Это не сработает для меня, поскольку мне нужно использовать свои собственные серверы (которые основаны на TomCat) вместо того, чтобы оставаться как можно ближе к моей архитектуре.




Вы можете запустить WireMock внутри контейнера сервлетов (включая Tomcat). Вы теряете доступ к некоторым свойствам конфигурации, но это может не иметь значения в описанном вами случае.
Подробнее см. Здесь: http://wiremock.org/docs/getting-started/#Deploying-into-a-servlet-container
В качестве альтернативы вы можете использовать MockLab, который является полностью размещенной службой на основе WireMock.
Да, Wiremock звучит как хорошее предложение. Для моей команды wiremock отлично сработал.
Я бы предложил следующий подход: Установить Docker Разверните Wiremock в контейнере докеров с помощью docker-compose up. Пример docker-compose.yaml:
version: "3"
services:
wiremock:
image: rodolpheche/wiremock:latest
ports:
- "8181:8080"
volumes:
- ./__files/:/./home/wiremock/__files/
- ./mappings/:/./home/wiremock/mappings/
command:
- -verbose
- -global-response-templating
docker-compose up (в каталоге, в котором вы сохранили yaml, и принимаете запросы на доступ к файловой системе) тогда вы должны быть готовы к работе.
Ваш URL-адрес для Api должен указывать на http: // локальный: 8181
После этого сделайте запись с реальными данными (http: // локальный: 8181 / __ админ / рекордер)
И введите свой http для внешнего API во время записи.
Разделите тело в отдельный файл и поместите его в папку __files. Укажите на файл с "" bodyFileName "в файле запроса (сопоставления)
После отделения файла данных прототипа (__files) от файла запроса (сопоставления) вы можете использовать логику шаблонов, чтобы включить такие вещи, как вычисление даты (теперь + 1 день) в ответе и другие замечательные вещи, которые делают тестовые данные надежными и пригодными для повторного использования.
У меня есть несколько предложений. mobileera_wiremock_kb
Кроме того, после захвата некоторых сценариев внешнего API вы можете настроить общий макет для доступа других разработчиков.