performance-testing - 将 Taurus 与 Gatling 一起使用失败,并出现“线程“主”io.gatling.core.session.el.ElParserException 中的异常”
问题描述
我正在尝试用 Taurus 运行 Gatling 来试验它,但它并不像预期的那样容易。
我有这个代码:
execution:
- executor: gatling
scenario: sample
scenarios:
sample:
script: tests/gatling/BasicSimulation.scala
simulation: tests.gatling.BasicSimulation
并使用这个加特林模拟 scala 代码:
package tests.gatling
import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._
class BasicSimulation extends Simulation {
val httpConf = http
.baseURL("http://computer-database.gatling.io")
.acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
.doNotTrackHeader("1")
.acceptLanguageHeader("en-US,en;q=0.5")
.acceptEncodingHeader("gzip, deflate")
.userAgentHeader("Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0")
val scn = scenario("BasicSimulation")
.exec(http("request_1")
.get("/"))
.pause(1)
setUp(
scn.inject(atOnceUsers(1))
).protocols(httpConf)
}
当我运行它时:
bzt 加特林.yml
它以错误结尾:
08:13:02 ERROR: Child Process Error: Gatling tool exited with non-zero code: 1
...
Gatling STDERR:
Exception in thread "main" io.gatling.core.session.el.ElParserException: Failed to parse text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 with error '[B cannot be cast to [C'
at io.gatling.core.session.el.ElCompiler.parseEl(ElCompiler.scala:249)
at io.gatling.core.session.el.ElCompiler$.parse(ElCompiler.scala:171)
at io.gatling.core.session.el.ElCompiler$.compile(ElCompiler.scala:174)
at io.gatling.core.session.el.package$El$.el$extension(package.scala:26)
at io.gatling.core.ValidationImplicits.stringToExpression(ValidationImplicits.scala:48)
at io.gatling.core.ValidationImplicits.stringToExpression$(ValidationImplicits.scala:48)
at io.gatling.core.Predef$.stringToExpression(Predef.scala:22)
at tests.gatling.BasicSimulation.<init>(BasicSimulation.scala:12)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:488)
at java.base/java.lang.Class.newInstance(Class.java:558)
at io.gatling.app.Runner.run0(Runner.scala:79)
at io.gatling.app.Runner.run(Runner.scala:64)
at io.gatling.app.Gatling$.start(Gatling.scala:59)
at io.gatling.app.Gatling$.fromArgs(Gatling.scala:43)
at io.gatling.app.Gatling$.main(Gatling.scala:35)
at io.gatling.app.Gatling.main(Gatling.scala)
...
解决方案
不久前我遇到了同样的问题,根本原因是我使用的是 jdk 9 ,我降级到 8 并且它有效。
我试过你的代码,它在 jdk 8 上对我有用
推荐阅读
- python - Python - 移动和压缩文件和文件夹
- flutter - 如何在flutter项目中使用jar文件
- java - 如何在没有像 Quartz Clustering 这样的集中式解决方案的情况下在分布式环境中实现 cron 作业/计划作业?
- javascript - 如何在获取请求中发送表单数据
- google-cloud-platform - 如何在本地测试 Google Cloud Storage Triggers Cloud Function?
- javascript - 替换字符串的一个字符
- minikube - Minikube pod 卡在等待中:ImagePullBackOff
- docker - Dockerize 示例 dotnet core exe 应用程序到 linux pod 中的 kubernetes
- shell - 如何使用 grep 实用程序处理连续流输出?
- php - PHP / MySql:如果字段为 NULL 或 0,则显示图像 A,如果字段为 1,则显示图像 B