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,