2015-08-25 2 views
1

Я недавно начал использовать gatling для тестирования производительности и нагрузки. Согласно их документации есть несколько способов отправки одновременных запросов, например:Тесты Gatling увеличивают количество постоянных пользователей в секунду после шаблона

rampUsersPerSec(1) to(100) during(1 minute), который должен увеличивать количество пользователей в секунду линейно, однако он имеет много случайности. То, что я хотел бы сделать, - отправить постоянное количество запросов в секунду, затем приостановить, затем увеличить число пользователей на один и повторить. Что-то вдоль линий:

import io.gatling.core.Predef._ 
import io.gatling.http.Predef._ 

class PricesSimulation extends Simulation { 
    // ... 
    // ... 

    object GetPrices { 
    // ... 
    } 

    val httpConf = http.baseURL("https://...") 
    val scn = scenario("scenario1").exec(...) 

    setUp(
    scn.inject(
     constantUsersPerSec(1) during(5 seconds), 
     nothingFor(5 seconds), 
     constantUsersPerSec(2) during(10 seconds), 
     nothingFor(5 seconds), 
     constantUsersPerSec(3) during(10 seconds), 
     nothingFor(5 seconds), 
     constantUsersPerSec(4) during(10 seconds), 
     nothingFor(5 seconds), 
     constantUsersPerSec(5) during(10 seconds) 
     // ... 
     constantUsersPerSec(100) during(10 seconds) 
    ).protocols(httpConf) 
) 
} 

Поэтому в основном я пытаюсь свести все в setUp к для цикла, где я увеличиваю ARG из constantUsersPerSec одного (или эквивалент). Однако мои знания scala очень ограничены, и я неудачно потерпел неудачу ...

ответ

0

Попробуйте это.

val steps = (constantUsersPerSec(1) during(5 seconds)) :: (2 to 100).toList.flatMap(i => 
    List(
    nothingFor(5 seconds), 
    constantUsersPerSec(i) during(10 seconds) 
) 
) 

setUp(steps: _*).protocols(httpConf) 
Смежные вопросы