funky recorder behavior with RC1

this is something i have noticed already with 2.0.0-SNAPSHOT, but now that it is RC1 it is time to speak :wink:

I’m on the mac, mavericks. using firefox to enable the proxy as usual.
for shear funkyness try this:- got to apple.com → great

also, every time you click/unclick the “save preferences”, it throw an exception. something to do with:

java.io.FileNotFoundException: Directory ‘file:…/gatling-recorder-2.0.0-RC1.jar!’ for recorder configuration does not existthe file definitely exists, so it might be the way it is looking for it (it an’t a Directory for sure)

this is not a show stopper, as i keep using the M3a version and simply migrate the script to RC1.

hope this helps to make it better :slight_smile:

Hi Benny,

For the first one there is a change for RC1 needed in your Firefox proxy configuration.

In RC1 There is only 1 recorder proxy port for both http and https whereas before there was a separate port for each. This was done in part to support recording from mobile devices.

Check this is set up, else may need your config and trace of what requests are failing.

Thanks
Alex

this is something i have noticed already with 2.0.0-SNAPSHOT, but now that it is RC1 it is time to speak :wink:

I’m on the mac, mavericks. using firefox to enable the proxy as usual.
for shear funkyness try this:

also, every time you click/unclick the “save preferences”, it throw an exception. something to do with:

java.io.FileNotFoundException: Directory ‘file:…/gatling-recorder-2.0.0-RC1.jar!’ for recorder configuration does not existthe file definitely exists, so it might be the way it is looking for it (it an’t a Directory for sure)

this is not a show stopper, as i keep using the M3a version and simply migrate the script to RC1.

hope this helps to make it better :slight_smile:

better, but not there yet …

apple.com & google.com → ok
yahoo.com → asks me to accept a certificate, and afterward gets there, but all style and images are gone

and now for the real problem:
running a local play app, i do not get rout resolution. example: http://screencast.com/t/3Goraf9WeQ

to help troubleshoot this, here is a contrast between a bad route via regular browsing: http://screencast.com/t/uQ9sJSpVz6lU
and a bad route via the recorder: http://screencast.com/t/lDQx9XUea
notice the preppending of http://localhost:9000

my proxy config: http://screencast.com/t/A6u7he0r

this has no effect on “save preferences”; same problem as before.

Thanks, following up the first one again (I don’t have access to test this currently btw) - it’s likely that yahoo uses domain sharding and with those domains being https; the browser can’t provide an ‘accept cert’ pop up for those domains so they fail silently. There are some open tickets in github for this to make it seamless/ transparent for you but it currently needs manual intervention - get those failing requests, one for each failing domain on https, (via firebug or other request tracer) and enter them directly in the browser. Accept the cert pop ups for those image/static resources domains. Then resubmit the original request. If the above was the issue then it should then work.

I suspect the play app issue is a separate issue and so should be opened in the issue tracker as well as the save issue.

Thanks
Alex

better, but not there yet …

apple.com&google.com → ok
yahoo.com → asks me to accept a certificate, and afterward gets there, but all style and images are gone

and now for the real problem:
running a local play app, i do not get rout resolution. example: http://screencast.com/t/3Goraf9WeQ

to help troubleshoot this, here is a contrast between abadroute via regular browsing: http://screencast.com/t/uQ9sJSpVz6lU
and a bad route via the recorder: http://screencast.com/t/lDQx9XUea
notice the preppending ofhttp://localhost:9000

my proxy config:http://screencast.com/t/A6u7he0r

this has no effect on “save preferences”; same problem as before.

yahoo.com → asks me to accept a certificate, and afterward gets there, but all style and images are gone

See “secured hosts requiring accepting a certificate” panel in the recorder.
Yahoo probably hosts static resources somewhere else (CDN) but a browser will only prompt for accepting certificates for the url of the page, not for the resources. Directly visit a resource on those domains, accept the security exception and you’ll get the resources.

