Обработка нескольких значений в экстракторе регулярных выражений, когда количество выводов меняется - PullRequest
0 голосов
/ 28 июня 2019

Я использую средство извлечения регулярных выражений в jmeter, чтобы получить значение, которое я передам в следующем http-запросе.

Полученное значение, скажем, request_1, request_2 и т. Д. общее количество запросов, которые были получены, варьируется. Т.е. общее количество для вывода экстрактора регулярного выражения варьируется.

В запросе http на основе значения счетчика _matchnbr мне нужно выполнить цикл и назначить различные запросы (request_1 или request_2 и т. Д.) В запросе http для каждой итерации. Этот http-запрос также будет находиться в отдельной группе потоков.

  1. Пожалуйста, помогите с созданием правильного кода для обработки этой логики цикла. Я не хочу использовать контроллер цикла for, поскольку я сталкиваюсь с ошибкой переполнения стека при работе в режиме без графического интерфейса пользователя.

  2. Посоветуйте, пожалуйста, как сделать вывод из экстрактора регулярных выражений доступным для http-запроса в отдельной группе потоков.

1 Ответ

0 голосов
/ 01 июля 2019

Чтобы передать выходные данные экстрактора регулярных выражений из одной группы потоков в другую, вам необходимо:

  1. Преобразовать соответствующие переменные JMeter в свойства JMeterв первой группе тем.Вы можете сделать это, добавив JSR223 Sampler в конец первой группы потоков и использовать следующий код:

    SampleResult.setIgnore()
    vars.entrySet().each { var ->
        if (var.getKey().startsWith("foo")) {
             props.put('user-' + ctx.getThreadNum() + '-' + var.getKey(), var.getValue())
        }
    }
    
  2. Во второй группе потоков вынеобходимо выполнить противоположную операцию, преобразуйте свойства JMeter в переменные JMeter обратно:

    SampleResult.setIgnore()
    props.entrySet().each { prop ->
        if (prop.getKey().startsWith('user-' + ctx.getThreadNum() + '-foo')) {
            vars.put(prop.getKey().substring(prop.getKey().lastIndexOf('-') + 1), prop.getValue())
        }
    }
    
  3. Замените foo исходным именем ссылки на переменную JMeter

В приведенном выше сценарии:

  • vars - обозначает JMeterVariables экземпляр класса, обеспечивает программный доступ на чтение / запись ко всем переменным JMeter в области действия
  • props - Свойства JMeter, в основном, экземпляр java.util.Properties

извлечение 8 лучших Java-классов JMeter, которые вы должны использовать с Groovy статья для получения дополнительной информации выше и других JMeter API сокращений.

PS Лучше использовать ForEach Controller для итерации результатов экстрактора регулярных выражений.

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