├── 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 | --------------------------------------------------------------------------------