notice the preppending ofhttp://localhost:9000

Now, that’s indeed a bug (a regression when we introduced port unification): https://github.com/gatling/gatling/issues/2062
Fixed.

Regarding the stacktrace on “save”, this is a bug too and an ugly one: https://github.com/gatling/gatling/issues/2063
It’s not fixed yet.

Thanks for reporting

looking forward to RC2 :wink:

regardless, gatling is fantastic!

here’s another issue:

for M3a, i’ve been using the maven archetype from http://repository.excilys.com/content/groups/public/archetype-catalog.xml
which supplies the Engine.scala which i’ve been using to run the simulations.
well, it turns out it is now ignoring the simulations in my project, and instead wants to run the ones i have within $GATLING_HOME (where the bundle is installed)
how odd. reading through https://github.com/gatling/gatling/issues/2062, it might be related …

by the way, the provided Engine.scala seems to ignore program options provided, such as -s

best,
Benny

How do you use the Engine class? It’s only intended you be used as a launcher from an IDE.

correct, and that’s exactly how i use it.
but IDEs, such as eclipse, allow to pass on args through a run configuration, and i was under the impression the Engine is a conduit to the gatling app, just like the Recorder, so i thought it would pass program args as well.

but, since the maven plugin for RC1 is available and working now, that’s good enough for me.

just to be clear:
Engine worked fine for M3a within an ide, and RC1 isn’t

The helper changed in 2RC1.
There’s an additional line to be set: https://github.com/gatling/gatling-highcharts-maven-archetype/blob/master/src/main/resources/archetype-resources/src/test/scala/Engine.scala#L7

this change causes the following when running from intellij IDEA:

