[Gatling] 1.3.0 is out

Hi there,

This summer has been quite busy, but our new release is finally out.
New charts, new checks, redesigned DSL, caching, Graphite, etc.

Have a look at the changelog and beware of the required migration.

Hope you’ll enjoy it.

Cheers,

Stéphane
http://gatling-tool.org

I downloaded and tried it but got errors :

It seems Gatling is puzzled when simulations are not under GATLING_HOME also ;(

ie: GATLING_HOME = /my/gatling-1.3.0
    PWD = /my/tests

ex :

PWD = /Users/henri/Downloads/XXXX

../gatling-charts-highcharts-1.3.0/bin/gatling.sh -s
com.axway.d2d.BasicPerWebapp -sf
/Users/henri/Downloads/XXXX/simulations/ -rf
/Users/henri/Downloads/XXXX/results/

GATLING_HOME is set to /Users/henri/Downloads/gatling-charts-highcharts-1.3.0
Compilation succeeded with 5 warnings.
/Users/henri/Downloads/XXXX/simulations/com/axway/d2d/BasicPerfWebapp.scala:52:
warning: value chain in object Predef is deprecated: Will be removed
in Gatling 1.4.0. Use "import bootstrap._" instead.
    val chain_0 = chain
                              ^
/Users/henri/Downloads/XXXX/simulations/com/axway/d2d/BasicPerfWebapp.scala:62:
warning: method times in class LoopBuilder is deprecated: Will be
removed in Gatling 1.4.0. Use "repeat(times) { chain }" instead
      ).times(extLoop)
                          ^
/Users/henri/Downloads/XXXX/simulations/com/axway/d2d/BasicPerfWebapp.scala:60:
warning: method loop in class AbstractStructureBuilder is deprecated:
Will be removed in Gatling 1.4.0.
       .loop(chain
                          ^
/Users/henri/Downloads/XXXX/simulations/com/axway/d2d/BasicPerfWebapp.scala:61:
warning: method insertChain in trait Execs is deprecated: Will be
removed in Gatling 1.4.0. Use "exec" instead.
       .insertChain(chain_0)
                          ^
/Users/henri/Downloads/XXXX/simulations/com/axway/d2d/BasicPerfWebapp.scala:60:
warning: value chain in object Predef is deprecated: Will be removed
in Gatling 1.4.0. Use "import bootstrap._" instead.
       .loop(chain
                               ^

Exception in thread "main" java.lang.ClassNotFoundException:
com.axway.d2d.BasicPerWebapp
  at scala.tools.nsc.interpreter.AbstractFileClassLoader.findClass(AbstractFileClassLoader.scala:51)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
  at scala.tools.nsc.interpreter.AbstractFileClassLoader.scala$tools$nsc$util$ScalaClassLoader$$super$loadClass(AbstractFileClassLoader.scala:17)
  at scala.tools.nsc.util.ScalaClassLoader$class.loadClass(ScalaClassLoader.scala:50)
  at scala.tools.nsc.interpreter.AbstractFileClassLoader.loadClass(AbstractFileClassLoader.scala:17)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
  at com.excilys.ebi.gatling.app.FileSystemBackedSimulationClassLoader$$anonfun$5.apply(SimulationClassLoader.scala:105)
  at com.excilys.ebi.gatling.app.FileSystemBackedSimulationClassLoader$$anonfun$5.apply(SimulationClassLoader.scala:105)
  at scala.collection.Iterator$$anon$19.next(Iterator.scala:401)
  at scala.collection.Iterator$$anon$22.hasNext(Iterator.scala:458)
  at scala.collection.Iterator$$anon$19.hasNext(Iterator.scala:400)
  at scala.collection.Iterator$class.foreach(Iterator.scala:772)
  at scala.collection.Iterator$$anon$19.foreach(Iterator.scala:399)
  at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
  at scala.collection.mutable.ListBuffer.$plus$plus$eq(ListBuffer.scala:130)
  at scala.collection.TraversableOnce$class.toList(TraversableOnce.scala:242)
  at scala.collection.Iterator$$anon$19.toList(Iterator.scala:399)
  at com.excilys.ebi.gatling.app.FileSystemBackedSimulationClassLoader.simulationClasses(SimulationClassLoader.scala:108)
  at com.excilys.ebi.gatling.app.Gatling$$anonfun$10.apply(Gatling.scala:83)
  at com.excilys.ebi.gatling.app.Gatling$$anonfun$10.apply(Gatling.scala:78)
  at scala.Option.getOrElse(Option.scala:108)
  at com.excilys.ebi.gatling.app.Gatling.start(Gatling.scala:78)
  at com.excilys.ebi.gatling.app.Gatling$.fromMap(Gatling.scala:66)
  at com.excilys.ebi.gatling.app.Gatling$.main(Gatling.scala:61)
  at com.excilys.ebi.gatling.app.Gatling.main(Gatling.scala)

Hi Henry,

I did find a stupid mistake (did not defined two values in the right order, causing a NPE on old syntax):
https://github.com/excilys/gatling/issues/735

This issue only happens with the deprecated syntax:
https://github.com/excilys/gatling/wiki/Migrating#wiki-1.3.0

With #735 fixed, I was able to run you Simulation, both when located in standard directory, or placed outside.

Here’s your updated Simulation.
Let me know if it works for you.

package com.axway.d2d

import com.excilys.ebi.gatling.core.Predef._

import com.excilys.ebi.gatling.http.Predef._

import com.excilys.ebi.gatling.jdbc.Predef._

import com.excilys.ebi.gatling.http.Headers.Names._

import akka.util.duration._

import bootstrap._

class BasicPerfWebApp extends Simulation {

def apply = {

val extUsers = Integer.getInteger(“users”, 1)

val extRampup = Integer.getInteger(“rampup”, 0).toLong

val extPause = Integer.getInteger(“pause”, 1).toLong

val extLoop = Integer.getInteger(“loop”, 1)

var extHost = System.getProperty(“host”)

if (extHost == null)

extHost = “myrepo”

val extPort = Integer.getInteger(“port”, 80)

var extBaseUrl = “”

if (extPort == 443)

extBaseUrl = “https://” + extHost

else {

extBaseUrl = “http://” + extHost

if (extPort != 80)

extBaseUrl = extBaseUrl + “:” + extPort

}

var extWebapp = System.getProperty(“webapp”)

if (extWebapp == null)

extWebapp = “”

val httpConf = httpConfig

.baseURL(extBaseUrl)

.acceptHeader(“text/html, image/gif, image/jpeg, *; q=.2, /; q=.2”)

.acceptEncodingHeader(“gzip”)

.hostHeader(extHost)

.userAgentHeader(“Apache-Maven/3.0.4 (Java 1.6.0-34; Mac OS X 10.7.4)”)

val headers_1 = Map(

“Pragma” → “”“no-cache”"")

val chain_0 = exec(

http(“request_” + extPause + “ms”)

.get(extWebapp + “/basic-perf/PerfMeter?waittime=” + extPause *

1000 + “&responsesize=1024”)

.headers(headers_1))

val scn = scenario(“basic-perf-webapp”)

.repeat(extLoop) {

chain_0

}

List(scn.configure.users(extUsers).ramp(extRampup).protocolConfig(httpConf))

}

}