2016-02-21 19 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")