Каков наилучший способ определить поток пользователя с помощью ChainBuilder? - PullRequest
1 голос
/ 22 сентября 2019

Я новичок в Scala и Gatling и пытаюсь выяснить, как лучше всего определить пользовательскую историю и передать ее ChainBuilder в сценарий Gatling.

Когда я говорю «Пользовательская история» В моем случае я имею в виду поток, который будет состоять из входа в систему, множества различных вызовов, а затем цикл по другому списку вызовов на весь период теста.

Я создал следующую функцию для создания сценария:

 def createScenario(name: String, feed: FeederBuilder, chains: ChainBuilder*): ScenarioBuilder = {
    scenario(name).feed(feed).forever() {
      exec(chains).pause(Config.pauseBetweenRequests)
    }
  }

И вот как я выполняю эту функцию:

val scenario = createScenario(Config.testName, feeder.random,
  setSessionParams(PARAM1, Config.param1),
  setSessionParams(PARAM2, Config.param2),
  login, 
  executeSomeCall1, 
  executeSomeCall2, 
  executeSomeCall3, 
  executeSomeCall4, 
  executeSomeCall5, 
  executeSomeCall6, 
  executeSomeCall7, 
  executeSomeCall8, 
  executeSomeCall9,   
  )

Вот пример того, чтоФункция executeSomeCall выглядит следующим образом:

  def executeSomeCall = {
    exec(http("ET Call Home")
      .post("/et/call/home")
      .body(ElFileBody("/redFingerBody.json")).asJson
      .check(status is 200))
  }

Мой первый вопрос:

Это правильный способ определить цепочку вызовов покоя и передать ее в сценарий?Я спрашиваю об этом, потому что когда я определяю такой поток, я вижу, что по какой-то причине не все мои вызовы REST фактически выполняются.Как ни странно, если я меняю порядок вызовов, он работает и все функции вызываются.(Так что я определенно делаю что-то не так)

Мой второй вопрос:

Как я могу определить бесконечный цикл в этом потоке?(Бесконечно, пока выполняется тест)

Так, например, я бы хотел, чтобы вышеописанный поток запустился, и когда он достигнет executeSomeCall8, он будет затем выполнять циклы executeSomeCall8 и executeSomeCall9 на протяжении всей продолжительности теста.,

1 Ответ

2 голосов
/ 23 сентября 2019

Я не понимаю, почему ваши вызовы не будут выполняться, однако способ построения сценария не такой гибкий.Вы можете использовать цепочку, не требуя метода createScenario ().

Это приводит к вашему второму вопросу, когда у вас есть сценарий, связанный как:

val scn = scenario("something")
...
.exec(someCall7)
.forever(){
exec(sommeCall8)
.exec(someCall9)
}
...

, где someCallN в моем случае выглядитнапример:

val someCall = http("request name")
.get("/some/uri")
...

Примечание: foerever () является лишь примером, вы можете использовать другие операторы цикла, которые соответствуют вашим потребностям.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...