JSON не включается при запуске из Beanshell Jmeter

У нас есть команда CURL, которая в основном выводит статус выполнения на панель управления. Ниже представлена ​​команда с фиктивным URL-адресом.

Команда должна отправить на панель управления две информационные детали; info и info с содержимым Text is missing и Please check. Эта команда curl при выполнении из любого блока Linux работает правильно, и информация, отправленная в JSON, отображается, но когда мы пытаемся запустить ту же команду из Jmeter Beanshell, она выполняется успешно, но информация только в JSON не попадает на панель управления.

String command = "curl -X POST -d \"status=GREEN\" -d 'info={\"error\":[{\"info\":\"Text is missing\"},{\"info\":\"Please check.\"}]}' abc.com/api/run-dashboard/apikey=456655656";
    Process p = Runtime.getRuntime().exec(command);
    p.waitFor();
#to display the output-
    BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
    StringBuilder everything = new StringBuilder();
    String line;
    while( (line = in.readLine()) != null) 
    {
      everything.append(line);
    }
    in.close();
    log.info("OUTPUT: " + everything.toString());
    }

Мы пытались добавить дополнительный заголовок -H "Content-Type: application/json" в beanshell, но безуспешно.

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


person sdgd    schedule 26.02.2018    source источник


Ответы (1)


  1. Возможно, вам потребуется указать полный путь к curl утилите, например /usr/bin/curl
  2. Возможно, ваша команда завершилась с ошибкой, поэтому обязательно обработайте p.getErrorStream ()
  3. Имейте в виду, что начиная с JMeter 3.1 рекомендуется использовать элементы тестирования JSR223 и язык Groovy. для написания сценариев подумайте о переходе на него, поскольку производительность Beanshell может быть большим вопросительным знаком. Более того, вы сможете преобразовать свой код Beanshell во что-то вроде:

    def response = "curl -X POST -d \"status=GREEN\" -d 'info={\"error\":[{\"info\":\"Text is missing\"},{\"info\":\"Please check.\"}]}' http://example.com/api/run-dashboard/apikey=456655656".execute().text
    log.info(response)
    

    JMeter Groovy Curl

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

person Dmitri T    schedule 26.02.2018
comment
Спасибо за информацию. Я добавил то же самое в сэмплер JSR223, и он успешно выполнился, но данные JSON не отображаются на панели управления. та же самая команда при выполнении с компьютеров Linux запускается, а панель управления даже отображает информацию JSON. - person sdgd; 26.02.2018
comment
Я думаю, что вместо того, чтобы использовать полный путь для curl, который является linux, нам нужно предоставить путь curl для окон. - person sdgd; 26.02.2018