当前位置: 首页 > 知识库问答 >
问题:

从Jmeter连接到Azure Cosmos DB时JSR223脚本JSR223 Sampler中的问题

晋承运
2023-03-14

我试图通过从Azure门户公开的rest API将JMeter结果推送到Azure Cosmos DB。

为此,我使用JSR223采样器(作为预处理器)获取auth令牌以连接到cosmos db,还使用stand脚本生成auth_token(参见:https://github.com/microsoftcsa/documentdb-postman-collection/issutions)。

但是我在JSR223脚本JSR223采样器中遇到问题,消息:javax.script.scriptexception:referenceerror:“request”没有定义

代码段:

var mastKey = "master_key_for_cosmos_db";
log.info("mastKey = " + mastKey);

var today = new Date();
var UTCstring = today.toUTCString();
var url = "uri_key_for_cosmos_db"
var strippedurl = url.replace(new RegExp('^https?://[^/]+/'), '/');
log.info("stripped Url = " + strippedurl);

var strippedparts = strippedurl.split("/");
var truestrippedcount = (strippedparts.length - 1);
var resourceId = "";
var resType = "";
if (truestrippedcount % 2) {
    resType = strippedparts[truestrippedcount];
    if (truestrippedcount > 1) {
        var lastPart = strippedurl.lastIndexOf("/");
        resourceId = strippedurl.substring(1, lastPart);
    }
} else // its even (item request on resource)
{
    resType = strippedparts[truestrippedcount - 1];
    strippedurl = strippedurl.substring(1);
    resourceId = strippedurl;
}
var verb = request.method.toLowerCase();
var date = UTCstring.toLowerCase();
var key = CryptoJS.enc.Base64.parse(mastKey);
var text = (verb || "").toLowerCase() + "\n" +
    (resType || "").toLowerCase() + "\n" +
    (resourceId || "") + "\n" +
    (date || "").toLowerCase() + "\n" +
    "" + "\n";

var signature = CryptoJS.HmacSHA256(text, key);
var base64Bits = CryptoJS.enc.Base64.stringify(signature);
var MasterToken = "master";
var TokenVersion = "1.0";
auth = encodeURIComponent("type=" + MasterToken + "&ver=" + TokenVersion + "&sig=" + base64Bits);
vars.put("authToken", auth);

我做错了什么或错过了什么?

共有1个答案

班经亘
2023-03-14

这个request对象属于Postman工具,您不能在JMeter脚本中使用它,因为它没有在脚本中定义。

您还需要导入这个CryptoJS,这可能并不简单。

此外,JMeter中脚本编写的推荐语言是Groovy

    null
 类似资料:
  • 我在尝试运行JMeter脚本时收到以下错误。该API在Loadrunner中运行良好。我在SSL版本的user.properties中设置了https.default.protocol=tlsv1.2。什么可能导致以下错误。 exception:连接到rxxxxx.xxxx-xxxx.xxxxx.xxxxx.xxxxx.net:443[xxxxxx.xxxxx.xxxxx.xxxxx/21.60.

  • 我使用的是JMeter5.0,在JSR223后处理程序中编写了一段java代码。代码如下-- 然而,当我执行测试计划时,在控制台中我会得到以下错误- ScriptException:在文件中:内联计算:的内联求值中,导入java.util.Map;导入java.util.HashMap;Map gamePlayHistoryMap=新H。..“在第6行 有人能帮我指出我可能错在哪里吗?

  • 我的spring应用程序使用mongodb进行持久化。应用程序使用用户名/密码连接到mongodb。 为了找到Spring Native的好处,我在我的Ubuntu18LTS上创建了一个docker映像。当我使用docker compose运行应用程序映像和mongodb映像时,一切看起来都很好。当我调用插入mongodb的rest api时,应用程序会抛出一个错误 操作系统:Ubuntu18LT

  • 响应消息:java.sql.SQLException:无法创建PoolableConnectionFactory(ORA-00604:递归SQL级别1 ORA-12705发生错误:无法访问NLS数据文件或指定的无效环境)

  • 在尝试在不同的机器上使用主配置和从配置运行jmeter分发测试时,我们面临着这个问题。Jmeter分布测试在同一台机器上运行良好,但我们得到的连接拒绝主机:xxx.xxx.xxx。xx;嵌套异常是:java.net。ConnectException:连接超时:connect无法配置xxx.xxx.xxxxxx