【问题标题】:Gatling compilation fails for simulation with nothingFor function使用 nothingFor 函数进行模拟的 Gatling 编译失败
【发布时间】:2020-12-01 10:56:19
【问题描述】:

我正在尝试在 Gatling 3.4.1 下使用 nothingFor 函数运行模拟。但是,编译失败并出现错误could not find implicit value for evidence parameter of type io.gatling.core.controller.inject.InjectionProfileFactory[Product with Serializable]

模拟

package abs

import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._

class DefaultSimulation extends Simulation {

  ...

  val httpProtocol = http
    .baseUrl(Setting.baseUrl)
    .userAgentHeader("Gatling/3.4.1")

  setUp(
    getScenario.inject(
      nothingFor(20 seconds),
      rampConcurrentUsers(0) to(20) during(10 seconds),
      constantConcurrentUsers(20) during (600 seconds)
    ),
    setScenario.inject(
      rampConcurrentUsers(0) to(20) during(30 seconds),
      constantConcurrentUsers(20) during (600 seconds)
    )
  ).protocols(httpProtocol)
}

编译错误

[ERROR] i.g.c.ZincCompiler$ - C:/Installation/gatling-3.4.1/user-files/simulations/DefaultSimulation.scala:50:30: could not find implicit value for evidence parameter of type io.gatling.core.controller.inject.InjectionProfileFactory[Product with Serializable]
    getScenario.inject(
                      ^
[ERROR] i.g.c.ZincCompiler$ - one error found
[ERROR] i.g.c.ZincCompiler$ - Compilation crashed
xsbt.InterfaceCompileFailed: null
        at xsbt.CachedCompiler0.handleErrors(CompilerBridge.scala:183)
        at xsbt.CachedCompiler0.run(CompilerBridge.scala:172)
        at xsbt.CachedCompiler0.run(CompilerBridge.scala:134)
        at xsbt.CompilerBridge.run(CompilerBridge.scala:39)
        at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:89)
        at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$7(MixedAnalyzingCompiler.scala:185)
        at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
        at sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:240)
        at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4(MixedAnalyzingCompiler.scala:175)
        at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4$adapted(MixedAnalyzingCompiler.scala:156)
        at sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:232)
        at sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:156)
        at sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:203)
        at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:571)
        at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:571)
        at sbt.internal.inc.Incremental$.$anonfun$apply$5(Incremental.scala:174)
        at sbt.internal.inc.Incremental$.$anonfun$apply$5$adapted(Incremental.scala:172)
        at sbt.internal.inc.Incremental$$anon$2.run(Incremental.scala:459)
        at sbt.internal.inc.IncrementalCommon$CycleState.next(IncrementalCommon.scala:115)
        at sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:56)
        at sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:52)
        at sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:248)
        at sbt.internal.inc.Incremental$.$anonfun$incrementalCompile$8(Incremental.scala:414)
        at sbt.internal.inc.Incremental$.withClassfileManager(Incremental.scala:499)
        at sbt.internal.inc.Incremental$.incrementalCompile(Incremental.scala:401)
        at sbt.internal.inc.Incremental$.apply(Incremental.scala:166)
        at sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:571)
        at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:489)
        at sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:332)
        at sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:419)
        at sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:137)
        at io.gatling.compiler.ZincCompiler$.doCompile(ZincCompiler.scala:258)
        at io.gatling.compiler.ZincCompiler$.delayedEndpoint$io$gatling$compiler$ZincCompiler$1(ZincCompiler.scala:265)
        at io.gatling.compiler.ZincCompiler$delayedInit$body.apply(ZincCompiler.scala:40)
        at scala.Function0.apply$mcV$sp(Function0.scala:39)
        at scala.Function0.apply$mcV$sp$(Function0.scala:39)
        at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17)
        at scala.App.$anonfun$main$1$adapted(App.scala:80)
        at scala.collection.immutable.List.foreach(List.scala:431)
        at scala.App.main(App.scala:80)
        at scala.App.main$(App.scala:78)
        at io.gatling.compiler.ZincCompiler$.main(ZincCompiler.scala:40)
        at io.gatling.compiler.ZincCompiler.main(ZincCompiler.scala)

我试图隐式指定导入,但编译失败并出现同样的异常

import io.gatling.core.Predef.{nothingFor, rampConcurrentUsers, constantConcurrentUsers, _}

此模拟在没有nothingFor(20 seconds) 的情况下编译和工作。

【问题讨论】:

    标签: gatling scala-gatling


    【解决方案1】:

    Gatling 有 2 个不同系列的注入配置文件步骤:

    • 开放,您可以控制用户到达率
    • 在您控制并发用户数的地方关闭

    您不能混合使用它们,因为这是两种完全不同且不兼容的行为。

    nothingFor 属于开放家族,rampConcurrentUsers 属于封闭家族。

    请改用constantConcurrentUsers(0) during (20)

    【讨论】:

      猜你喜欢
      • 2013-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-04
      • 1970-01-01
      • 2020-02-02
      相关资源
      最近更新 更多