Вызов функции внутри другой функции не оценивается [JMeter]

Я использую вызов функции внутри другой функции в Препроцессор JSR223

  1. Получение тела запроса из родительского пробоотборника HTTP

    String requestBody = sampler.getArguments().getArgument(0).getValue();
    log.info("Request body is : " + requestBody);
    
  2. Значение правильно обрабатывается в функции __V

    log.info(${__V(requestBody)});
    
  3. Та же функция __V не оценивается внутри функции MD5

    String md5hash = "${__MD5(${__V(requestBody)},)}";
    log.info("md5hash is : " + md5hash);
    
  4. Журнал JMeter приведен ниже:

    2022-03-17 15:10:01,135 INFO o.a.j.m.J.JSR223 PreProcessor: Request body is : {
        "contact":"1234567890"
    }
    2022-03-17 15:10:01,135 INFO o.a.j.m.J.JSR223 PreProcessor: {
        "contact":"1234567890"
    }
    2022-03-17 15:10:01,135 INFO o.a.j.m.J.JSR223 PreProcessor: md5hash is : 
    1be38aa366c4b7daef5e4b527902a97b
    

Хэш MD5, сгенерированный на шаге 4, т. е. 1be38aa366c4b7daef5e4b527902a97b представляет собой текст запростело. Я хочу, чтобы MD5 генерировался для переменной запростело.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
26
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Не встраивайте Функции или переменные JMeter в скрипты Groovy в соответствии с документацией JSR223 Sampler:

The JSR223 test elements have a feature (compilation) that can significantly increase performance.

When using this feature, ensure your script code does not use JMeter variables or JMeter function calls directly in script code as caching would only cache first replacement. Instead use script parameters.

Чтобы сгенерировать контрольную сумму MD5 переменной requestBody, используйте следующий код:

def md5hash = vars.get('requestBody').md5()

Дополнительная информация о сценариях Groovy в JMeter: Apache Groovy — зачем и как его использовать

Привет @Dmitri, вышеуказанная функция не возвращает правильное значение MD5, например. тело моего запроса {"contact":"9876543210"}. Правильное хэш-значение MD5 — a73602753fe29e781aebc24a14d6e203, но функция md5 возвращает значение как 904c7a176f07435919ac6a7a08662166.

SAIR 18.03.2022 11:26

Эта функция возвращает правильную контрольную сумму md5 для значения переменной requestBody, если контрольная сумма отличается от ожидаемой, вам нужно повторно посетить место, где вы создаете/назначаете эту переменную. Его значение можно проверить с помощью Комбинация Debug Sampler и View Results Tree Listener

Dmitri T 18.03.2022 11:30

Теперь я не использую функции внутри семплера JSR223, а вместо этого использую функцию .md5().

SAIR 22.03.2022 12:09

Другие вопросы по теме