scala - Gatling - 如何将会话捕获的字符串转换为双精度然后执行比较
问题描述
我需要能够从响应中捕获一个字符串,将其转换为双精度,然后检查该值是否在一个范围内。如果它超出范围,我想使模拟失败。
我正在从 Prometheus 计算 CPU% 时间,并且能够从响应中提取值。我想要做的是确保它是 < 一个值,如果是则失败。以下是我到目前为止所做的。我暂时放入了一个 println 语句,以便我可以查看逻辑是否有效 - 但到目前为止还没有。
CPU 收集正常,但即使超出范围,也不会触发 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}
解决方案
您必须将其与 0.0 进行比较,因为它是双精度值:
doIf(cpuValue > 0.0) {
推荐阅读
- vue.js - 安装 Nuxt.js 失败
- python - 如何将flask_jwt_extended 与蓝图一起使用?
- mysql - 使用 EF Core (TPH) 继承。大量的列和索引
- java - Gradle JavaExec 任务永远不会完成
- python - 使用 Keras 功能 API 为 Tensorflow LITE 构建模型
- java - 如何使用 Junit4 进行单元测试?
- python - 为什么我的“替换”功能无法替换
- ruby-on-rails - validates_acceptance_of 不适用于复选框
- mysql - 如何处理 ERROR 2005 (HY000): Unknown MySQL server host '6.' (0) 将大文件插入mysql时出现垃圾字符?
- java - 将“java.lang.ClassNotFoundException:com.mysql.jdbc.Driver”添加到构建路径并使用 Class.forName() 注册后如何修复它;