Building JMeter plug-in with Eclipse
\[http://www.eclipse.org Eclipse\] is a very popular Java development environment. Wiki Markup
Targetted to Eclipse 3.1 and JMeter 2.1 trunk version. JMeter isn't designed to be edited and build from Eclipse IDE (JMeter uses Ant build file and complex path/jar structure with optional dependencies), so some work has to be done before we get wheels running.
NOTE: the JMeter trunk code This page is very out of date - the current branch is rel-2-2. Also, there is an eclipse.classpath which can be used to set up the appropriate exclusions etc - sebb
Building JMeter from sources with Eclipse
Building JMeter from sources with Eclipse
It's useful to It's useful to have JMeter Eclipse project in hand, since you need to do debugging and possible bug fixing in JMeter itself.
- Check out JMeter trunk from Subversion
- Get Subclipse plug-in for Eclipse http://subclipse.tigris.org/
- Check out http://svn.apache.org/repos/asf/jakarta/jmeter/rel-2-2 as jmeter-trunk Java project
- Trunk might not be the latest version. Ask from JMeter mailing list which is the active development branch of JMeter.
...
- Set working directory to bin/ in your project
- JMeter is hard coded to look up jmeter.properties in the launch folder
- E.g. ${workspace_loc:SIPPerformanceStresser/bin}
- Copy lib/ from jmeter-trunk to your plug-in project root
- JMeter is hard coded to look up jars from ../lib
- Main class: org.apache.jmeter.NewDriver
Creating components
JMeter 2.x uses its internal [TestBean]-framework for adding new components. For more information, see \[:DeveloperManual/TestBeanTutorial:Tutorial - Making a JMeter TestBean\], \[http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/extending/jmeter_tutorial.pdf?view=log&pathrev=325123 this PDF\] and JMeter source -framework for adding new components. For more information, see Tutorial - Making a JMeter TestBean, this PDF and JMeter source code Wiki Markup
For each component you need
Wiki Markup An element class which interits from \[TestElement, ConfigurationElement, XXXElement\] and implements [TestBean] interface. [TestBean] interface marks classes which JMeter plug-in class loader loads automatically. \\
2. Each TestBean class needs BeanInfoSupport class whichs describes the properties of the element class. This class name must be MyTestElement + BeanInfo, e.g. MyTestElementBeanInfo, or the class loader doesn't find it.
...
Java source fi/xxx/jmeter/sip/core/SIPReceiverBeanInfoSupportSIPReceiverBeanInfo
No Format |
---|
package fi.xxx.jmeter.sip.core; import java.beans.PropertyDescriptor; import org.apache.jmeter.config.CSVDataSet; import org.apache.jmeter.testbeans.BeanInfoSupport; public class SIPReceiverBeanInfo extends BeanInfoSupport { public SIPReceiverBeanInfo() { super(SIPReceiver.class); createPropertyGroup("sip_receiver", new String[] { "filename", "variableNames", "delimiter" }); PropertyDescriptor p = property("filename"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); p.setValue(NOT_EXPRESSION, Boolean.TRUE); p = property("variableNames"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); p.setValue(NOT_EXPRESSION, Boolean.TRUE); p = property("delimiter"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ","); p.setValue(NOT_EXPRESSION, Boolean.TRUE); } } |
Properties file fi/xxx/jmeter/sip/core/SIPreceiverSIPreceiverResources.properties
No Format |
---|
displayName=SIP Receiver sip_receiver.displayName=Configure SIP receiver filename.displayName=Filename filename.shortDescription=Name of the file (within your supporting file directory) that holds cvs data variableNames.displayName=Variable Names (comma-delimited) variableNames.shortDescription=List your variable names in order to match the order of columns in your csv data. Separate by commas. delimiter.displayName=Delimiter (use '\\t' for tab) delimiter.shortDescription=Enter the delimiter ('\\t' for tab) |
...
If widget labels are not read from resouces file, your the properties file of your component has a wrong filename