Need help - Gatling 2 simulation with Redis feeder aborts with "Gatling Actor system hasn't been started"

Hello all,

I am fairly new to Gatling and Scala and having trouble with a simulation using the Redis feeder, hoping someone can help identify the error in my script.

Here’s the context: I am testing a data acquisition system using a stripped-down nginx server that accepts any http POST request with any arbitrary data. I have working Gatling scripts that feed JSON bodies from files (.csv feeder with a list of filenames) and am now exploring using a Redis feeder to bypass the file system altogether. As a real simple proof-of-concept, I’m trying to insert a word from the Redis feeder into the body of the POST, using a trimmed-down list from /usr/share/dict/words preloaded in the Redis database.

As it is coded now, the script aborts at runtime with “java.lang.UnsupportedOperationException: Gatling Actor system hasn’t been started”. I have verified with redis-cli that Redis is loaded and running before starting Gatling.

vagrant@ubuntu:~/gatling$ bin/gatling.sh -s sensorData.RedisDataTest -nr
GATLING_HOME is set to /home/vagrant/gatling
Simulation sensorData.RedisDataTest started…
Exception in thread “main” java.lang.ExceptionInInitializerError
at sensorData.RedisDataTest.(RedisDataTest.scala:38)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at java.lang.Class.newInstance(Class.java:374)
at io.gatling.core.runner.Runner.run(Runner.scala:35)
at io.gatling.app.Gatling.start(Gatling.scala:231)
at io.gatling.app.Gatling$.fromMap(Gatling.scala:52)
at io.gatling.app.Gatling$.runGatling(Gatling.scala:77)
at io.gatling.app.Gatling$.runGatling(Gatling.scala:56)
at io.gatling.app.Gatling$.main(Gatling.scala:48)
at io.gatling.app.Gatling.main(Gatling.scala)
Caused by: java.lang.UnsupportedOperationException: Gatling Actor system hasn’t been started
at io.gatling.core.akka.GatlingActorSystem$.instance(GatlingActorSystem.scala:30)
at io.gatling.core.akka.AkkaDefaults$class.system(AkkaDefaults.scala:25)
at io.gatling.redis.feeder.RedisFeeder$.system(RedisFeeder.scala:29)
at io.gatling.redis.feeder.RedisFeeder$.apply(RedisFeeder.scala:44)
at sensorData.RedisTestScenario$.(RedisDataTest.scala:26)
at sensorData.RedisTestScenario$.(RedisDataTest.scala)
… 13 more

The script itself is just an edit of another working script, with the changes required for Redis:

package sensorData

import io.gatling.core.Predef._
import io.gatling.http.Predef._
import io.gatling.jdbc.Predef._ // maybe not needed?
import scala.concurrent.duration._
import com.redis._
import io.gatling.redis.feeder._

object MyProtocol {
val httpProtocol = http
.baseURL(“http://localhost”)
// .extraInfoExtractor((requestStatus, session, request, response) => List.empty)
// .dumpSessionOnFailure
.disableFollowRedirect
.warmUp(“http://localhost”)
// .disableWarmUp
}

object RedisTestScenario {

val redisPool = new RedisClientPool(“localhost”, 6379)

val scn = scenario(“RedisTest”)
.repeat(2) {
feed(RedisFeeder(redisPool, “wordList”, RedisFeeder.LPOP))
.exec(
http(“redis_test_request”)
.post("/")
.body(StringBody("${wordList}"))
.check(status.is(200))
)
.pause(0 milliseconds, 100 milliseconds)
}
}

class RedisDataTest extends Simulation {
setUp(RedisTestScenario.scn.inject
(nothingFor(4 seconds), rampUsers(2) over (10 seconds), nothingFor(1 second))
)
.protocols(MyProtocol.httpProtocol)
}

Environment is Ubuntu Server 14.04 with all current patches; Java runtime is OpenJDK 7u55-2.4.7, 64-bit Server VM; gatling-charts-highcharts-2.0.0-SNAPSHOT-bundle downloaded 16 June 2014; Redis version 2.8.9. All components are running on a 64-bit VM, networking is all on localhost with no proxies and only “inside the box” connectivity.

I’m hoping this is an error that more knowledgeable users will spot; I’ve gone through the wiki and scoured the web for any additional information for Gatling 2 and Redis but not had much luck. Any advice or assistance is greatly appreciated!

Best regards,
Hugh

Hi,

Stupid bug, will fix later today.

Cheers,

Stéphane

Fixed: https://github.com/excilys/gatling/issues/1973
Thanks for reporting!

Stéphane, thanks so much for the quick turnaround! I downloaded the nightly build for 20 June and the problem is indeed resolved - now on to turning my simple model into something more useful :slight_smile:

Best regards, enjoy your weekend!
–Hugh

The mistake was really stupid, so it was easy to fix.

Have fun!