Дружим Gatling с асинхронным REST сервисом

Антон Якутович, @drakulavich

Дружим Gatling с асинхронным REST сервисом 🤝

Антон Якутович @drakulavich

Пример асинхронного REST сервиса

Цепочка запросов внутри группы

  .group(heisenBugGroupName) {
1    exec(sendTask)
2    .exec(checkStatus)
3    .exec(getTaskResult)
  }

Проверка статуса задачи

  val checkStatus = asLongAsDuring(unReady, 10 seconds)(
    pause(100 milliseconds)
      .exec(http("Checking task status")
      .get("${url}/${task_id}")
      .check(jsonPath("$.status").saveAs("status"))
    )
  )

Проверка статуса задачи

  val checkStatus = asLongAsDuring(unReady, 10 seconds)(
    pause(100 milliseconds)
      .exec(http("Checking task status")
      .get("${url}/${task_id}")
      .check(jsonPath("$.status").saveAs("status"))
    )
  )

Проверка статуса задачи

  val checkStatus = asLongAsDuring(unReady, 10 seconds)(
    pause(100 milliseconds)
      .exec(http("Checking task status")
      .get("${url}/${task_id}")
      .check(jsonPath("$.status").saveAs("status"))
    )
  )
Время выполнения группы запросов

👉

Стандартный отчёт Gatling

simulation.log

...
REQUEST	1	gr1	getResult	startTime1	endTime1	OK
GROUP	1	gr1	startTime2	endTime2	cumulated	OK
...
        
gatling-report распределения времени выполнения для групп

Группировка запросов

Лимит ожидания

gatling-report

презентация: bit.ly/async-gatling