user13373458
user13373458

Reputation: 91

How to fix [ERROR] i.g.a.Gatling$ - Run crashed java.lang.IllegalArgumentException: requirement failed: No scenario set up?

I am trying to run my gatling tests via command gatling:test and I get this result:

[info] Simulation CheckPerformance successful.
13:08:30.196 [ERROR] i.g.a.Gatling$ - Run crashed
java.lang.IllegalArgumentException: requirement failed: No scenario set up
        at scala.Predef$.require(Predef.scala:281)
        at io.gatling.core.scenario.Simulation.params(Simulation.scala:129)
        at io.gatling.app.Runner.run0(Runner.scala:76)
        at io.gatling.app.Runner.run(Runner.scala:60)
        at io.gatling.app.Gatling$.start(Gatling.scala:80)
        at io.gatling.app.Gatling$.fromArgs(Gatling.scala:46)
        at io.gatling.sbt.GatlingTask.liftedTree1$1(GatlingTask.scala:52)
        at io.gatling.sbt.GatlingTask.execute(GatlingTask.scala:51)
        at sbt.ForkMain$Run.lambda$runTest$1(ForkMain.java:304)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:834)
[error] java.lang.IllegalArgumentException: requirement failed: No scenario set up
[error]         at scala.Predef$.require(Predef.scala:281)
[error]         at io.gatling.core.scenario.Simulation.params(Simulation.scala:129)
[error]         at io.gatling.app.Runner.run0(Runner.scala:76)
[error]         at io.gatling.app.Runner.run(Runner.scala:60)
[error]         at io.gatling.app.Gatling$.start(Gatling.scala:80)
[error]         at io.gatling.app.Gatling$.fromArgs(Gatling.scala:46)
[error]         at io.gatling.sbt.GatlingTask.liftedTree1$1(GatlingTask.scala:52)
[error]         at io.gatling.sbt.GatlingTask.execute(GatlingTask.scala:51)
[error]         at sbt.ForkMain$Run.lambda$runTest$1(ForkMain.java:304)
[error]         at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error]         at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[error]         at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[error]         at java.base/java.lang.Thread.run(Thread.java:834)
[error] Simulation BaseSimulation failed.
[info] Simulation(s) execution ended.

BaseSimulation scala class contains only baseURL

import io.gatling.core.Predef._
import io.gatling.http.Predef.http

class BaseSimulation extends Simulation {

  val httpProtocol = http
    .baseUrl("https://baseurl.com")
}

I tried to run only test using command gatling:testOnly package.TestClass. It works locally, but the same command in gitlab ci job leads to the same error even though all the tests passed successfully.

[info] Simulation CheckPerformance successful.
 09:52:02.214 [ERROR] i.g.a.Gatling$ - Run crashed
 java.lang.IllegalArgumentException: requirement failed: No scenario set up
    at scala.Predef$.require(Predef.scala:281)
    at io.gatling.core.scenario.Simulation.params(Simulation.scala:129)
    at io.gatling.app.Runner.run0(Runner.scala:76)
    at io.gatling.app.Runner.run(Runner.scala:60)
    at io.gatling.app.Gatling$.start(Gatling.scala:80)
    at io.gatling.app.Gatling$.fromArgs(Gatling.scala:46)
    at io.gatling.sbt.GatlingTask.liftedTree1$1(GatlingTask.scala:52)
    at io.gatling.sbt.GatlingTask.execute(GatlingTask.scala:51)
    at sbt.ForkMain$Run.lambda$runTest$1(ForkMain.java:304)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
 [error] java.lang.IllegalArgumentException: requirement failed: No scenario set up
 [error]    at scala.Predef$.require(Predef.scala:281)
 [error]    at io.gatling.core.scenario.Simulation.params(Simulation.scala:129)
 [error]    at io.gatling.app.Runner.run0(Runner.scala:76)
 [error]    at io.gatling.app.Runner.run(Runner.scala:60)
 [error]    at io.gatling.app.Gatling$.start(Gatling.scala:80)
 [error]    at io.gatling.app.Gatling$.fromArgs(Gatling.scala:46)
 [error]    at io.gatling.sbt.GatlingTask.liftedTree1$1(GatlingTask.scala:52)
 [error]    at io.gatling.sbt.GatlingTask.execute(GatlingTask.scala:51)
 [error]    at sbt.ForkMain$Run.lambda$runTest$1(ForkMain.java:304)
 [error]    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
 [error]    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
 [error]    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 [error]    at java.lang.Thread.run(Thread.java:748)
 [error] Simulation BaseSimulation failed.
 [info] Simulation(s) execution ended.
 [error] Failed tests:
 [error]    package.BaseSimulation
 [error] (Gatling / testOnly) sbt.TestsFailedException: Tests unsuccessful
 [error] Total time: 22 s, completed May 20, 2020 9:52:02 AM
Running after_script
Uploading artifacts for failed job
00:03
 Uploading artifacts...
 target/gatling/: found 42 matching files           
 Uploading artifacts to coordinator... ok            id=833478 responseStatus=201 Created token=d3PcCfw5
 ERROR: Job failed: exit code 1

What did I miss? I will be happy to hear any ideas!

Upvotes: 1

Views: 5499

Answers (3)

Coolei Whistles
Coolei Whistles

Reputation: 97

If you are trying to extend to a BaseSimulation that doesn't have any scenarios listed, you should add this to your pom.xml

            <configuration>
                <runMultipleSimulations>true</runMultipleSimulations>
                <excludes>
                    <exclude>packageName.BaseSimulation</exclude>
                </excludes>
            </configuration>

Upvotes: 1

Damith Chamika
Damith Chamika

Reputation: 11

Add setup annotation at the end Sample Code

val headers_10 = Map("Content-Type" -> """application/json""")

  val httpProtocol = http
    .baseUrl("https://reqres.in")

  val scn = scenario("BasicSimulation")
    .exec(http("request_1")
    .post("/api/users")
      .headers(headers_10)
    .body(StringBody("""{
                           "name": "morpheus",
                           "job": "leader"
                       } """)).asJson)
    .pause(5)

  setUp(
    scn.inject(atOnceUsers(50)) // 12
  ).protocols(httpProtocol)

Upvotes: 1

St&#233;phane LANDELLE
St&#233;phane LANDELLE

Reputation: 6623

Error is self explanatory: No scenario set up.

class BaseSimulation extends Simulation {

  val httpProtocol = http
    .baseUrl("https://baseurl.com")
}

This is not a valid Gatling simulation.

You don't define scenario(s) and a setUp.

Please have a look at the official documentation, in particular the tutorials.

Upvotes: 0

Related Questions