Как я буду использовать Таймер формирования пропускной способности из Jmeter API, используя код Java? - PullRequest
0 голосов
/ 12 февраля 2019

Я хочу использовать таймер формирования пропускной способности, используя JMeter API, в своем коде Java.

Моя цель - использовать в моем коде программный таймер формирования пропускной способности через JMeter API.

У меня естьуже ссылался на файл класса с именем VariableThroughputTimer.java, добавив его в исходный каталог папки моего проекта.

Вот часть моего фрагмента кода:

   //   VariableThroughputTimer
    VariableThroughputTimer timer = new VariableThroughputTimer();
    timer.setEnabled(true);
    timer.setName("VariableThroughputTimer");
    timer.setProperty("Start RPS", 1);
    timer.setProperty("End RPS", 1000);
    timer.setProperty("Duration", 60);
    timer.setComment("Table below sets request rate shcedule ant preview graph instantly shows effect of changes.");
    timer.setProperty(TestElement.TEST_CLASS, kg.apc.jmeter.vizualizers.CorrectedResultCollector.class.getName());
    timer.setProperty(TestElement.GUI_CLASS, kg.apc.jmeter.vizualizers.TransactionsPerSecondGui.class.getName());


    // Thread Group
    ThreadGroup threadGroup = new ThreadGroup();
    threadGroup.setName("Thread Group");
    threadGroup.setNumThreads(4);
    threadGroup.setRampUp(1);
    threadGroup.setDuration(1);;
    threadGroup.setSamplerController(loopController);
    threadGroup.setSamplerController(PublishController);
    threadGroup.setProperty(TestElement.TEST_CLASS, ThreadGroup.class.getName());
    threadGroup.setProperty(TestElement.GUI_CLASS, ThreadGroupGui.class.getName());

    // Test Plan
    TestPlan testPlan = new TestPlan("IOT_Jmeter");
    testPlan.setProperty(TestElement.TEST_CLASS, TestPlan.class.getName());
    testPlan.setProperty(TestElement.GUI_CLASS, TestPlanGui.class.getName());
    testPlan.setUserDefinedVariables((Arguments) new ArgumentsPanel().createTestElement());

    // HTTP Request Sampler and Header Manager
    HashTree httpRequestTree = new HashTree();
    httpRequestTree.add(mqttConnectSampler);
    httpRequestTree.add(mqttpubSampler);
    httpRequestTree.add(csvDataSet);
    httpRequestTree.add(timer);

Поэтому всякий раз, когда я пытаюсьвыполнить код.Он не выполняется.

Вот журналы из моей IDE затмения:

