Выполнение команд оболочки через beanshell в jmeter

Выполнение команд оболочки через beanshell в jmeter. Я хочу выполнять команды оболочки в препроцессоре beanshell в jmeter

Может ли кто-нибудь сказать, как это сделать.


person user1788294    schedule 01.07.2014    source источник


Ответы (2)


Beanshell — это JAVA (язык сценариев). Заявление ниже должно помочь.

Runtime.getRuntime().exec("COMMAND");
person vins    schedule 01.07.2014

Основываясь на ответе @vins, я создаю облачный тест ping, чтобы убедиться, что мой почтовый сервер доступен.

Кроме того, если вы хотите регистрировать вывод Runttime.getRuntime().exec("COMMAND");, используйте что-то подобное в вашем jmeter BeanShell Sampler:

// ********
// Ping the email server to verify it's accessable from the execution server
//
// Preconditions:
// custom variable is available named "emailServer" which contains the IP-Adress of the machine to ping
//
// ********

log.info(Thread.currentThread().getName()+": "+SampleLabel+": Ping email server: " + vars.get("emailServer"));

// Select the ping command depending on your machine type windows or unix machine. 
//String command = "ping -n 2 " + vars.get("emailServer");    // for windows
String command = "ping -c2 " + vars.get("emailServer");    // for unix

// Print the generated ping command
log.info(command);

// Create a process object and let this object execute the ping command
Process p = Runtime.getRuntime().exec(command);
p.waitFor();

log.info("Execution complete.");

// Read the output of the ping command and log it
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
StringBuilder logCommandOutput = new StringBuilder();
String line;
while( (line = in.readLine()) != null) {
  logCommandOutput.append(line);
}
in.close();
log.info("Output: " + logCommandOutput.toString());
person Bruno Bieri    schedule 23.12.2016
comment
@Dev Я добавил комментарии в ответ выше, что делает код. Если вам нужна более конкретная информация для определенной линии, дайте мне знать. - person Bruno Bieri; 23.02.2018
comment
Благодарю. Я пытался понять из части Process Object. Почему мы должны воспринимать это как процесс, а не просто как строку. Также как здесь работает BufferReader. Нужен ли нам StringBuilder,, можем ли мы распечатать вывод без него? - person sdgd; 23.02.2018
comment
Process я взял, чтобы показать результат в журнале. Я использовал этот сценарий в другой среде, где я хотел, чтобы выходные данные регистрировались. BufferReader нам нужно получить результат процесса, а StringBuilder просто удобно. Я уверен, что все это может быть достигнуто более простым способом. - person Bruno Bieri; 23.02.2018
comment
Спасибо за подробности Бруно! - person sdgd; 23.02.2018
comment
Добавление журнала помогло мне! - person Vikas; 22.04.2020