标签: beanshell

我应该使用Jython,JRuby,Beanshell,Groovy,Rhino,还是用于这个小任务?

我有一些批量数据操作脚本,支持小型企业网站.

这些脚本是Perl,Java和存储过程的"老鼠巢",它们按计划运行,以根据各种源和算法更新数据.

我想摆脱Perl,这样我至少可以通过在开始到结束时在JVM管理的数据库连接中包含整个进程来利用事务管理.

我应该利用哪种Java动态/脚本语言来满足以下条件:

  • 通过提供类似的表达能力,I/O,正则表达式等来直接迁移Perl代码.
  • 良好的IDE支持,包括代码完成和调试,最好是在Eclipse中
  • 易于安装.优选地,整个脚本引擎应该在单个jar文件中.
  • 不是孤立的技术.我想选择5年内仍会存在的东西.
  • 当然 - 与我已经拥有的其余Java代码完全集成.

我希望我的标准足够清楚,这不会被标记为主观问题.

对我来说,这绝对是一个编程问题.我认为所有这些语言都只是"有用的java库".

谢谢!

java perl programming-languages jython beanshell

6
推荐指数
1
解决办法
2947
查看次数

如何在jmeter中获取bean shell脚本的完整日志

我正在使用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 . . . ''

有没有办法可以检索完整的错误?

logging jmeter beanshell

6
推荐指数
1
解决办法
4265
查看次数

如何从 Jmeter 执行 java 类

有没有办法从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提供,因此需要将其包含在测试中,因为它是流量的一部分。

java jmeter beanshell

5
推荐指数
1
解决办法
2万
查看次数

如何在 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

5
推荐指数
1
解决办法
1万
查看次数

JMeter - 从 BeanShell 预处理器中停止线程

是否可以在BeanShell PreProcessor 中停止线程或强制失败?我尝试从ThreadGroup类和其他一些类访问“stop()”函数/方法,但我不确定我做得对,或者是否可能。

我想强制我的测试在我的BeanShell 预处理器中停止,如果我的脚本中的这个特定 if 语句导致 TRUE...这可能吗?我确实阅读了一些“Failure”和“FailureMessage”函数,但不确定使用这些函数的最终结果是什么。

任何想法或建议将不胜感激!

提前致谢,
马特

jmeter beanshell

5
推荐指数
1
解决办法
4966
查看次数

在测试计划中运行一次 Beanshell 预处理器

我有一个 Bean shell 预处理器,它最终根据用户传递的值设置一些全局变量,例如主机名和路径。

bean shell 设置的变量将被所有线程组使用。

目前,我已将 BS 预处理器放置在线程之外,并且它运行完美。 在此输入图像描述

问题是它为每个线程运行,这对性能不友好

我只希望它在测试计划开始时运行一次以提高性能。

我尝试将其放入安装线程中,但它不起作用。

除了 BS 预处理器之外,还有其他东西可以提高性能吗(它只为整个计划运行一次,而不是为每个线程运行一次)。

jmeter beanshell

5
推荐指数
1
解决办法
5345
查看次数

如何在 JMeter 中使用 beanshell 获取机器 IP 地址?

我正在尝试在 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 beanshell

5
推荐指数
1
解决办法
2761
查看次数

如何生成时间戳并将其放入jmeter中的变量中?

如何生成时间戳并将其放入jmeter中的变量中?这样变量就可以在URL中传递.

jmeter beanshell

5
推荐指数
1
解决办法
2万
查看次数

JMeter 脚本中的 S3 访问

我正在尝试从 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)

groovy jmeter beanshell amazon-web-services

5
推荐指数
1
解决办法
4642
查看次数

我如何在 jmeter 中使用 beanshell 预处理器删除空参数

我正在尝试读取包含超过 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 从请求中删除。我将不胜感激任何帮助

jmeter beanshell

5
推荐指数
1
解决办法
889
查看次数