2016-10-05 7 views
0

Я хочу добавить одно условие в сценарий ниже.
Я хотел бы Выход из сценария if(counter=8 or WorkflowStatus=true)Добавить счетчик, который увеличивается при каждом запросе http

ли кто-нибудь знает как добавить счетчик, который увеличивает при каждом запросе Шифрование до 8 раз и выйти после 8 и выше условия, если запрос получает WorkflowStatus = верно, то выход в нижеприведенном сценарии?

Сообщите мне, если вам нужно больше разъяснений. Спасибо.

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 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"))) 

     } 

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

ответ

0

Вы можете использовать Redis для хранения вашего номера счета и управлять Redis Number каждый раз при отправке запроса. Я использую Redis для подсчета количества сообщений в почтовом ящике через 3 минуты, если счет более 10 раз за 3 минуты, я отключу этот адрес Ip ​​Address, и этот ip получит 403 запрещенную ошибку в будущем 3 минуты.

+0

Только реализация этого, .asLongAs (сессионный => сессии. атрибуты («WorkflowStatus»)! = «false» && count.getAndIncrement() <8) {...}, и это сработало. – Peter

+0

Как выполнить эти запросы? Например, У меня есть 3 условия ниже кода, 1. Если запрос Count> 8, то выйдите из цикла 2. Если WorkflowStatus == False, то выйдите из цикла 3. Если WorkflowFailed == True, то выйдите из loop Есть вероятность того, что многие запросы не удались в любом из вышеуказанных условий, например, если WorkflowStatus не получил «True» даже после запуска запроса 8 раз, тогда этот запрос должен быть неудачным. но вместо того, чтобы показывать, что в неудачном счете это показывает в счете успеха. Как мне подсчитать и отобразить сбой запроса, которые не были выполнены в вышеуказанных условиях – Peter

1

Лично я использую эти приемы, чтобы иметь приращения счетчика при каждом запросе

val scn = scenario("Scenario Conversion") 
.exec{session => session.set("number",session.userId.split("-").last.toInt)} 

Вы можете повторно использовать это в другом значении сеанса

val scn = scenario("Scenario Conversion") 
.exec{session => session.set("number",session.userId.split("-").last.toInt)} 
.exec{session => session.set("timestamp", nextDay(session("number").as[Int]/1000))} 
+0

Спасибо за ответ @crak. Если возможно, вы можете помочь мне в этом вопросе? Я хочу поставить статус KO, если мой счет больше 8 ИЛИ FailedStatus = true. Посмотрите Pls. http://stackoverflow.com/questions/39991234/how-to-add-status-ko-in-gatling-script – Peter

+0

@peter вы можете использовать сеанс («число») в функции проверки? – crak

+0

Как ?? любой синтаксис или пример? – Peter