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.