使用Gatling的油门功能时,Karate Gatling会抛出异常而不会生成任何报告

问题描述 投票:1回答:1

在做POC时,我遇到了一个问题。 Karate Gatling在使用Gatling进行模拟注射方面效果很好。但是,当我尝试使用Gatlings油门功能时,会抛出一些例外情况。执行完成说 - 模拟com.perffeatures.ExecuteThrottle在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
gatling karate
1个回答
1
投票

是的,这是(唯一的)已知的Karate-Gatling集成限制,截至目前并在文档中明确提到:qazxsw poi

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

我正在寻找能够尽快做出贡献的人。

对于零暂停时间,您可以使用https://github.com/intuit/karate/tree/master/karate-gatling#limitations

Nil
© www.soinside.com 2019 - 2024. All rights reserved.