Call custom Java static method from inside simulation file

1,228 views
Skip to first unread message

Zack Garbowitz

unread,
Oct 28, 2014, 11:37:39 AM10/28/14
to gat...@googlegroups.com
Hi,

I'm a new Gatling user, and trying to test a web application where all the request parameters need to be sent using custom encoding to the server. We have a java class that performs this custom encoding in our main application. I'm trying to include that same Java class into the Gatling project, so that I can just call the same encode method before sending the Gatling requests. I know that in theory this should work, because Scala classes should be able to call Java methods. I have another Scala project where this works fine already, and I don't want to convert the whole encoder class to Scala.

So in my Gatling project the file structure is:
user-files/simulations/example/ExampleSimulation.scala
user-files/simulations/example/CustomParamEncoder.java

Inside of CustomParamEncoder.java:

package example;

public class CustomParamEncoder {

  public static String encode(String paramsToEncode) {
     // Do some encoding and return a new string
  }

}

Inside of ExampleSimulation.scala:

package example

class ExampleSimulation extends Simulation {

  // Setup code

  val encodedParams = CustomParamEncoder.encode("blah blah blah")

  // Finish setting up simulation

}

However, when I try to run this using gatling.sh I get the following error:

GATLING_HOME is set to /Users/zgarbowitz/dev/gatling

11:05:04.209 [ERROR] i.g.a.ZincCompiler$ - /Users/zgarbowitz/dev/gatling/user-files/simulations/example/ExampleSimulation.scala:9: not found: value CustomParamEncoder

11:05:04.211 [ERROR] i.g.a.ZincCompiler$ -         CustomParamEncoder.encode(paramString)

11:05:04.212 [ERROR] i.g.a.ZincCompiler$ -         ^

11:05:04.414 [ERROR] i.g.a.ZincCompiler$ - one error found

Compilation failed


Both files are in the same package. I'm doing my text editing in IntelliJ, and the IntelliJ auto-complete recognizes the class as being present just fine. But when I actually run it through gatling.sh it doesn't recognize the symbol.


Has anyone else done something similar to this, or have any ideas for how to get the gatling compiler to recognize the java file? Is it possible it's set to only consider scala files it finds in user-files, but not java files? Any help would be much appreciated.


Thanks,

Zack

Stéphane Landelle

unread,
Oct 28, 2014, 12:15:11 PM10/28/14
to gat...@googlegroups.com
adding an import of this class + adding the library in the classpath would probably help :)

--
You received this message because you are subscribed to the Google Groups "Gatling User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to gatling+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Zack Garbowitz

unread,
Oct 28, 2014, 1:33:25 PM10/28/14
to gat...@googlegroups.com
Since they are in the same package, shouldn't adding an import be unnecessary? When I do add the import, it throws a second error saying 'object CustomParamEncoder' is not a member of package 'example'.

Also, doesn't the gatling.sh script add $GATLING_HOME/user-files to the class path automatically? I tried also adding $GATLING_HOME/user-files/simulations/example to the class path, but that made no difference.

As far as I can tell, the Java class is in the correct location, package, has permissions, but at run time it just isn't being seen.

Stéphane Landelle

unread,
Oct 28, 2014, 4:00:10 PM10/28/14
to gat...@googlegroups.com

Since they are in the same package, shouldn't adding an import be unnecessary? When I do add the import, it throws a second error saying 'object CustomParamEncoder' is not a member of package 'example'.

So your library isn't in the classpath.
 

Also, doesn't the gatling.sh script add $GATLING_HOME/user-files to the class path automatically? I tried also adding $GATLING_HOME/user-files/simulations/example to the class path, but that made no difference.

No, user-files isn't in the classpath. lib and conf are.

Reply all
Reply to author
Forward
0 new messages