javascript - 我在 NodeJS 中编写了 Mongo db 连接代码,它运行良好,但在 Jmeter 中失败
问题描述
我正在尝试使用 java 脚本作为脚本语言将 Jmeter 连接到 MongoDB,但它失败了。
我在节点 JS 中尝试过相同的代码,它运行良好,但在 Jmeter 中失败
var mongo = require('mongodb');
var MongoClient = mongo.MongoClient;
var url = 'mongodb://10.80.47.101:27017';
MongoClient.connect(url, { useNewUrlParser: true }, (err, client) => {
if (err) throw err;
const db = client.db("scorecard");
db.listCollections().toArray().then((docs) => {
console.log('Available collections:');
docs.forEach((doc, idx, array) => { console.log(doc.name) });
}).catch((err) => {
console.log(err);
}).finally(() => {
client.close();
});
});
我在 Jmeter 中收到此错误:
响应代码:500 响应消息:javax.script.ScriptException::9:6 预期:但发现(如果(错误)抛出错误;^ 在第 9 行第 6 列
解决方案
- JMeter 执行 JavaScript 的可能性仅限于Nashorn 引擎
require
,因为它不是 JavaScript API 的一部分,所以您的脚本将在第一行失败,它来自Node.js - 从 JMeter 3.1 开始,不建议使用 Groovy 以外的语言编写任何形式的脚本
因此,与其尝试使用 JavaScript 代码加载测试 Mongo 实例,不如:
- 下载与您的 Mongo 版本匹配的MongoDB Java 驱动程序并将其放入JMeter Classpath
- 重新启动 JMeter 以拾取 .jar
- 将JSR223 采样器添加到您的测试计划中
- 在 Groovy 中编写你的逻辑,检查你的特定 Mongo Java 驱动程序版本的JavaDoc以获得正确的语法