/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin/java -Didea.launcher.port=7535 “-Didea.launcher.bin.path=/Applications/IntelliJ IDEA 13.app/bin” -Dfile.encoding=UTF-8 -classpath “/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/lib/javafx-doclet.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/lib/tools.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/htmlconverter.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Users/benny/projects/angieslist/atc-load-testing.RC1/target/test-classes:/Users/benny/.m2/repository/mysql/mysql-connector-java/5.1.26/mysql-connector-java-5.1.26.jar:/Users/benny/.m2/repository/io/gatling/gatling-app/2.0.0-RC1/gatling-app-2.0.0-RC1.jar:/Users/benny/.m2/repository/io/gatling/gatling-core/2.0.0-RC1/gatling-core-2.0.0-RC1.jar:/Users/benny/.m2/repository/org/scala-lang/scala-compiler/2.10.4/scala-compiler-2.10.4.jar:/Users/benny/.m2/repository/org/scala-lang/scala-library/2.10.2/scala-library-2.10.2.jar:/Users/benny/.m2/repository/org/scala-lang/scala-reflect/2.10.4/scala-reflect-2.10.4.jar:/Users/benny/.m2/repository/com/typesafe/akka/akka-actor_2.10/2.3.4/akka-actor_2.10-2.3.4.jar:/Users/benny/.m2/repository/com/typesafe/config/1.2.1/config-1.2.1.jar:/Users/benny/.m2/repository/io/gatling/uncommons/maths/uncommons-maths/1.2.3/uncommons-maths-1.2.3.jar:/Users/benny/.m2/repository/com/dongxiguo/fastring_2.10/0.2.4/fastring_2.10-0.2.4.jar:/Users/benny/.m2/repository/net/sf/opencsv/opencsv/2.3/opencsv-2.3.jar:/Users/benny/.m2/repository/com/googlecode/concurrentlinkedhashmap/concurrentlinkedhashmap-lru/1.4/concurrentlinkedhashmap-lru-1.4.jar:/Users/benny/.m2/repository/org/threeten/threetenbp/1.0/threetenbp-1.0.jar:/Users/benny/.m2/repository/org/slf4j/slf4j-api/1.7.7/slf4j-api-1.7.7.jar:/Users/benny/.m2/repository/com/typesafe/scalalogging-slf4j_2.10/1.1.0/scalalogging-slf4j_2.10-1.1.0.jar:/Users/benny/.m2/repository/ch/qos/logback/logback-classic/1.1.2/logback-classic-1.1.2.jar:/Users/benny/.m2/repository/ch/qos/logback/logback-core/1.1.2/logback-core-1.1.2.jar:/Users/benny/.m2/repository/io/gatling/jsonpath_2.10/0.5.0/jsonpath_2.10-0.5.0.jar:/Users/benny/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.4.1.3/jackson-databind-2.4.1.3.jar:/Users/benny/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.4.0/jackson-annotations-2.4.0.jar:/Users/benny/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.4.1.1/jackson-core-2.4.1.1.jar:/Users/benny/.m2/repository/io/fastjson/boon/0.23/boon-0.23.jar:/Users/benny/.m2/repository/net/sf/saxon/Saxon-HE/9.5.1-6/Saxon-HE-9.5.1-6-compressed.jar:/Users/benny/.m2/repository/org/jodd/jodd-lagarto/3.6-RC1/jodd-lagarto-3.6-RC1.jar:/Users/benny/.m2/repository/org/jodd/jodd-core/3.6-RC1/jodd-core-3.6-RC1.jar:/Users/benny/.m2/repository/org/jodd/jodd-log/3.6-RC1/jodd-log-3.6-RC1.jar:/Users/benny/.m2/repository/io/gatling/gatling-http/2.0.0-RC1/gatling-http-2.0.0-RC1.jar:/Users/benny/.m2/repository/com/ning/async-http-client/1.9.0-BETA6/async-http-client-1.9.0-BETA6.jar:/Users/benny/.m2/repository/io/netty/netty/3.9.2.Final/netty-3.9.2.Final.jar:/Users/benny/.m2/repository/com/jcraft/jzlib/1.1.3/jzlib-1.1.3.jar:/Users/benny/.m2/repository/io/gatling/gatling-jms/2.0.0-RC1/gatling-jms-2.0.0-RC1.jar:/Users/benny/.m2/repository/org/apache/geronimo/specs/geronimo-jms_1.1_spec/1.1.1/geronimo-jms_1.1_spec-1.1.1.jar:/Users/benny/.m2/repository/io/gatling/gatling-jdbc/2.0.0-RC1/gatling-jdbc-2.0.0-RC1.jar:/Users/benny/.m2/repository/io/gatling/gatling-redis/2.0.0-RC1/gatling-redis-2.0.0-RC1.jar:/Users/benny/.m2/repository/net/debasishg/redisclient_2.10/2.13/redisclient_2.10-2.13.jar:/Users/benny/.m2/repository/commons-pool/commons-pool/1.6/commons-pool-1.6.jar:/Users/benny/.m2/repository/io/gatling/gatling-metrics/2.0.0-RC1/gatling-metrics-2.0.0-RC1.jar:/Users/benny/.m2/repository/com/tdunning/t-digest/3.0/t-digest-3.0.jar:/Users/benny/.m2/repository/io/gatling/gatling-charts/2.0.0-RC1/gatling-charts-2.0.0-RC1.jar:/Users/benny/.m2/repository/com/github/scopt/scopt_2.10/3.2.0/scopt_2.10-3.2.0.jar:/Users/benny/.m2/repository/com/typesafe/zinc/zinc/0.3.5.1/zinc-0.3.5.1.jar:/Users/benny/.m2/repository/com/typesafe/sbt/incremental-compiler/0.13.5/incremental-compiler-0.13.5.jar:/Users/benny/.m2/repository/com/typesafe/sbt/sbt-interface/0.13.5/sbt-interface-0.13.5.jar:/Users/benny/.m2/repository/com/typesafe/sbt/compiler-interface/0.13.5/compiler-interface-0.13.5-sources.jar:/Users/benny/.m2/repository/io/gatling/gatling-recorder/2.0.0-RC1/gatling-recorder-2.0.0-RC1.jar:/Users/benny/.m2/repository/org/scala-lang/scala-swing/2.10.4/scala-swing-2.10.4.jar:/Users/benny/.m2/repository/io/gatling/highcharts/gatling-charts-highcharts/2.0.0-RC1/gatling-charts-highcharts-2.0.0-RC1.jar:/Applications/IntelliJ IDEA 13.app/lib/idea_rt.jar” com.intellij.rt.execution.application.AppMain Engine
Exception in thread “main” java.lang.NoClassDefFoundError: classes/computerdatabase/BasicSimulation (wrong name: computerdatabase/BasicSimulation)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at io.gatling.app.SimulationClassLoader$$anonfun$simulationClasses$2$$anonfun$apply$1.applyOrElse(SimulationClassLoader.scala:78)
at io.gatling.app.SimulationClassLoader$$anonfun$simulationClasses$2$$anonfun$apply$1.applyOrElse(SimulationClassLoader.scala:78)
at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33)
at scala.collection.Iterator$$anon$15.next(Iterator.scala:453)
at scala.collection.Iterator$$anon$1.next(Iterator.scala:853)
at scala.collection.Iterator$$anon$1.head(Iterator.scala:840)
at scala.collection.Iterator$$anon$15.skip(Iterator.scala:451)
at scala.collection.Iterator$$anon$15.hasNext(Iterator.scala:452)
at scala.collection.Iterator$class.foreach(Iterator.scala:727)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
at scala.collection.mutable.ListBuffer.$plus$plus$eq(ListBuffer.scala:176)
at scala.collection.mutable.ListBuffer.$plus$plus$eq(ListBuffer.scala:45)
at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
at scala.collection.AbstractIterator.to(Iterator.scala:1157)
at scala.collection.TraversableOnce$class.toList(TraversableOnce.scala:257)
at scala.collection.AbstractIterator.toList(Iterator.scala:1157)
at io.gatling.app.SimulationClassLoader$$anonfun$simulationClasses$2.apply(SimulationClassLoader.scala:80)
at io.gatling.app.SimulationClassLoader$$anonfun$simulationClasses$2.apply(SimulationClassLoader.scala:80)
at scala.Option.getOrElse(Option.scala:120)
at io.gatling.app.SimulationClassLoader.simulationClasses(SimulationClassLoader.scala:75)
at io.gatling.app.Gatling.start(Gatling.scala:193)
at io.gatling.app.Gatling$.fromMap(Gatling.scala:54)
at Engine$delayedInit$body.apply(Engine.scala:13)
at scala.Function0$class.apply$mcV$sp(Function0.scala:40)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
at scala.App$$anonfun$main$1.apply(App.scala:71)
at scala.App$$anonfun$main$1.apply(App.scala:71)
at scala.collection.immutable.List.foreach(List.scala:318)
at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:32)
at scala.App$class.main(App.scala:71)
at Engine$.main(Engine.scala:4)
at Engine.main(Engine.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

Process finished with exit code 1

I’m not sure how you get this “classes” directory in “classes/computerdatabase/BasicSimulation”.
Try to adapt this line to where IntelliJ generated the compiled classes: https://github.com/gatling/gatling-highcharts-maven-archetype/blob/master/src/main/resources/archetype-resources/src/test/scala/Engine.scala#L11

I don’t know either; props.binariesDirectory = test-classes
the props being passed to GatlingConfiguration.setUp(props) are all correct.

and to be sure, computerdatabase/BasicSimulation does not exists in my project. I believe it is part of the gatling-bundle.

based on what you have mentioned about the recorder, in:

object IDEPathHelper {
val gatlingConfUrl = getClass.getClassLoader.getResource(“gatling.conf”).getPath

aren’t we are getting “gatling.conf” from the jar instead of the project’s one?