2016-02-21 3 views
0

Упрощен мой сценарий для подтверждения использования.exitBlockOnFail или сеанс очистки для управления потоком

Я сохраняю itemId в сеансе для использования в дальнейшем выполнении. Я добавил doIf, чтобы дальнейшее выполнение выполнялось, только если itemId присутствовал.

Пользователь будет продолжать цикл по сценарию до продолжительности в минутах.

Если в первом экземпляре itemId был сохранен в сеансе, но во втором выполнении POST-вызов не смог создать itemId. Я все еще получаю itemId в сеансе.

Мое ожидание состоит в том, чтобы иметь четкий сеанс для каждого цикла сценария для одного и того же пользователя. Я попытался session.reset, но я получаю эту ошибку. java.util.NoSuchElementException: key not found: timestamp.

Я могу использовать exitBlockOnFail() и сменить мой POST на неудачу, добавив чек, если itemId не присутствует. Это рекомендуемый подход?

Есть ли какой-либо вариант? Правильно ли я использую это?

val testScenario = scenario("Test scenario").during(durationInMinutes) { 
    exec(http("Create") 
      .post("/items") 
       .body(StringBody(session => write(Item(1, "Item name"))(DefaultFormats))).asJSON 
        .check(status.is(201), header("Location") 
         .transform(extractId(".*/items/(.*)".r, _)) 
          .saveAs("itemId"))) 
    .doIf(_.contains("itemId")) { 
     // do something with the itemId 
    } 
} 

setUp(testScenario.inject(atOnceUsers(10))) 
     .pauses(constantPauses) 
      .protocols(httpProtocol) 
       .assertions(global.failedRequests.count.is(0)) 

ответ

0

Для достижения этой цели в gatling нет ничего скрытого.

Я должен явно удалить атрибуты из сессии в конце каждого запуска, как это есть в конце сценария -

session.removeAll("itemId", "customerId") 
Смежные вопросы