Why is Gatling pausing before sending Requests

Looks like a bad idea to start developing an extension on top of an obsolete version. Current version is 3.1.3.

Plugin is now updated to Gatling 3.1.3.

Although the empty stats block disappeared, there’s always 25 seconds between the Run and the Injection:

**14:50:59.914** [INFO ] a.e.s.Slf4jLogger - Slf4jLogger started
Simulation RadiusSimulation started...
**14:51:29.114** [INFO ] i.g.c.s.w.ConsoleDataWriter - Initializing

As for the scenario, the engine spread the 1000 actors, instead injecting all the users at Once, which leads the 1 second test, +/- a few seconds for the final requests, to put 15 seconds to complete !!

`

14:50:59.354 [INFO ] i.g.c.c.GatlingConfiguration$ - Gatling will try to use 'gatling.conf' as custom config file.
**14:50:59.914** [INFO ] a.e.s.Slf4jLogger - Slf4jLogger started
Choose a simulation number:
     [0] HttpSimulation
     [1] RadiusSimulation
1
Select run description (optional)

Simulation RadiusSimulation started...
**14:51:29.114** [INFO ] i.g.c.s.w.ConsoleDataWriter - Initializing
14:51:29.114 [INFO ] i.g.c.s.w.LogFileDataWriter - Initializing
14:51:29.122 [INFO ] i.g.c.s.w.ConsoleDataWriter - Initialized
14:51:29.129 [INFO ] i.g.c.s.w.LogFileDataWriter - Initialized
14:51:29.169 [INFO ] i.g.c.c.i.Injector - StoppedInjecting
log4j:WARN No appenders could be found for logger (org.tinyradius.util.RadiusClient).
log4j:WARN Please initialize the log4j system properly.

As you can see, problem doesn’t happen with Gatling HTTP support.
So the problem is somewhere in your plugin.

Woooow, thanks for this answer.

At the end of the day, I’d figured out the problem/solution, and the Plugin is on github: gatling-radius

A matter of sharing my experience on the above question with the group users: the calls are non-blocking now, thanks for Future

The Action class is now as follow:

`

package com.ngenia.radius.action

import scala.util.{Failure, Success}

import io.gatling.core.action._
import io.gatling.core.session.Session
import io.gatling.core.stats.StatsEngine
import io.gatling.commons.util.Clock

import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global

import com.ngenia.radius.client
import com.ngenia.radius.client.RadiusUtils
import com.ngenia.radius.protocol.RadiusProtocol
import com.ngenia.radius.request._

case class RadiusAction(
requestType: Type,
radiusAttributes: RadiusAttributes,
radiusProtocol: RadiusProtocol,
clock: Clock,
statsEngine: StatsEngine,
next: Action
) extends RadiusLogging {

override def name: String = “RADIUS”

override def execute(session: Session): Unit = {

implicit val iSession = session

val start = clock.nowMillis

val future = Future {
client.RadiusClient.sendRequest(radiusProtocol, requestType, radiusAttributes) // The main Radius Call
}

future.onComplete {
case Success(response) => {
log(start, clock.nowMillis, response._2, radiusAttributes.requestName, session, statsEngine)
next !
session
.set(“Acct-Session-Id”, RadiusUtils.sessionId)
.set(“Framed-IP-Address”, RadiusUtils.framedIPAddress(response._1))
}
case Failure(e) => e.printStackTrace
}
}
}

`

Great!

Feel free to send a PR to get your plugin listed in the community extensions, see https://github.com/gatling/gatling/blob/master/src/sphinx/extensions/index.rst.

Cheers,