一些Jmeter属性替换($ {__ P(...)})不能在远程测试中工作

问题描述 投票:0回答:2

更新:我附上了测试脚本。不受尊重的两个替换是CSV-DATASOURCE(文件名)和主线程组(线程数):test plan file

这开始让我们发疯。使用Jmeter 3.3 r1808647。属性替换似乎完全失败,但只有在远程运行测试时。

我尝试了很多不同的方法,最新的看起来像这样:

  1. 在setUp Thread Group中,我使用Config元素/用户定义变量定义了一些用户变量。文字值有效,但$ {__ P(globalPropName)}在本地测试中被正确替换,并且在远程测试中仍然是字符串$ {__ P(globalPropName)}。使用调试采样器很明显。
  2. 但是在同一个调试采样器的结果中,属性存在且具有有效值,因此它不是-J / -G问题。
  3. 由于变量替换不起作用,我也不能使用默认值。

我已经尝试过直接在一些项目中使用替换,比如线程数,但是整个事情不起作用,因为没有替换。

有趣的是,简单的变量替换,如$ {varname}工作。任何发烧友都没有。就好像在远程运行中,字符串解析器是故意愚蠢的。

任何想法如何解决这个问题?

properties jmeter substitution beanshell
2个回答
1
投票

所以它看起来像是远程服务器启动方式的错误配置。

批处理文件(我们在这里谈论Windows)就像

"C:\apache-jmeter-3.3\bin\jmeter.bat" -s -Dserver_port=1098 -j "C:\ows\jmeter-service-ows.log" -d "C:\ows"

...因为所有杂项文件(源CSV,结果文件,日志)应该驻留在C:\ ows中。但事实证明,Jmeter当时对它的库感到困惑。

批处理文件如下所示:

"C:\apache-jmeter-3.3\bin\jmeter.bat" -s -Dserver_port=1098 -j "C:\ows\jmeter-service-ows.log" -d "C:\apache-jmeter-3.3"

...测试运行正常,所有替换工作正常。

我已经检查了日志和关于Jmeter的WARNings无法在CompoundVariable类中找到任何函数,并且在第一种情况下他们没有找到任何函数,在第二种情况下他们找到了所有函数。

我实际上怀疑是一个错误,因为这个测试使用了一个额外的外部库(gson),它位于与缺少的罪魁祸首相同的文件夹中(jmeter.functions或stg),并且在两种情况下都加载了特定的库。你怎么看,我应该报告这个错误吗?


0
投票
  1. 确保通过globalPropName从主人那里通过你的-G command-line argument财产,如: jmeter -GglobalPropName=foo
  2. 确保配置远程从站以写入日志文件,如: jmeter -s -j slave.log
  3. 确保在从机上安装JMeter的“lib / ext”文件夹下有ApacheJMeter_functions.jar。如果您的测试在本地工作正常,我建议您只需通过网络将“工作”JMeter实例复制到从属主机。

我可以声明我无法使用相同的JMeter版本重现您的问题,尝试下面概述的相同测试计划和命令,如果它有效 - 相应地修改您的设置

JMeter Remote Properties

参考文献:

© www.soinside.com 2019 - 2024. All rights reserved.