Hi folks,

I've been recently working on a project where we had to load test a
client-server application where interaction between the client (a Swing
app) and the server is via RMI. To that end, I've gotten clearance on
releasing the code to allow JMeter to record RMI calls as well as play
them back.

The code itself is self-contained, and only requires a JMeter binary
release (and not the source), and Ant to build.

Source code is hosted at GitHub at:
  git://github.com/jmibanez/jmeter-rmi-plugin.git

Currently, I don't package release tarballs, so you'll have to clone the
app from the above URL via git.

To use, build the JAR file via the 'jar' target, copy the built JAR file
to lib/ext inside your JMeter installation, and then copy any required
JAR files that your RMI classes will need to lib inside your JMeter
installation.

Features:

  * Basic RMI proxy. To capture RMI method calls for a particular
    object, add the "RMI Proxy" element to the workbench, point the
    proxy to the actual server's RMI name, and then point your client
    application to the host and port of the proxy. The proxy will bind
    the same object name. There are no changes needed on the server end.

  * Basic RMI sampler. The sampler depends on a BeanShell preprocessor
    to populate the argument list for each method. Methods are named as
    'methodname:argument_list'. You also have to add an "RMI Remote
    Object Config" element to the thread group, which contains the
    configuration needed to point the samplers to the proper RMI object.

Current limitations

  * Currently, the RMI Object Config element can only handle one remote
    object (not multiple RMI objects) in one test plan.

  * If an exception is thrown by a remote method, the RMI sampler treats
    that as a sample failure, so methods which use exceptions to signal
    non-fatal error conditions (e.g. invalid input) will be treated as a
    sample failure.

  * The element that the RMI proxy attaches samplers to is not
    configurable, and the RMI proxy will use the first Recording
    Controller in the test plan (or the Workbench if no Recording
    Controllers are found).

  * The RMI proxy uses introspection and reflection to build the
    BeanShell preprocessor script to populate RMI sampler method
    arguments. If the objects exposed via RMI do not follow JavaBean
    naming conventions or don't have public fields (!!), you will need
    to edit the preprocessor script by hand to fix this.


If you have any questions about the plugin, please feel free to email
me.

Thanks,
-- 
JM Ibanez
Software Architect
Orange & Bronze Software Labs, Ltd. Co.

[email protected]
http://www.orangeandbronze.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to