Work in Progress!
An Action is the actual component in charge of "doing something", like sending a request (or looping, routing, etc). It must:
def execute(session: Session)method.
This method has to perform the following operations:
DataWriter.logRequest(session.scenarioName, session.userId, "Request " + requestName, requestStartDate: Long, responseEndDate: Long, endOfRequestSendingDate: Long, endOfRequestSendingDate: Long, requestResult: RequestStatus, requestMessage: String)
next ! session
Note that an Action is basically an Akka Actor that handles Session messages. An Action instance is to be shared among users.
An ActionBuilder is what is expected in the DSL. It is used at engine start up for building Action instances.
An ActionBuilder is to be stateless and immutable so it can be reused at multiple places in the scenario and produce multiple unrelated Actions instances.
It expects an implementation of the following methods:
private[gatling] def withNext(next: ActorRef): ActionBuilder
returns a new ActionBuilder instance with a reference to the given ActorRef. An
ActorRef is a stub on an Akka actor.
This method is called at engine startup when attaching the builder in the scenario chain.
private[gatling] def build(registry: ProtocolConfigurationRegistry): ActorRef
builds the Action and starts it. It take a ProtocolConfigurationRegistry parameter that is basically a Map of protocol specific option (such as outgoing proxy for HTTP). For starting and returning an Actor from an Action instance, use the following: