Я хочу добавить условие на http-запрос. как этот сценарий, с использованием API,Положить условие в HTTP-запрос, используя gatling
У меня есть одно действие, с которого я нахожу 'Action ID'
С помощью этого 'Действие Id' проверить состояние этого действия, который является «Запуск/ожидание/завершения/и т.д.»и сохранить его в переменной
я сделал это два шага, теперь я хочу сделать
3. Я должен проверять состояние при условии каждые 20 минут, если статус «Запуск», повторное подтверждение статуса каждые 20 минут, если status = «завершено», а затем выйти из выхода oR после 2 часов автоматически (даже если состояние находится в рабочем состоянии)
EDIT: Хотите поставить условие, как это,
Check status = true
{
pause for 15minutes
request once again after 15minutes
if(status = false)
{
exit
}
else
{
request once again and check status, if true wait for 15minutes
If total waiting time is more than 2 hours then exit
}
}
else
{
exit
}
ниже фрагмент кода, что я сделал,
import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._
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/{$wflowid}""")
.headers(headers_0)
.check(jsonPath("$.status").saveAs("WorkflowStatus")))
.asLongAs(session => session.attributes("WorkflowStatus") != false) {
pause(900)
.exec(http("SaveWorkflowStatus")
.get("""/api/actions/${WorkflowID}""")
.headers(headers_0)
.check(jsonPath("$.running").saveAs("WorkflowStatus")))
}
}
setUp(scn.inject(atOnceUsers(userCount))).protocols(httpProtocol)
}
Пожалуйста, помогите. Благодаря
Спасибо за ответ. Я отредактировал свой вопрос с точным определением, что я хочу сделать. не могли бы вы мне помочь? РЕДАКТИРОВАТЬ: хочу поставить состояние следующим образом: Проверить статус = true {.....} – Peter
Я думаю, что peter выше также должен решить эту проблему ... вам нужно заблокировать операцию в течение 20 минут, , вы можете попробовать приостановить ... Я также не пробовал, хотя – user666
Я пробовал с asLongAs и добавил .pause() в него, но он выдает ошибку. При передаче $ {workflowStatus} что-то не так. Обновлен код с ошибками. PLS помощи. Благодарю. – Peter