Итак, я пытаюсь создать базовую нумерацию страниц в Гатлинге, но безуспешно.
Мой текущий сценарий выглядит следующим образом:
1) Первый вызов всегда является запросом POST, тело содержит индекс страницы 1 и размер страницы 50
{"pageIndex":1,"pageSize":50}
Язатем получим 50 объектов + общее количество объектов в среде:
"totalCount":232
Поскольку мне нужно перебрать все объекты в среде, мне нужно будет POST этот вызов 5 раз, каждый раз с обновленнымpageIndex.
Мой текущий (ошибочный) код выглядит следующим образом:
def getAndPaginate(jsonBody: String) = {
val pageSize = 50;
var totalCount: Int = 0
var currentPage: Int = 1
var totalPages: Int =0
exec(session => session.set("pageIndex", currentPage))
exec(http("Get page")
.post("/api")
.body(ElFileBody("json/" + jsonBody)).asJson
.check(jsonPath("$.result.objects[?(@.type == 'type')].id").findAll.saveAs("list")))
.check(jsonPath("$.result.totalCount").saveAs("totalCount"))
.exec(session => {
totalCount = session("totalCount").as[Int]
totalPages = Math.ceil(totalCount/pageSize).toInt
session})
.asLongAs(currentPage <= totalPages)
{
exec(http("Get assets action list")
.post("/api")
.body(ElFileBody("json/" + jsonBody)).asJson
.check(jsonPath("$.result.objects[?(@.type == 'type')].id").findAll.saveAs("list")))
currentPage = currentPage+1
exec(session => session.set("pageIndex", currentPage))
pause(Config.minDelayValue seconds, Config.maxDelayValue seconds)
}
}
В настоящее время значения нумерации страниц не присваиваются переменным, которые я создал в начале функции, если я создаю переменныена уровне объекта они назначаются, но таким образом, который я не понимаю. Например, результат Math.ceil (totalCount / pageSize) .toInt равен 4, тогда как должен быть 5. (Это 5, если я выполню его в ближайшем окне .... Я не получаю его). Я бы ожидал, что asLongAs (currentPage <= totalPages) будет повторяться 5 раз, но повторяется только дважды. </p>
Я пытался создать функцию в классе, а не в Object, потому что, насколько я понимаю, существует только один Object. (Чтобы запретить нескольким пользователям доступ к одной и той же переменной, я также запускал только одного пользователя с одинаковым результатом) Я, очевидно, здесь упускаю что-то базовое (новичок в Gatling и Scala), поэтому любая помощь будет высоко оценена :)