Почему только первый вызов 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)
    }

Спасибо:-)

0 ответов

Другие вопросы по тегам