javascript - 为 UUID 编写的 Java 脚本在 jmeter 中不起作用
问题描述
在下面找到我们在 java 脚本中开发的代码,以便使用 JSR223 采样器在 jmeter 中运行(作为 java 脚本运行)。开发时相同的代码在 Jquery 上工作,但在 jmeter 中运行时不发布 id。抛出的错误是“appid”未定义。有人可以帮助调试查看代码的问题吗
vars.put("guid", "${__UUID}");
vars.put("appId", "ce547c40-acf9-11e6-80f5-76304dec7eb7");
var id=getAppInfo(appId, guid);
函数 getAppInfo(appId, guid) {
var appInfo = null;
var appIdBytes = guidToBytes(appId);
var guidBytes = guidToBytes(guid);
var appInfoBytes = [];
for (var cnt = 0; cnt < appIdBytes.length; cnt++)
{
appInfoBytes[cnt] = appIdBytes[cnt] + guidBytes[cnt];
}
var appInfoGuidfromBytes = bytesToGuid(appInfoBytes);
return appInfoGuidfromBytes;
}
function bytesToGuid(guidBytes) {
var x = guidBytes;
var result = "";
var bytes = x.slice(0, 4).reverse().concat(x.slice(4, 6).reverse()).concat(x.slice(6, 8).reverse()).concat(x.slice(8));
var y = bytes.map(function (item) { return ('00' + item.toString(16)).substr(-2, 2) });
var byteArray = y;
for (var cnt = 0; cnt < byteArray.length; cnt++) {
if (cnt === 4 || cnt === 6 || cnt === 8 || cnt === 10)
result = result + "-" + byteArray[cnt];
else
result = result + byteArray[cnt];
}
return result;
}
function guidToBytes(guid) {
var bytes = [];
guid.split('-').map(function (number, index) {
var bytesInChar = index < 3 ? number.match(/.{1,2}/g).reverse() : number.match(/.{1,2}/g);
bytesInChar.map(function (byte) { bytes.push(parseInt(byte, 16)); });
});
return bytes;
}
// Create the Randon Number. It will call from NewGuid function.
function getRandomNumber() {
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
};
// Creating GUID eg. "cbe26df8-2b01-4377-9ae8-1d023ccd5171"
// getRandomNumber returns 4 digit Alphanumeric number and we are going to concatenating this with "-" symbol and third number starts with "-4" and substring the random number and concatenate the string and return.
function newGuid() {
return (getRandomNumber() + getRandomNumber() + "-" + getRandomNumber() + "-4" + getRandomNumber().substr(0, 3) + "-" + getRandomNumber() + "-" + getRandomNumber() + getRandomNumber() + getRandomNumber()).toLowerCase();
};
解决方案
你不应该在JSR223 script中调用 JMeter 的函数。
相反,将其添加到参数字段中${__UUID}
然后使用args使用它:
vars.put("guid", args[0]);
args - 作为字符串数组的参数(按空格分割)
推荐阅读
- python - Opensubtitles api python数据不是字典
- ios - 如何使用 SwiftUI 将 CoreData Context 传递给在 Swift 5 中以表格形式呈现的新视图?
- multithreading - Julia 1.5.2 性能问题
- python - 如何使用 HttpResponse 在 django 中显示图像
- javascript - 错误类型错误:将循环结构转换为 JSON --> 从具有构造函数“FirebaseAppImpl”的对象开始 Firebase Angular
- c++ - 如何创建包含另一个静态库的静态库
- angular - 错误:无法在 UserComponent 设置未定义的属性“id”
- string - 为什么我来自 BufReader::lines 的行不匹配?
- python - 过滤火花中缺少高于阈值的列
- machine-learning - 梯度下降在八度音阶中产生不正确的 Thetas