JMeter - избегайте резкого отключения потоков - PullRequest
1 голос
/ 06 апреля 2019

У меня есть testPlan с несколькими контроллерами транзакций (которые я назвал UserJourneys), и каждый из них состоит из нескольких сэмплеров (JourneySteps).

Проблема, с которой я сталкиваюсь, заключается в том, что после окончания тестаJmeter убивает все потоки и не учитывает, находятся ли они в середине UserJourney (контроллера транзакций) или нет.

На некоторых из этих UJ я делаю некоторые важные вещи, которые необходимо выполнить, прежде чем пользователь снова войдет в систему, в противном случае следующие итерации (новый тестовый запуск) завершатся неудачей.

Вопрос заключается в следующем:Есть ли способ сообщить JMeter, что ему нужно подождать, пока каждый поток достигнет конца своего потока / UJ / TransactionController, прежде чем его убить?

Заранее спасибо!

1 Ответ

1 голос
/ 07 апреля 2019

Это невозможно с версии 5.1.1, вы должны запросить улучшение по адресу:

Решение состоит в том, чтобы добавить в качестве первого ребенка Группа потоков a Действие управления потоком , содержащее препроцессор JSR223:

Configuration

JSR223PreProcessor будет содержать этот отличный код:

    import org.apache.jorphan.util.JMeterStopTestException;

    long startDate = vars["TESTSTART.MS"].toLong();
    long now = System.currentTimeMillis();
    String testDuration = Parameters;
    if ((now - startDate) >= testDuration.toLong()) {
        log.info("Test duration "+testDuration+" reached");
        throw new JMeterStopTestException("Test duration "+testDuration+"reached ");
    } else {
        log.info("Test duration "+testDuration+" not reached yet");
    }

и будет настроен так:

JSR223 PreProcessor configuration

Наконец, вы можете установитьсвойство testDuration в миллисекундах в командной строке с использованием:

-JtestDuration = 3600000

Если вы хотите узнать больше о JMeter и производительноститестирование этой книги может вам помочь.

...