当前位置: 首页 > 知识库问答 >
问题:

空手道加特林在使用加特林的油门功能时抛出异常,没有生成报告

章心水
2023-03-14

在进行POC时,我面临一个问题。空手道加特林在使用加特林进行模拟注射时效果很好。然而,当我尝试使用Gatlings节流功能时,它抛出了一些例外。执行完成了Say-Simulation com。性能特征。ExecuteThrotle在150秒内完成。在此之后将引发异常。未生成报告

这就是我尝试过的场景

class ExecuteThrottle extends Simulation {
  before {
    println("Execution of load test started for throttle test")
  }
  val protocol = karateProtocol("/api/users?delay=3" -> pauseFor("post" -> 10))
  val perfscenario3 = scenario("Feature_1").exec(karateFeature("classpath:com/perffeatures/perfscenario3.feature"))

  setUp(
    perfscenario3.inject(
      constantUsersPerSec(1) during (10 minutes)
    ).protocols(protocol)
  ).throttle(
    reachRps(10) in (30 seconds),
    holdFor(1 minute),
    jumpToRps(25),
    holdFor(1 minute)
  ).assertions(
    global.responseTime.max.between(100, 5000),
    global.failedRequests.percent.is(0)
  ).maxDuration(20 minutes)

  after {
    println("Done with the load test execution for throttle test")
  }
}

在执行完成后,我会遇到这样的异常情况

    Simulation com.perffeatures.ExecuteThrottle completed in 150 seconds
    Done with the load test execution for throttle test
23:48:53.229 [GatlingSystem-akka.actor.default-dispatcher-12] ERROR c.intuit.karate.gatling.KarateAction - 'classpath:com/perffeatures/perfscenario3.feature' crashed on session Session(Feature_1,152,Map(),1536085133199,0,OK,List(),io.gatling.core.protocol.ProtocolComponentsRegistry$$Lambda$316/1455695758@1a06a693), forwarding to the next one
java.lang.IllegalStateException: cannot create children while terminating or terminated
    at akka.actor.dungeon.Children.makeChild(Children.scala:270)
    at akka.actor.dungeon.Children.attachChild(Children.scala:48)
    at akka.actor.dungeon.Children.attachChild$(Children.scala:47)
    at akka.actor.ActorCell.attachChild(ActorCell.scala:370)
    at akka.actor.ActorSystemImpl.actorOf(ActorSystem.scala:717)
    at com.intuit.karate.gatling.KarateAction.getActor(KarateAction.scala:30)
    at com.intuit.karate.gatling.KarateAction.$anonfun$execute$1(KarateAction.scala:99)
    at com.intuit.karate.cucumber.AsyncFeature.submit(AsyncFeature.java:52)
    at com.intuit.karate.cucumber.CucumberUtils.callAsync(CucumberUtils.java:160)
    at com.intuit.karate.cucumber.CucumberUtils.callAsync(CucumberUtils.java:154)
    at com.intuit.karate.gatling.KarateAction.execute(KarateAction.scala:103)
    at io.gatling.core.action.Action.$bang(Action.scala:35)
    at io.gatling.core.action.Action.$bang$(Action.scala:35)
    at com.intuit.karate.gatling.KarateAction.io$gatling$core$action$ChainableAction$$super$$bang(KarateAction.scala:26)
    at io.gatling.core.action.ChainableAction.$bang(Action.scala:60)
    at io.gatling.core.action.ChainableAction.$bang$(Action.scala:58)
    at com.intuit.karate.gatling.KarateAction.io$gatling$core$action$ExitableAction$$super$$bang(KarateAction.scala:26)
    at io.gatling.core.action.ExitableAction.$bang(BlockExit.scala:137)
    at io.gatling.core.action.ExitableAction.$bang$(BlockExit.scala:135)
    at com.intuit.karate.gatling.KarateAction.$bang(KarateAction.scala:26)
    at io.gatling.core.controller.inject.Injector.startUser(Injector.scala:130)
    at io.gatling.core.controller.inject.Injector.$anonfun$injectUser$1(Injector.scala:142)
    at akka.actor.Scheduler$$anon$4.run(Scheduler.scala:140)
    at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:40)
    at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:43)
    at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
    at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
    at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
    at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
    java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at io.gatling.mojo.MainWithArgsInFile.runMain(MainWithArgsInFile.java:50)
        at io.gatling.mojo.MainWithArgsInFile.main(MainWithArgsInFile.java:33)
    Caused by: java.util.concurrent.TimeoutException: Futures timed out after [2 seconds]
        at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:255)
        at scala.concurrent.impl.Promise$DefaultPromise.result(Promise.scala:259)
        at scala.concurrent.Await$.$anonfun$result$1(package.scala:215)
        at scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:53)
        at scala.concurrent.Await$.result(package.scala:142)
        at io.gatling.app.Gatling$.start(Gatling.scala:66)
        at io.gatling.app.Gatling$.fromArgs(Gatling.scala:45)
        at io.gatling.app.Gatling$.main(Gatling.scala:37)
        at io.gatling.app.Gatling.main(Gatling.scala)
        ... 6 more
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE

共有1个答案

逑景铄
2023-03-14

是的,这是(唯一的?)目前已知的空手道-加特林融合的情况,并在文件中明确提到:https://github.com/intuit/karate/tree/master/karate-gatling#limitations

这在技术上是可能的(但需要一些工作),并将在未来的版本中提供。

我在找一个能更快做出贡献的人。

对于零暂停时间,您可以使用Nil

val protocol = karateProtocol(
  "/cats/{id}" -> Nil,
  "/cats" -> pauseFor("get" -> 15, "post" -> 25)
)
 类似资料:
  • 我的加特林模拟课, 我的get-user.feature档案, 当我运行模拟类,下面的控制台日志我得到: 注意:这里我在34毫秒内得到响应,但是选通无法生成报告。下面是我收到的错误消息 错误: openwhisk:Gatling失败:进程已退出,但出现错误:255(退出值:255)- 但如果我运行相同的模拟文件,只需在功能文件中进行如下更改 然后,盖特林生成报告。请帮帮我,根本原因是什么。

  • 我有一个模拟: 测试1。特色: 测试2。特色: 因为test1。功能失败,我希望Gatling停止该场景,而不打印“2”,但在我看到的日志中: 我做错什么了吗?谢谢

  • 我尝试按照http://gatling.io/docs/2.2.3/realtime_monitoring/index.html的指南将测试结果记录到influxdb中,并在我以前设置的grafana中显示数据。但是,我看不到gatling应该在inflxDB中的任何地方记录的任何数据。 我对by inflxdb.conf文件进行了编辑,使其包含以下字段:

  • 我正在使用Gatling 3.3.1使用Gatling Kafka库在Kafka中注入数据。我试着用一个小的定制进料器来测试它。 但是它不起作用feed()需要一个FeederBuilder feeder是迭代器[Map[String,String]] 我不知道怎样才能解决这个问题。

  • Gatling解析Strings参数值并将它们转换为函数,这些函数将根据存储在会话中的数据计算结果,然后对其进行评估。 加特林文件 有没有办法在exec中手动执行此操作? 我有多个使用EL属性的请求体模板,发送的请求将因进纸器而异 我目前拥有的代码如下: 我希望没有办法评估嵌套的EL属性,但是有没有办法使用会话变量手动评估它?类似于 我在其他一些问题中看到过ELCompiler被引用,但不确定从哪

  • 我试图建立一系列触发空手道场景的加特林测试。我对功能文件所做的更改只是偶尔被加特林发现。例如,在下面的功能文件代码中,运行前四个项目(包括注释掉的“关系”行): 其余的不是。请参阅运行结果的附加屏幕:在此输入图像描述 POM供参考版本: 我怀疑像编译文件这样的东西在进行更改时不会刷新或重新编译。