Using LiLa for Automated GUI Performance Testing

An interesting application of LiLa is to use it for automated GUI performance testing. A version of LiLa optimized for this kind of task can be downloaded from our LiLa page. To run an interactive application on top of LiLa, use the following Java command line arguments:

java -javaagent:[path]/LiLaAgent-2.2.jar="[options]" -Xbootclasspath/p:[path]/LiLaBootClasses-2.2.zip [-cp classpath] main class

For the purpose of automatic GUI testing we suggest options shown in the following line to be used with the corresponding values:

java -javaagent:[path]/LiLaAgent-2.2.jar="/eventThreshold=3000000 /longEpisodeThreshold=100000000 /outputClassCacheFile=./cache.lic /forceClassCacheRewrite /outputTraceDirectory=. /classCheck" -Xbootclasspath/p:[path]/LiLaBootClasses-2.2.zip [-cp classpath] main class

The LiLaAgent provides the following options:

/classCheck
Enables class version check during the instrumentation process. Use this option if the version of a cached class and the one to be loaded is possibly different
/inputClassCache=path
Path and name of the existing class instrumentation cache file to be used. If the option is not used then the class instrumentation cache will go into your home folder (if /outputClassCache is not used as well)
/outputClassCache=path
Path and name of the new class instrumentation cache. If the option is not used then new classes will be appended to the file specified by /inputClassCache option
/forceClassCacheRewrite
Forces writing over the file specified with /outputClassCache option
/outputTraceDirectory=path
A directory name for all trace files
/eventThreshold=time
Sets the minimum event latency in nanoseconds to be shown in a trace. Default latency is zero (in our example above related to automatic GUI testing, it is set to 3ms)
/longEpisodeThreshold=time
Sets the minimum episode latency in nanoseconds which will classify it as really long. This will cause a stack dump into a trace file at each occurrance of such an episode. Default latency is 250ms (in our example above related to automatic GUI testing, it is set to 100ms)
/excludeListeners
Excludes the instrumentation of all listener calls
/excludePaints
Excludes the instrumentation of all paint calls
/excludeNatives
Excludes the instrumentation of all native calls

Be aware that if you want to use an existing class cache created in the run when listener calls were not excluded, then you have to create and use a new one if you want to exclude them.