Jmeter не запускает HttpSamplerProxy

Я запускаю это с ядром jmeter и jmeter http версии 5.3. Я не понимаю, почему сэмплер не срабатывает. Я новичок в использовании jmeter таким образом и не совсем уверен, как все это работает. Когда код запускается, у меня нет данных запроса в файле jtl.


        //JMeter initialization (properties, log levels, locale, etc)
        JMeterUtils.loadJMeterProperties(System.getenv("JMETER_HOME") + "/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("example.com");
        httpSampler.setPort(80);
        httpSampler.setPath("/");
        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();

person Gereth Dittrick    schedule 26.08.2020    source источник


Ответы (1)


Прежде всего, это код:

testPlanTree.add("testPlan", testPlan);
testPlanTree.add("loopController", loopController);
testPlanTree.add("threadGroup", threadGroup);
testPlanTree.add("httpSampler", httpSampler);

необходимо заменить на

testPlanTree.add(testPlan);
HashTree threadGroupHashTree = testPlanTree.add(testPlan, threadGroup);
threadGroupHashTree.add(httpSampler);

Я также не вижу, где вы сохраняете результаты в .jtl, вам нужно добавить ResultCollector вот так:

Summariser summer = null;
String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");
if (summariserName.length() > 0) {
    summer = new Summariser(summariserName);
}


String logFile = "/path/to/result.jtl";
ResultCollector logger = new ResultCollector(summer);
logger.setFilename(logFile);
testPlanTree.add(testPlanTree.getArray()[0], logger); 

перед jmeter.configure(testPlanTree); строкой

В целом создание тестов JMeter с использованием API не очень поддерживается, и нет никакой гарантии, что код будет работать после следующего выпуска JMeter, поэтому я бы предпочел использовать сторонние параметры, такие как Taurus или jmeter-java-dsl

Однако, если по какой-то причине вы хотите продолжить, вы можете найти несколько примеров в Пять способов запустить тест JMeter без использования графического интерфейса JMeter и в статье репозиторий jmeter-from-code

person Dmitri T    schedule 27.08.2020