Size: a a a

QA — Load & Performance

2021 June 25

ВС

Вячеслав Смирнов... in QA — Load & Performance
Вот тут найдите раздел "method / closure callback"
https://mock-server.com/mock_server/creating_expectations.html#button_response_method_or_closure_callback

Пример кода там такой:

new MockServerClient("localhost", 1080)
   .when(
       request()
           .withPath("/some/path")
   )
   .respond(
       request -> {
           if (request.getMethod().getValue().equals("POST")) {

               //будет что-то вида, это псевдокод:
               thread.sleep(request.getHeader("X-Mock-Duration).getValue());

               return response()
                   .withStatusCode(ACCEPTED_202.code())
                   .withHeaders(
                       header("x-object-callback", "test_object_callback_header")
                   )
                   .withBody("an_object_callback_response");
           } else {
               return notFoundResponse();
           }
       }
   );

И вот возьмите параметр заголовка перед ответом и используйте его для ThreadSleep
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
будет что-то вида
thread.sleep(request.getHeader("X-Mock-Duration).getValue())
источник

VG

Viktor Ganeles in QA — Load & Performance
Если такого заголовка не будет - эксепшн не свалится?
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
не знаю
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Знаю, что заглушка в JMeter использует заголовки для задержки. И этим удобно пользоваться
https://jmeter.apache.org/usermanual/component_reference.html#HTTP_Mirror_Server
X-Sleep
источник

A

Alexander in QA — Load & Performance
получается, надо добавить заголовок в запрос от тестируемого сервиса к моку?
источник

KY

Kirill Yurkov in QA — Load & Performance
да можно менять на лету, можно сделать временно недоступной, по мониторингу - не прорабатывали вопрос
источник

KY

Kirill Yurkov in QA — Load & Performance
ты можешь из самого скрипта менять заглушку на ходу, она же простым хттп меняется.
источник

A

Alexander in QA — Load & Performance
я просто сейчас прикидываю, писать свою моку с блекджеком и задержками или посмотреть на готовые фреймворки\инструменты
источник

A

Alexander in QA — Load & Performance
а такая замена, в случае например 150 рпс стабильной нагрузки, не порушит логику уже отправленных в нее запросов?
источник

KY

Kirill Yurkov in QA — Load & Performance
мы взяли готовый потому что это быстро, предварительно побенчмаркали - результаты удовлетворительные в большинстве случаев
источник

A

Alexander in QA — Load & Performance
какой результат получили по бенчмарку?
источник

KY

Kirill Yurkov in QA — Load & Performance
проверял на меньшей интенсивности было нормально, отхендленный запрос не обрушится если обработчик поменяется, потому что компиляция уже произведна и внутри треда есть нужный контекст
источник

KY

Kirill Yurkov in QA — Load & Performance
2-4к рпс в зависимости от типа запросов. сложный жс код внутри работает хуже, дает задержку в 500 мс, но это большие тела и много логики, нас устроило
источник

A

Alexander in QA — Load & Performance
звучит хорошо
источник

KY

Kirill Yurkov in QA — Load & Performance
дока правда отстой, нет поиска. но попробовать - реально быстро, плюс в докере можно, а можно в виде жар, Если хочется кастом в нее можно подсовывать свои жарники
источник

A

Alexander in QA — Load & Performance
спасибо, буду смотреть
источник

KY

Kirill Yurkov in QA — Load & Performance
а ты ее сам использовал в качестве чего? этим можно внутрь жметра пробросить пропертю например?
источник

A

Alexander in QA — Load & Performance
я тут поиском поискал, разные решения рекомендовали, пытаюсь их сравнить в голове
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Это как-то сложно. Надо менять из JMeter думаю.

Надо сделать глобальный объект, и в него сохранять параметры приходящие. И читать этот параметр, использовать для thread,sleep
источник