我有一些批量数据操作脚本,支持小型企业网站.
这些脚本是Perl,Java和存储过程的"老鼠巢",它们按计划运行,以根据各种源和算法更新数据.
我想摆脱Perl,这样我至少可以通过在开始到结束时在JVM管理的数据库连接中包含整个进程来利用事务管理.
我应该利用哪种Java动态/脚本语言来满足以下条件:
我希望我的标准足够清楚,这不会被标记为主观问题.
对我来说,这绝对是一个编程问题.我认为所有这些语言都只是"有用的java库".
谢谢!
我正在使用Apache JMeter 3.1,在我的测试套件中,我有一个BeanShell PreProcessor.当我运行Log Viewer脚本时,我可以看到bean shell脚本中存在错误.但错误信息非常有限,我怎样才能得到完整的错误?
例如,我在中看到的错误Log Viewer如下,
ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``// Following is a sample for input // "abc.org/def/xyz . . . ''
有没有办法可以检索完整的错误?
有没有办法从jmeter执行java类?我已经用maven程序集打包了我的类,并将其放在JMETER_HOME的lib文件夹中。然后我在测试用例中创建了 BSF Listener 并写道:
import my.package.name.App;
my.package.name.App app = new my.package.name.App("argument1", "argument2");
Run Code Online (Sandbox Code Playgroud)
是否有另一种方法来执行java类或其他可能使用java -jar直接调用jar的方法,这个类基本上从较小的文件创建一个大文件,这些位置由jmeter提供,因此需要将其包含在测试中,因为它是流量的一部分。
我们的测试计划中有7个线程组:
Thread group 1
Thread group 2
Thread group 3
Thread group 4
Thread group 5
Thread group 6
Thread group 7
Run Code Online (Sandbox Code Playgroud)
当线程组 1 完成时,我需要在线程组 2 启动之前添加延迟。我考虑过在每个线程组中添加启动延迟(秒),或者添加一个包含 Thread.sleep(60); 的 beanshell 例如。哪种方法是最好的?
performance multithreading jmeter beanshell performance-testing
是否可以在BeanShell PreProcessor 中停止线程或强制失败?我尝试从ThreadGroup类和其他一些类访问“stop()”函数/方法,但我不确定我做得对,或者是否可能。
我想强制我的测试在我的BeanShell 预处理器中停止,如果我的脚本中的这个特定 if 语句导致 TRUE...这可能吗?我确实阅读了一些“Failure”和“FailureMessage”函数,但不确定使用这些函数的最终结果是什么。
任何想法或建议将不胜感激!
提前致谢,
马特
我正在尝试在 beanshell 中为 jmeter 编写一个脚本,通过它我可以获得机器的 IP 地址(使用ipconfig命令并仅从输出中提取 IP 地址)?
以下代码仅给出需要传递给 jmeter 的请求的 IP。
String IP = InetAddress.getByName(prev.getURL().getHost()).getHostAddress();
vars.put("IP", IP);
Run Code Online (Sandbox Code Playgroud)
任何人都可以指导我吗?
如何生成时间戳并将其放入jmeter中的变量中?这样变量就可以在URL中传递.
我正在尝试从 S3 存储桶获取文件作为 JMeter 测试的设置线程组的一部分,并且 JSR223 采样器中有以下 Groovy 脚本:
import java.io.IOException
import java.io.InputStream
import java.util.Properties
import com.amazonaws.services.s3.AmazonS3
import com.amazonaws.services.s3.AmazonS3ClientBuilder
import com.amazonaws.services.s3.model.GetObjectRequest
import com.amazonaws.services.s3.model.S3Object
import com.amazonaws.auth.BasicAWSCredentials
import com.amazonaws.auth.AWSStaticCredentialsProvider
import com.amazonaws.services.s3.S3CredentialsProviderChain
def awsAccessKey = "my_key"
def awsSecretAccessKey = "my_secret_key"
System.setProperty("aws.accessKeyId", awsAccessKey)
System.setProperty("aws.secretKey", awsSecretAccessKey)
def awsCreds = new BasicAWSCredentials(awsAccessKey, awsSecretAccessKey)
def s3Client = AmazonS3ClientBuilder.standard()
.withRegion("us-west-2")
.build()
def s3Object = s3Client.getObject(new GetObjectRequest("bucket-name", "filename"))
def is = s3Object.getObjectContent()
Run Code Online (Sandbox Code Playgroud)
当我使用 .withCredentials(awsCreds) 和设置系统属性时,代码都会抛出以下内容:
java.lang.NoClassDefFoundError: Could not initialize class com.amazonaws.services.s3.S3CredentialsProviderChain
Run Code Online (Sandbox Code Playgroud)
我还将相同的代码转换为以下 Beanshell Sampler:
import java.io.IOException;
import java.io.InputStream;
import …Run Code Online (Sandbox Code Playgroud) 我正在尝试读取包含超过 500 行的 csv 文件,每一行都将作为对 API 的请求。现在我的问题是一些参数有空字符串,我想设置一个条件,以防参数返回空字符串,然后在点击 API 之前从请求正文中删除该参数
下面是我的json
{
"body": {
"Id1": "${Id1}",
"addressId": "${addressId}",
"languageCode": "${languageCode}",
"tempId": "${tempId}"
}
Run Code Online (Sandbox Code Playgroud)
现在在阅读 csv 后,我在我的请求正文中得到以下值
{
"body": {
"Id1": "1",
"addressId": "1233",
"languageCode": "E",
"tempId": ""
}
Run Code Online (Sandbox Code Playgroud)
如您所见, tempId 具有空字符串。现在使用 bean-shell 预处理器我试图删除它但没有运气
Object requestBody = sampler.getArguments().getArgument(0).getValue();
if (requestBody.get("tempId").equals("")){
sampler.getArguments.removeArgument("tempId");
}
Run Code Online (Sandbox Code Playgroud)
当我查看结果树时,我没有看到 tempId 从请求中删除。我将不胜感激任何帮助