Я пытаюсь создать класс Java, который может вызывать REST API с помощью JMeter. Я делаю это, так как мне понадобится это для создания утилиты для какого-либо нагрузочного тестирования.
Я установил JMeter и, используя режим GUI, смог создать и запустить тест, который способен ударить мой API. Затем я взял пример кода, предложенный на многих веб-сайтах, и попытался запустить его.
Код указан ниже:
public class JMeterTestRunner {
public static void main(String[] argv) throws Exception {
//JMeter Engine
StandardJMeterEngine jmeter = new StandardJMeterEngine();
//JMeter initialization (properties, log levels, locale, etc)
JMeterUtils.loadJMeterProperties("/Users/something/apache-jmeter-5.2.1/bin/jmeter.properties");
JMeterUtils.initLogging();// you can comment this line out to see extra log messages of i.e. DEBUG level
JMeterUtils.initLocale();
// JMeter Test Plan, basic all u JOrphan HashTree
HashTree testPlanTree = new HashTree();
// HTTP Sampler
HTTPSampler httpSampler = new HTTPSampler();
httpSampler.setDomain("localhost");
httpSampler.setPort(8405);
httpSampler.setPath("/some_path");
httpSampler.setMethod("GET");
// Loop Controller
LoopController loopController = new LoopController();
loopController.setLoops(1);
loopController.addTestElement(httpSampler);
loopController.setFirst(true);
loopController.initialize();
// Thread Group
ThreadGroup threadGroup = new ThreadGroup();
threadGroup.setNumThreads(1);
threadGroup.setRampUp(1);
threadGroup.setSamplerController(loopController);
// Test Plan
TestPlan testPlan = new TestPlan("Create JMeter Script From Java Code");
// Construct Test Plan from previously initialized elements
testPlanTree.add("testPlan", testPlan);
testPlanTree.add("loopController", loopController);
testPlanTree.add("threadGroup", threadGroup);
testPlanTree.add("httpSampler", httpSampler);
// Run Test Plan
jmeter.configure(testPlanTree);
jmeter.run();
}
}
Что теперь происходит, так это работает нормально, но конечная точка API не получает удар. Я отладил это, и конфигурация Jmeter выглядит отлично. Вывод, который я получаю, упомянут ниже:
2020-04-10 01:11:36 [main] WARN JMeterUtils:732 - Exception 'null' occurred when fetching boolean property:'server.exitaftertest', defaulting to: false
2020-04-10 01:11:36 [main] WARN JMeterUtils:732 - Exception 'null' occurred when fetching boolean property:'jmeterengine.remote.system.exit', defaulting to: false
2020-04-10 01:11:36 [main] WARN JMeterUtils:732 - Exception 'null' occurred when fetching boolean property:'jmeterengine.stopfail.system.exit', defaulting to: true
2020-04-10 01:11:36 [main] WARN JMeterUtils:732 - Exception 'null' occurred when fetching boolean property:'jmeterengine.force.system.exit', defaulting to: false
2020-04-10 01:11:36 [main] INFO JMeterUtils:365 - Setting Locale to en_IN
2020-04-10 01:11:36 [main] INFO HTTPSamplerBase:1465 - Parser for text/html is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2020-04-10 01:11:36 [main] INFO HTTPSamplerBase:1465 - Parser for application/xhtml+xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2020-04-10 01:11:36 [main] INFO HTTPSamplerBase:1465 - Parser for application/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2020-04-10 01:11:36 [main] INFO HTTPSamplerBase:1465 - Parser for text/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2020-04-10 01:11:36 [main] INFO HTTPSamplerBase:1465 - Parser for text/vnd.wap.wml is org.apache.jmeter.protocol.http.parser.RegexpHTMLParser
2020-04-10 01:11:36 [main] INFO HTTPSamplerBase:1465 - Parser for text/css is org.apache.jmeter.protocol.http.parser.CssParser
2020-04-10 01:11:36 [main] INFO HTTPJavaImpl:71 - Maximum connection retries = 0
2020-04-10 01:11:36 [main] INFO StandardJMeterEngine:351 - Running the test!
2020-04-10 01:11:36 [main] INFO SampleEvent:64 - List of sample_variables: []
2020-04-10 01:11:36 [main] INFO SampleEvent:64 - List of sample_variables: []
2020-04-10 01:11:36 [main] INFO CompoundVariable:66 - Note: Function class names must contain the string: '.functions.'
2020-04-10 01:11:36 [main] INFO CompoundVariable:69 - Note: Function class names must not contain the string: '.gui.'
2020-04-10 01:11:36 [main] WARN CompoundVariable:83 - Did not find any functions
2020-04-10 01:11:36 [main] INFO StandardJMeterEngine:450 - Starting ThreadGroup: 1 :
2020-04-10 01:11:36 [main] INFO StandardJMeterEngine:510 - Starting 1 threads for group .
2020-04-10 01:11:36 [main] INFO StandardJMeterEngine:520 - Thread will continue on error
2020-04-10 01:11:36 [main] INFO ThreadGroup:220 - Starting thread group... number=1 threads=1 ramp-up=1 delayedStart=false
2020-04-10 01:11:36 [main] INFO ThreadGroup:246 - Started thread group number 1
2020-04-10 01:11:36 [main] INFO StandardJMeterEngine:461 - All thread groups have been started
2020-04-10 01:11:36 [ 1-1] INFO JMeterThread:711 - Thread started: 1-1
2020-04-10 01:11:36 [ 1-1] INFO JMeterThread:299 - Thread is done: 1-1
2020-04-10 01:11:36 [ 1-1] INFO JMeterThread:328 - Thread finished: 1-1
2020-04-10 01:11:36 [main] INFO StandardJMeterEngine:214 - Notifying test listeners of end of test
2020-04-10 01:11:36 [main] INFO FileServer:87 - Default base='/Users/somepath'
Я сделал свою долю в поиске и попробовал много предложений, упомянутых в различных ссылках, таких как: Код API JMeter для запуска HttpSampler не работает
Но, похоже, это не решает и не решает мою проблему.
Я новичок в этом Jmeter, поэтому любая помощь будет приветствоваться. Заранее спасибо.