在jmeter中运行sh脚本

时间:2015-06-02 13:00:46

标签: bash jmeter

对于负载测试,我想在jmeter中运行测试之前随机化我的测试值。为此,我想使用这个bash脚本:

#! /bin/bash
cat data.dsv | shuf > randomdata.dsv

这应该用jmeter执行。我尝试使用BeanShell Sampler和这个命令(我使用这个命令总是找到正确的文件,无论我想在哪台机器上执行它):

execute(${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}${__BeanShell(File.separator,)}random.sh)

但我总是收到此错误消息:

ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval   In file: inline evaluation of: ``execute(/home/user/git/path/'' Encountered "( /" at line 1, column 8.

任何想法该怎么做或者是否有一些最佳实践我还没找到?

1 个答案:

答案 0 :(得分:5)

我建议改为使用OS Process Sampler,它应该更容易使用,例如:

OS Process Sampler Example Configuration

关于Beanshell方法,我们不需要在Beanshell采样器中使用__Beanshell函数,此外每次调用函数时都会创建Beanshell解释器实例,从而导致性能开销。您可以将代码放入采样器的“脚本”区域中作为

import org.apache.jmeter.services.FileServer;

StringBuilder command = new StringBuilder();
FileServer fileServer = FileServer.getFileServer();
command.append(fileServer.getBaseDir());
command.append(System.getProperty("file.separator"));
command.append("random.sh");
Process process = Runtime.getRuntime().exec(command.toString());
int returnValue = process.waitFor();
return String.valueOf(returnValue);

有关JMeter中Beanshell脚本的信息,请参阅How to use BeanShell: JMeter's favorite built-in component指南。