Мне нужно иметь возможность захватить строку из ответа, преобразовать ее в двойную, а затем проверить, находится ли значение в пределах диапазона. Если он выходит за пределы диапазона, я хочу провалить симуляцию.
Я вычисляю время процессора в процентах от Prometheus и смог извлечь значение из ответа. Что я хочу сделать, так это убедиться, что оно <значение, и потерпеть неудачу, если оно есть. Ниже то, что я сделал до сих пор. В настоящее время я вставил оператор println, чтобы я мог видеть, работает ли логика - но пока это не так. </p>
Процессор собран нормально, но даже если он выходит за пределы диапазона, он не вызывает оператор println. Я новичок, поэтому хотелось бы услышать слова из односложных слогов: -).
def getCalculatedCpuPercent(namespace: String, container: String) = scenario("get calculated prometheus CPU percent")
.exec(http("get calculated prometheus CPU percent")
.get(s"/api/v1/query")
.queryParam("query", s"((sum by (pod_name)(container_cpu_usage_seconds_total{namespace=~'$namespace',container_name=~'$container',pod_name=~'.*'} - container_cpu_usage_seconds_total{namespace=~'$namespace',container_name=~'$container',pod_name=~'.*'} offset 30s)) / 30) * 100")
.header("Content-Type", "application/json")
.header("Accept", "application/json")
.check(status.is(HttpStatus.SC_OK))
.check(bodyString
.saveAs("sBodyString"))
.check(jsonPath("$..value[1]")
.saveAs("metricValue"))
)
.exec(session => {
val sCpuValue = ( session( "metricValue" ).as[String] )
val cpuValue: Double = sCpuValue.toDouble
doIf(cpuValue > 0) {
exec { session =>
println(session("sBodyString").as[String])
session
}
}
session})
.exec { session =>
println( session( "metricValue" ).as[String] )
session}