2016-10-14 5 views
3

Я хочу добавить условие ниже в http-запрос, который дает мне статус KO, если это условие соответствует. Мое состояние: WorkflowFailed = True OR count > 8, тогда статус не удался.Как добавить условие count> 8 в сценарий Gatling?

Для одного из вышеуказанных условий WorkflowFailed = True Я добавил код ниже, и он отлично работает, но для count > 8 он не работает.

.check(jsonPath("$.failed").transform(status => status == "true").is(false)) 

Я также пытался с этим кодом, но не работал и выбрасывал ошибку.

.check(jsonPath("$.failed").transform(status => status == "true" || count > 8).is(false)) 

19: 00: 52,143 [ERROR] igcZincCompiler $ - D: ... \ Гатлинга-чарты-Highcharts-расслоением-2.1.7 \ пользователем файл S \ Моделирование \ LaunchResources. scala: 83: value> не является членом java.util.concurrent.atomic.AtomicInteger 19: 00: 52.144 [ERROR] igcZincCompiler $ -
.check (jsonPath ("$. failed"). transform (status => status == "true" || count> 8) .is (false)) 19: 00: 52.144 [ERROR] igcZincCompiler $ - ^ 19: 00: 52.222 [ERROR] igcZincCompiler $ - одна ошибка найдено

Вот код,

class LaunchResources extends Simulation { 

    val scenarioRepeatCount = Integer.getInteger("scenarioRepeatCount", 1).toInt 
    val userCount = Integer.getInteger("userCount", 1).toInt 
    val UUID = System.getProperty("UUID", "24d0e03") 
    val username = System.getProperty("username", "p1") 
    val password = System.getProperty("password", "P12") 
    val testServerUrl = System.getProperty("testServerUrl", "https://someurl.net") 
    val count = new java.util.concurrent.atomic.AtomicInteger(0) 

    val httpProtocol = http 
     .baseURL(testServerUrl) 
     .basicAuth(username, password) 
     .connection("""keep-alive""") 
     .contentTypeHeader("""application/vnd+json""") 


    val headers_0 = Map(
     """Cache-Control""" -> """no-cache""", 
     """Origin""" -> """chrome-extension://fdmmgasdw1dojojpjoooidkmcomcm""") 

    val scn = scenario("LaunchAction") 
     .repeat (scenarioRepeatCount) { 
      exec(http("LaunchAResources") 
       .post("""/api/actions""") 
       .headers(headers_0) 
       .body(StringBody(s"""{"UUID": "$UUID", "stringVariables" : {"externalFilePath" : "/Test.mp4"}}""")) 
       .check(jsonPath("$.id").saveAs("WorkflowID"))) 

     .exec(http("SaveWorkflowStatus") 
       .get("""/api/actions/{$WorkflowID}""") 
       .headers(headers_0) 
       .check(jsonPath("$.status").saveAs("WorkflowStatus"))) 

     } 

    .asLongAs(session => session.attributes("WorkflowStatus") != "false" && count.getAndIncrement() < 8) { 
     doIf(session => session("WorkflowFailed").validate[String].map(WorkflowFailed => !WorkflowFailed.contains("true")).recover(true)) 
     { 
     pause(pauseTime) 
     .exec(http("SaveWorkflowStatus") 
       .get("""/api/actions/${WorkflowID}""") 
       .headers(headers_0) 
       .check(jsonPath("$.running").saveAs("WorkflowStatus")) 
       .check(jsonPath("$.failed").saveAs("WorkflowFailed")) 
       .check(jsonPath("$.failed").transform(status => status == "true").is(false))  // Added this line to fail 1st condition which is (WorkflowFailed = True) then mark as KO. Works fine. 
       ) 

     .exec(session => { 
       val wflowStatus1 = session.get("WorkflowStatus").asOption[String] 
       val wflowFailed1 = session.get("WorkflowFailed").asOption[String] 
       println("Inner Loop Workflow Status: ========>>>>>>>> " + wflowStatus1.getOrElse("COULD NOT FIND STATUS")) 
       println("Inner Loop Workflow Failed?? ========>>>>>>>> " + wflowFailed1.getOrElse("COULD NOT FIND STATUS")) 
       println("Count =====>> " + count) 
       session}) 
     } 
     } 

    setUp(scn.inject(atOnceUsers(userCount))).protocols(httpProtocol) 

} 

ответ

3

ошибка довольно самоуправления объяснения?

значение> не является членом java.util.concurrent.atomic.AtomicInteger

и у вас есть исправление уже в вашем коде;) Итак, я полагаю, вы должны использовать

count.get > 8 

вместо count > 8

+0

.Проверить (jsonPath ("$. не удалось"). преобразование (статус => статус == "истина" || count.get()> 8) .а (ложь)) работал. .. – Peter

Смежные вопросы