Почему только первый вызов Api выполняется несколько раз?
Я должен проверить производительность запросов REST Api для различного количества значений "смещения". значения смещения меняются при каждом вызове. Лайк,
http://www.somurl/api/xyz;limit=20;offset=0
http://www.somurl/api/xyz;limit=20;offset=20
http://www.somurl/api/xyz;limit=20;offset=40
http://www.somurl/api/xyz;limit=20;offset=60
http://www.somurl/api/xyz;limit=20;offset=80
http://www.somurl/api/xyz;limit=20;offset=100
Приведенный ниже скрипт прекрасно работает с одним пользователем, при выполнении с несколькими пользователями он отправляет количество запросов на первый вызов, в то время как другие вызовы выполняются с одним запросом.
При отправке запросов возникла проблема, так как моя логика была неправильной, я так думаю. не могли бы вы взглянуть на это?
Вывод: при выполнении с 3 пользователями вывод был:
---- Requests ------------------------------------------------------------------
> Global (OK=8 KO=0 )
> Fetch data 0 (OK=3 KO=0 )
> Fetch data 20 (OK=1 KO=0 )
> Fetch data 60 (OK=2 KO=0 )
> Fetch data 80 (OK=1 KO=0 )
> Fetch data 100 (OK=1 KO=0 )
================================================================================
Вот код
import java.util.concurrent.ThreadLocalRandom
import scala.concurrent.duration._
import io.gatling.core.Predef._
import io.gatling.http.Predef._
class fetchData extends Simulation {
val url = System.getProperty("url", "Some url")
val username = System.getProperty("username", "ma")
val password = System.getProperty("password", "ma")
// Value of Limit for requests
val limit = Integer.getInteger("limit", 20).toInt
// Total number of offset values, Till howmany offset we need to execute (100/20 = 5 requests needs to execute)
val total = Integer.getInteger("total", 100).toInt
// Number of users
val userCount = Integer.getInteger("userCount", 3).toInt
var offsetValue = 0
val httpProtocol = http
.basicAuth(username, password)
.baseURL(url)
val scn = scenario("Get data")
.asLongAs(session => offsetValue <= total)
{
exec(http(session =>"""Fetch data """ + offsetValue)
.get(session =>"""/api/data;limit=""" + limit + """;offset=""" + offsetValue)
.check(jsonPath("$.limit").saveAs("offsetValue"))
)
.exec(session => {
offsetValue = offsetValue + limit
println("======================================================")
println("Offset value:: " + offsetValue)
println("======================================================")
session})
}
setUp(scn.inject(atOnceUsers(userCount))).protocols(httpProtocol)
}
Спасибо:-)