我从某人那里继承了一个VM(Linux OS)。它在tomcat和oracle 11.2.0数据库内部部署/运行了一个Java应用程序“ bob”。我按照以下示例在beanshell(Java的轻量级)中编写了一个简单的数据库连接,它执行得很好,但是我想到了一个问题。
Connection con = DriverManager.getConnection("jdbc:oracle:thin:hostname:1521:sidname","username","password");
Run Code Online (Sandbox Code Playgroud)
我注意到ojdbc14.jar从Oracle安装目录/somepath/oracle/product/11.2.0/xe/jdbc/lib/{ojdbc5.jar中找到了/somepath/tomcat/webapps/bob/WEB-INF/lib/ojdbc14.jar ,ojdbc6_g.jar,ojdbc6.jar}找到三个ojdbc jar文件。
在这种情况下,哪个jar文件使用瘦驱动程序以建立数据库连接并成功运行sql查询语句?
我已经仔细研究了那些时髦的文档,并没有找到类似的东西,但那里的东西有点随意组织.我正在从beanshell切换到groovy,并使用beanshell中的源("fileloc")方法内联 - 包含其他实用程序beanhell脚本以供重用.在groovy或最佳实践中是否有标准功能?
我在JMeter中使用BeanShell.BeanShell是一个不支持泛型的Java解释器.一旦我输入一个尖括号(例如"<"),我的脚本就会被拒绝.
如果我可以使用泛型,我会做以下事情:
for ( Map.Entry<String,Object> entry : vars.entrySet() ) {
System.out.println( " key = " + entry.getKey() );
}
Run Code Online (Sandbox Code Playgroud)
但是我无法创建变量条目,因为我不允许Map.Entry<String,Object>在我的脚本中声明.
所以 - 给定我的方法entrySet()和它返回的类型Set<Map.Entry<String,Object>>是否有任何方法可以获得(或迭代)此集合中的键列表而不明确引用泛型类型?
例如:
for ( String keys : vars.entrySet().somethingMagic() ) {
System.out.println( " key = " + key );
}
Run Code Online (Sandbox Code Playgroud) 我在Bean Shell采样器中编写以下脚本但是没有正确执行,
JMeter永远不会进入"if"状态,我做错了什么?
*WRIDTEMP是一个变量,WRId是一个具有从csv文件中检索的值的变量.
if((vars.get("WRIDTEMP")==vars.get("WRId")) || vars.get("WRIDTEMP")==0)
{
String i = vars.get("C");
int counter = Integer.parseInt(i);
counter++;
vars.put("C", "" + counter);
if(counter<10 )
{
vars.put("Message",temp+authString);
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个 jMeter 项目,我正在处理它引发了各种各样的问题。主要是由于整个运行过程中变量数据的存储和范围界定。
我现在有很多工作,我正在使用 Beanshell 共享哈希图来存储运行中的数据。由于我这样做的方式,我不需要担心线程安全。
它可以工作,但是每次线程组运行时它都会重新初始化自己。尽管将初始化步骤放在所有线程组之外。
因此,据我所知,解决方案是将所有启动数据放入一个仅在启动时运行一次的初始化文件中。但我不知道我该怎么做?我已将之前使用的 Beanshell 预处理器中的代码复制到“.bshrc”文件中,并使用“.bshrc”文件的位置更新了 jMeter 属性文件,但它似乎不起作用。它实际上似乎没有做任何事情。当我运行测试时,不存在任何值,一切都失败了。
我试过使用:
beanshell.init.file=../bin/data.bshrc 和 beanshell.preprocessor.init=../bin/data.bshrc
我试图找到一些白痴指南来设置初始化文件,但我找不到任何有用的东西。这是我第一次认真地使用 Beanshell,而我的 Java 知识充其量也非常有限!
目前,我通过在启用原始 Beanshell 预处理器的情况下运行一次测试来解决它。这会设置哈希映射,并且它们从那时起就驻留在内存中。我停止此运行,禁用预处理器,所有后续运行都可以正常工作。
任何人?
我得到了以下错误
ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval In file: inline evaluation of: ``import java.text.*; import java.io.*; import java.util.*; import org.apache.jmet . . . '' Encountered "/" at line 15, column 74.
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉导致问题的原因.谢谢.
在用变量编辑最大计数器后,有没有办法重置计数器?例如,请参见图像http://i.stack.imgur.com/21067.png
Beanshell采样器vars.put("Loop","5");
循环1 Loopcount 5
循环2循环${Loop}
计数器,带$ {Loop}作为最大
Beanshell采样器,带log.info(vars.get("Counter").toString());
Beanshell采样器vars.put("Loop","2");
当我尝试这个${Loop}时,计数器模块将不会编辑.
我想使用JMeter中的BeanShell预处理器为事务控制器指定名称。我想在以后使用标头管理器连接并在dynaTrace中显示。
我使用BeanShell侦听器尝试过类似的操作
String test = sampleResult.getSampleLabel();
log.info(test);
Run Code Online (Sandbox Code Playgroud)
但是我想使用预处理器。
log.info(sampler.getName());
Run Code Online (Sandbox Code Playgroud)
这用于获取采样器的名称,就像我想要获取事务控制器的名称一样。
具体来说,我想使用BeanShell预处理器。
有人可以帮我吗?
在我的公司,我们使用 JMeter 作为发布管道的一部分来运行各种测试(冒烟、负载等)。现在我正在创建更复杂的测试场景,我使用了很多 BeanShell,我担心 JMeter 似乎对失败的 BeanShell 脚本完全没问题,我想找到一种失败的方法当 BeanShell 失败时进行测试。
如果存在语法错误,脚本将失败,并向日志文件报告,但它不会阻止整个测试套件成功,只要缺少的 BeanShell 执行不会触发任何其他失败。示例(点击查看全尺寸图片):
如上所示,我有一个带有 BeanShell 后处理器的采样器,其中包含一个语法错误。执行时记录错误并增加顶部的错误计数器,仅此而已。如果用户没有注意到这一点,错误就会转移到我们的发布过程中,从而降低我们的测试可靠性。如果我使用命令行运行 JMeter,结果如下:
Writing log file to: /home/user/jmeter/jmeter.log
Creating summariser <summary>
Created the tree successfully using Bad BeanShell Test.jmx
Starting the test @ Fri Feb 24 12:23:11 CET 2017 (1487935391815)
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary = 2 in 00:00:01 = 1.9/s Avg: 382 Min: 29 Max: 736 Err: 0 (0.00%)
Tidying up ... @ Fri Feb 24 12:23:13 CET 2017 (1487935393168)
... …Run Code Online (Sandbox Code Playgroud) 我尝试使用数组中的变量Path作为HTTP Request. Path应该是这样的:mypath/${act_value}
String[] numbers = mylist.split(",");
String act_value;
for (int i = 1; i <= 25; i++) {
vars.put(numbers[i], act_value);
}
Run Code Online (Sandbox Code Playgroud)
mylist作为提取器的输出给出,逗号分隔的字符串:mylist=123,456,343,909
HTTP Requeststate 无法访问此变量,我收到错误:
java.net.URISyntaxException:路径中存在非法字符