On 21 January 2015 at 19:57, jmeterdev <[email protected]> wrote:
> Hello all,
>
> What I would like to know is if there is a way to use the Java API to
> generate JMX files.
JMeter does not have a published API for creating JMX files.
> Although these files are XML, we do not want to have to
> re-code an application that produces 100 JMX files. This could happen if
> there are changes in the JMeter code...
JMX files are upwards compatible. The intention is to ensure that
there are no breaking changes in the JMX files when new features are
added.
However of course to use any new feature the JMX file will need to be updated.
But code fixes do not affect the JMX format.
> I have a Java source file that tries to do this - however there is something
> unclear about his code. Specifically why does he need to SET properties
> TEST_CLASS, GUI_CLASS??? Perhaps his solution is NOT the correct one? Also
> is using the Java API to produce JMX file okay (supported)?
No, it is not supported.
Obviously JMeter uses Java to create the JMX files but this is a
multi-stage process: the GUI creates the test plan entries and
populates the properties.
There is code to save the test plan and properties as a JMX file.
> package com.test;
>
> import java.io.FileOutputStream;
>
> import org.apache.jmeter.control.LoopController;
> import org.apache.jmeter.control.gui.LoopControlPanel;
> import org.apache.jmeter.control.gui.TestPlanGui;
> import org.apache.jmeter.protocol.java.control.gui.JavaTestSamplerGui;
> import org.apache.jmeter.protocol.java.sampler.JavaSampler;
> import org.apache.jmeter.save.SaveService;
> import org.apache.jmeter.testelement.TestElement;
> import org.apache.jmeter.testelement.TestPlan;
> import org.apache.jmeter.threads.ThreadGroup;
> import org.apache.jmeter.threads.gui.ThreadGroupGui;
> import org.apache.jmeter.util.JMeterUtils;
> import org.apache.jorphan.collections.HashTree;
>
> public class JMXCreator {
> public static void main(String[] argv) throws Exception {
> // Initialize the configuration variables
> String jmeterHome = "D:\\apache-jmeter-2.11";
> JMeterUtils.setJMeterHome(jmeterHome);
> JMeterUtils.loadJMeterProperties(JMeterUtils.getJMeterBinDir() +
> "\\jmeter.properties");
> JMeterUtils.initLogging();
> JMeterUtils.initLocale();
>
> // TestPlan
> TestPlan testPlan = new TestPlan();
> testPlan.setName("Test Plan");
> testPlan.setEnabled(true);
> testPlan.setProperty(TestElement.TEST_CLASS,
> TestPlan.class.getName());
> testPlan.setProperty(TestElement.GUI_CLASS,
> TestPlanGui.class.getName());
>
> // ThreadGroup controller
> LoopController loopController = new LoopController();
> loopController.setEnabled(true);
> loopController.setLoops(5);
> loopController.setProperty(TestElement.TEST_CLASS,
> LoopController.class.getName());
> loopController.setProperty(TestElement.GUI_CLASS,
> LoopControlPanel.class.getName());
>
> // ThreadGroup
> ThreadGroup threadGroup = new ThreadGroup();
> threadGroup.setName("Thread Group");
> threadGroup.setEnabled(true);
> threadGroup.setSamplerController(loopController);
> threadGroup.setNumThreads(5);
> threadGroup.setRampUp(10);
> threadGroup.setProperty(TestElement.TEST_CLASS,
> ThreadGroup.class.getName());
> threadGroup.setProperty(TestElement.GUI_CLASS,
> ThreadGroupGui.class.getName());
>
> // JavaSampler
> JavaSampler javaSampler = new JavaSampler();
> javaSampler.setClassname("my.example.sampler");
> javaSampler.setEnabled(true);
> javaSampler.setProperty(TestElement.TEST_CLASS,
> JavaSampler.class.getName());
> javaSampler.setProperty(TestElement.GUI_CLASS,
> JavaTestSamplerGui.class.getName());
>
> // Create TestPlan hash tree
> HashTree testPlanHashTree = new HashTree();
> testPlanHashTree.add(testPlan);
>
> // Add ThreadGroup to TestPlan hash tree
> HashTree threadGroupHashTree = new HashTree();
> threadGroupHashTree = testPlanHashTree.add(testPlan, threadGroup);
>
> // Add Java Sampler to ThreadGroup hash tree
> HashTree javaSamplerHashTree = new HashTree();
> javaSamplerHashTree = threadGroupHashTree.add(javaSampler);
>
> // Save to jmx file
> SaveService.saveTree(testPlanHashTree, new
> FileOutputStream("c:\\test.jmx"));
> }
> }
>
> Anyone care to comment?
>
> P.S.: Sorry to post this message TWICE I had a hard time subscribing to the
> User mailing list and it said my old message was not yet approved... So I
> was unsure if it would EVER get approved!
>
> Sincerely,
>
>
> Kristopher
>
>
>
> --
> View this message in context:
> http://jmeter.512774.n5.nabble.com/Using-Java-API-to-generate-JMX-files-tp5721657.html
> Sent from the JMeter - User mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]