2019-02-12 16:13:28 [main] INFO  StandardJMeterEngine:453 - Starting ThreadGroup: 1 : Thread Group
2019-02-12 16:13:28 [main] INFO  StandardJMeterEngine:513 - Starting 4 threads for group Thread Group.
2019-02-12 16:13:28 [main] INFO  StandardJMeterEngine:523 - Thread will continue on error
2019-02-12 16:13:28 [main] INFO  ThreadGroup:222 - Starting thread group... number=1 threads=4 ramp-up=1 perThread=250.0 delayedStart=false
2019-02-12 16:13:28 [main] INFO  ThreadGroup:236 - Started thread group number 1
2019-02-12 16:13:28 [main] INFO  StandardJMeterEngine:464 - All thread groups have been started
2019-02-12 16:13:28 [Thread Group 1-1] INFO  JMeterThread:705 - Thread started: Thread Group 1-1
2019-02-12 16:13:28 [Thread Group 1-1] INFO  FileServer:265 - Stored: C:\Users\angshuman.basak\Downloads\apache-jmeter-5.0\csvDataNew.csv
2019-02-12 16:13:28 [Thread Group 1-1] INFO  VariableThroughputTimer:304 - No further RPS schedule, asking threads to stop...
2019-02-12 16:13:28 [Thread Group 1-1] INFO  VariableThroughputTimer:319 - Stopping gracefuly threads of Thread Group : Thread Group
2019-02-12 16:13:28 [Thread Group 1-1] INFO  JMeterThread:797 - Stopping: Thread Group 1-2
2019-02-12 16:13:28 [Thread Group 1-1] INFO  JMeterThread:797 - Stopping: Thread Group 1-3
2019-02-12 16:13:28 [Thread Group 1-1] INFO  JMeterThread:797 - Stopping: Thread Group 1-4
2019-02-12 16:13:28 [Thread Group 1-1] INFO  JMeterThread:797 - Stopping: Thread Group 1-1
2019-02-12 16:13:28 [Thread Group 1-1] WARN  VariableThroughputTimer:147 - No free threads available in current Thread Group Thread Group, made 0 samples/s for expected rps 1.0 samples/s, increase your number of threads
2019-02-12 16:13:28 [Thread Group 1-1] INFO  JMeterThread:324 - Thread finished: Thread Group 1-1
2019-02-12 16:13:29 [Thread Group 1-2] INFO  JMeterThread:705 - Thread started: Thread Group 1-2
2019-02-12 16:13:29 [Thread Group 1-2] INFO  JMeterThread:324 - Thread finished: Thread Group 1-2
2019-02-12 16:13:29 [Thread Group 1-3] INFO  JMeterThread:705 - Thread started: Thread Group 1-3
2019-02-12 16:13:29 [Thread Group 1-3] INFO  JMeterThread:324 - Thread finished: Thread Group 1-3
2019-02-12 16:13:29 [Thread Group 1-4] INFO  JMeterThread:705 - Thread started: Thread Group 1-4
2019-02-12 16:13:29 [Thread Group 1-4] INFO  JMeterThread:324 - Thread finished: Thread Group 1-4
2019-02-12 16:13:29 [main] INFO  StandardJMeterEngine:223 - Notifying test listeners of end of test
2019-02-12 16:13:29 [main] INFO  FileServer:485 - Close: C:\Users\angshuman.basak\Downloads\apache-jmeter-5.0\csvDataNew.csv
2019-02-12 16:13:29 [main] INFO  Summariser:327 - summary =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)
summary =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)

Приведенный выше Сумматор означает, что тест не был выполнен.Из приведенных выше журналов таймер переменной пропускной способности выбирает следующее:

2019-02-12 16:13:28 [Thread Group 1-1] INFO  VariableThroughputTimer:304 - No further RPS schedule, asking threads to stop...
2019-02-12 16:13:28 [Thread Group 1-1] INFO  VariableThroughputTimer:319 - Stopping gracefully threads of Thread Group: Thread Group
2019-02-12 16:13:28 [Thread Group 1-1] WARN  VariableThroughputTimer:147 - No free threads available in current Thread Group Thread Group, made 0 samples/s for expected rps 1.0 samples/s, increase your number of threads

Я хочу выполнить код с помощью таймера формирования пропускной способности программно.Я хотел бы иметь правильный код для VariableThroughputTimer, если моя реализация неверна или решает проблему выполнения.

Ваша помощь действительно ценится.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Ваша Группа потоков * Конфигурация 1002 * не соответствует вашей требуемой Пропускная способность .Поскольку требуемая пропускная способность составляет 1000 RPS, вам нужно, по крайней мере, 1000 threads, если время ответа составляет 1 second.Если время ответа 0.5 seconds, то вам нужно 500 threads для достижения 1000 RPS.Таким образом, вы не можете достичь 1000 RPS, используя только 4 threads.Ваше время отклика должно быть .004 seconds (4 мс), чтобы набрать 1000 RPS, используя только 4 потока, что является необычной вещью.

Вы установили продолжительность теста только на 1 секунду, что также неправильно в этом случае.

0 голосов
/ 12 февраля 2019

Как вы планируете достигать 1000 запросов в секунду только с 4 потоками?Это может быть возможно, только если у вас есть время отклика 4 миллисекунды, что маловероятно.

В соответствии с записью в журнале вы должны

Группа потоков Группа потоков, сделавшая 0 выборок / с для ожидаемых RPS 1,0 выборок / с, увеличить количество потоков `

также убедитесь, что сконфигурирован базовый Loop Controller для итерации forever .

В дальнейшем рассмотрим использование группы потоков параллелизма , которая может быть связана с таймером формирования пропускной способности с помощью функции Schedule Feedback , поэтому JMeter сможет запускать дополнительные потоки, еслитекущего количества недостаточно для достижения / поддержания целевой пропускной способности.Проверьте Использование плагинов JMeter для формирования пропускной способности таймера для получения более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...