Вопрос по http-caching, java, wiremock – Можно ли одновременно использовать воспроизведение и запись в WireMock?

5

У меня есть приложение, которое подключается к внешнему стороннему API, и в последнее время тестовый экземпляр API не был особенно надежным. Это останавливает прогресс в разработке и превращает наши конвейеры сборки в красный, поэтому я бы хотел добавить прокси-сервер записи HTTP, чтобы остановить это.

у меня былоWireMock рекомендовал, и попробовав егофункции записи и воспроизведениякажется, это очень хорошо - это в значительной степени сработало из коробки. Мы просто изменим настроенный URL для внешней службы, а затем запишем так:

java -jar wiremock-standalone-2.3.1.jar \
    --port 8080 \
    --proxy-all="https://test-api.example.com/" \
    --record-mappings \
    --verbose

Это создает папки кэша в текущем рабочем каталоге, а затем его можно переключить в режим воспроизведения, убив рекордер и переключившись на воспроизведение:

java -jar wiremock-standalone-2.3.1.jar \
    --port 8080 \
    --verbose

Однако, чтобы использовать это на практике, мне нужно настроить экземпляр моего приложения, работающего через тестовый регрессионный пакет, для записи большого количества использования API, и запускать его, скажем, один раз в день. Затем мне нужно будет остановить рекордер и скопировать файлы кэша в процесс воспроизведения, а затем перезапустить процесс воспроизведения.

Это, вероятно, сработает, но мне кажется, что здесь много движущихся частей, и в идеале я бы хотел одновременно играть и записывать. Это позволит автоматически обновлять кэш, если потребуется новый вызов API (из-за естественных изменений проекта), но будет воспроизводиться по умолчанию, если найдено совпадение.

Это возможно? Я не программист на Java, но предположим, что он может быть доступен, если написать плагин для WireMock. Было бы замечательно, если бы это можно было сделать на консоли, но формулировка руководства указывает на то, что сопровождающие рассматривают игру и запись как отдельные вещи.

Я задавался вопросом, могу ли я перейти нашут, который выглядел какэто может поддержать этооднако получаетсявоспроизведение и запись здесь тоже отдельные режимы, В любом случае, мне нравится, как легко начать работу с WireMock, поэтому хотелось бы придерживаться его, если это возможно.

Ваш Ответ

1   ответ
5

Тем не менее, WireMock не будет делать то, о чем вы сейчас просите:

1) Вы можете использовать--proxy-all параметр, а не--record-mappings при воспроизведении. Это приведет к тому, что любой запрос, не соответствующий существующему сопоставлению заглушки (записанный или иным образом), будет проксирован до действительной службы.

2) Обходной путь, который приблизил бы вас к тому, что вы хотите, это отправитьPOST в/__admin/mappings/reset конечная точка после того, как вы собрали несколько новых записанных сопоставлений. Это приводит к сканированию файловой системы и загрузке всех отображений.

Отлично, я ожидаю, что это может быть вообще полезно. halfer
Спасибо, Том, это очень полезно. Сейчас я нахожусь в стадии расследования, но я укажу коллегам на это для нашей реализации. Я имею в виду контейнер Docker, который предлагает рекордер, который обновляет кэш API (выполняется один раз в день), а затем режим воспроизведения для кеширования реальной вещи. Совет по перезапуску полезен - я думал об использовании Supervisord здесь с автоматическим перезапуском, но ваш подход кажется более изящным. halfer
Не волнуйтесь. Я подумываю о переписывании рекордера в ближайшее время, поэтому буду иметь в виду этот вариант использования. Tom
Том, если у тебя есть минутка, ты бы хотел взятьпосмотрите на этот новый вопрос? Я строю систему, которая требует WM для воспроизведения с нескольких сайтов, и в последнее время я боюсь, что это не будет сделано без существенных изменений. Спасибо! halfer

Похожие вопросы