├── JmeterWithJava
├── .classpath
├── .gitignore
├── .project
├── .settings
│ ├── org.eclipse.jdt.core.prefs
│ └── org.eclipse.m2e.core.prefs
├── pom.xml
└── src
│ └── main
│ └── java
│ └── com
│ └── quinnox
│ └── utils
│ ├── JmeterPropertyGenerator.java
│ └── PerformanceTester.java
└── README.md
/JmeterWithJava/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/JmeterWithJava/.gitignore:
--------------------------------------------------------------------------------
1 | /target/
2 |
--------------------------------------------------------------------------------
/JmeterWithJava/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | JmeterWithJava
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 | org.eclipse.m2e.core.maven2Builder
15 |
16 |
17 |
18 |
19 |
20 | org.eclipse.jdt.core.javanature
21 | org.eclipse.m2e.core.maven2Nature
22 |
23 |
24 |
--------------------------------------------------------------------------------
/JmeterWithJava/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
3 | org.eclipse.jdt.core.compiler.compliance=1.5
4 | org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
5 | org.eclipse.jdt.core.compiler.source=1.5
6 |
--------------------------------------------------------------------------------
/JmeterWithJava/.settings/org.eclipse.m2e.core.prefs:
--------------------------------------------------------------------------------
1 | activeProfiles=
2 | eclipse.preferences.version=1
3 | resolveWorkspaceProjects=true
4 | version=1
5 |
--------------------------------------------------------------------------------
/JmeterWithJava/pom.xml:
--------------------------------------------------------------------------------
1 |
3 | 4.0.0
4 | com.quinnox
5 | JmeterWithJava
6 | 0.0.1-SNAPSHOT
7 |
8 |
9 |
10 | org.apache.jmeter
11 | ApacheJMeter_core
12 | 4.0
13 |
14 |
15 |
16 | org.apache.jmeter
17 | ApacheJMeter_components
18 | 4.0
19 |
20 |
21 |
22 | org.apache.jmeter
23 | ApacheJMeter_http
24 | 4.0
25 |
26 |
27 |
28 | org.apache.jmeter
29 | jorphan
30 | 4.0
31 |
32 |
33 |
34 | org.apache.jmeter
35 | ApacheJMeter_java
36 | 4.0
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/JmeterWithJava/src/main/java/com/quinnox/utils/JmeterPropertyGenerator.java:
--------------------------------------------------------------------------------
1 | package com.quinnox.utils;
2 |
3 | import java.io.FileOutputStream;
4 |
5 | import org.apache.jmeter.config.Arguments;
6 | import org.apache.jmeter.config.gui.ArgumentsPanel;
7 | import org.apache.jmeter.control.LoopController;
8 | import org.apache.jmeter.control.gui.LoopControlPanel;
9 | import org.apache.jmeter.control.gui.TestPlanGui;
10 | import org.apache.jmeter.engine.StandardJMeterEngine;
11 | import org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui;
12 | import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy;
13 | import org.apache.jmeter.reporters.ResultCollector;
14 | import org.apache.jmeter.reporters.Summariser;
15 | import org.apache.jmeter.save.SaveService;
16 | import org.apache.jmeter.testelement.TestElement;
17 | import org.apache.jmeter.testelement.TestPlan;
18 | import org.apache.jmeter.threads.gui.ThreadGroupGui;
19 | import org.apache.jmeter.util.JMeterUtils;
20 | import org.apache.jorphan.collections.HashTree;
21 |
22 | public class JmeterPropertyGenerator {
23 | public static void main(String[] args) throws Exception {
24 | StandardJMeterEngine jmeter = new StandardJMeterEngine();
25 |
26 | // JMeter initialization (properties, log levels, locale, etc)
27 | JMeterUtils.setJMeterHome("D:\\Downloads\\apache-jmeter-5.2\\apache-jmeter-5.2");
28 | JMeterUtils.loadJMeterProperties("C:\\Users\\mohitk\\Downloads\\apache-jmeter-5.2.1_src\\apache-jmeter-5.2.1\\bin\\jmeter.properties");
29 | JMeterUtils.initLocale();
30 |
31 | // JMeter Test Plan, basically JOrphan HashTree
32 | HashTree testPlanTree = new HashTree();
33 |
34 | // First HTTP Sampler - open example.com
35 | HTTPSamplerProxy examplecomSampler = new HTTPSamplerProxy();
36 | examplecomSampler.setDomain("localhost");
37 | examplecomSampler.setPort(2222);
38 | examplecomSampler.setPath("/rest/student/service/getAllStudents");
39 | examplecomSampler.setMethod("GET");
40 | examplecomSampler.setName("open student api");
41 | examplecomSampler.setProperty(TestElement.TEST_CLASS, HTTPSamplerProxy.class.getName());
42 | examplecomSampler.setProperty(TestElement.GUI_CLASS, HttpTestSampleGui.class.getName());
43 |
44 | // Loop Controller
45 | LoopController loopController = new LoopController();
46 | loopController.setLoops(1);
47 | loopController.setFirst(true);
48 | loopController.setProperty(TestElement.TEST_CLASS, LoopController.class.getName());
49 | loopController.setProperty(TestElement.GUI_CLASS, LoopControlPanel.class.getName());
50 | loopController.initialize();
51 |
52 | // Thread Group
53 | org.apache.jmeter.threads.ThreadGroup threadGroup = new org.apache.jmeter.threads.ThreadGroup();
54 | threadGroup.setName("Example Thread Group");
55 | threadGroup.setNumThreads(1);
56 | threadGroup.setRampUp(1);
57 | threadGroup.setSamplerController(loopController);
58 | threadGroup.setProperty(TestElement.TEST_CLASS, ThreadGroup.class.getName());
59 | threadGroup.setProperty(TestElement.GUI_CLASS, ThreadGroupGui.class.getName());
60 |
61 | // Test Plan
62 | TestPlan testPlan = new TestPlan("Create JMeter Script From Java Code");
63 | testPlan.setProperty(TestElement.TEST_CLASS, TestPlan.class.getName());
64 | testPlan.setProperty(TestElement.GUI_CLASS, TestPlanGui.class.getName());
65 | testPlan.setUserDefinedVariables((Arguments) new ArgumentsPanel().createTestElement());
66 |
67 | // Construct Test Plan from previously initialized elements
68 | testPlanTree.add(testPlan);
69 | HashTree threadGroupHashTree = testPlanTree.add(testPlan, threadGroup);
70 | threadGroupHashTree.add(examplecomSampler);
71 |
72 | // save generated test plan to JMeter's .jmx file format
73 | SaveService.saveTree(testPlanTree, new FileOutputStream("D:\\test.jmx"));
74 |
75 | // add Summarizer output to get test progress in stdout like:
76 | // summary = 2 in 1.3s = 1.5/s Avg: 631 Min: 290 Max: 973 Err: 0 (0.00%)
77 | Summariser summer = null;
78 | String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");
79 | if (summariserName.length() > 0) {
80 | summer = new Summariser(summariserName);
81 | }
82 |
83 | // Store execution results into a .jtl file
84 | String logFile = "D:\\results2.jtl";
85 | ResultCollector logger = new ResultCollector(summer);
86 | logger.setFilename(logFile);
87 | testPlanTree.add(testPlanTree.getArray()[0], logger);
88 |
89 | // Run Test Plan
90 | jmeter.configure(testPlanTree);
91 | jmeter.run();
92 |
93 | System.out.println("Test plan created successfully...");
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/JmeterWithJava/src/main/java/com/quinnox/utils/PerformanceTester.java:
--------------------------------------------------------------------------------
1 | package com.quinnox.utils;
2 |
3 | import java.io.File;
4 |
5 | import org.apache.jmeter.engine.StandardJMeterEngine;
6 | import org.apache.jmeter.reporters.ResultCollector;
7 | import org.apache.jmeter.reporters.Summariser;
8 | import org.apache.jmeter.save.SaveService;
9 | import org.apache.jmeter.util.JMeterUtils;
10 | import org.apache.jorphan.collections.HashTree;
11 |
12 | public class PerformanceTester {
13 |
14 | /*
15 | * static { PlatformLogger logger =
16 | * PlatformLogger.getLogger("java.util.prefs");
17 | * logger.setLevel(Level.SEVERE); }
18 | */
19 |
20 | public static void main(String[] args) throws Exception {
21 | // Engine
22 | StandardJMeterEngine jm = new StandardJMeterEngine();
23 | // jmeter.properties
24 | JMeterUtils.loadJMeterProperties(
25 | "C:\\Users\\mohitk\\Downloads\\apache-jmeter-5.2.1_src\\apache-jmeter-5.2.1\\bin\\jmeter.properties");
26 | JMeterUtils.setJMeterHome("D:\\Downloads\\apache-jmeter-5.2\\apache-jmeter-5.2");
27 | JMeterUtils.initLocale();
28 | HashTree hashTree = new HashTree();
29 |
30 | SaveService.loadProperties();
31 |
32 | HashTree testPlanTree = SaveService.loadTree(new File("D:\\test.jmx"));
33 |
34 | Summariser summer = null;
35 | String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");
36 | if (summariserName.length() > 0) {
37 | summer = new Summariser(summariserName);
38 | }
39 |
40 | // Store execution results into a .jtl file
41 | String logFile = "D:\\newResult.jtl";
42 | ResultCollector logger = new ResultCollector(summer);
43 | logger.setFilename(logFile);
44 | testPlanTree.add(testPlanTree.getArray()[0], logger);
45 |
46 | // Run JMeter Test
47 | jm.configure(testPlanTree);
48 | jm.run();
49 | System.out.println();
50 |
51 | }
52 |
53 | /*
54 | * // HTTP Sampler HTTPSampler httpSampler = new HTTPSampler();
55 | * httpSampler.setDomain("www.google.com"); // httpSampler.setPort(80);
56 | * //httpSampler.setPath("/"); httpSampler.setMethod("GET");
57 | *
58 | * // Loop Controller TestElement loopCtrl = new LoopController();
59 | * ((LoopController) loopCtrl).setLoops(1); ((LoopController)
60 | * loopCtrl).addTestElement(httpSampler); ((LoopController)
61 | * loopCtrl).setFirst(true);
62 | *
63 | * // Thread Group SetupThreadGroup threadGroup = new SetupThreadGroup();
64 | * threadGroup.setNumThreads(1); threadGroup.setRampUp(1);
65 | * threadGroup.setSamplerController((LoopController) loopCtrl);
66 | *
67 | * // Test plan TestPlan testPlan = new TestPlan("MY TEST PLAN");
68 | *
69 | *
70 | * hashTree.add("testPlan", testPlan); hashTree.add("loopCtrl", loopCtrl);
71 | * hashTree.add("threadGroup", threadGroup); hashTree.add("httpSampler",
72 | * httpSampler);
73 | *
74 | * jm.configure(hashTree);
75 | *
76 | * jm.run();
77 | */
78 | }
79 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # jmeterJavaCode
2 | java code to programatically run a jmeter. Program to create a Jmeter test script from java code and to run that script using java code.
3 |
--------------------------------------------------------------------------------