我正在使用Groovy在MongoDB上进行查询,但在MongoDB中进行查询时未获得授权。您能检查我的脚本是否有问题吗?
DBName默认 收款paymentHeader
import com.mongodb.*;
import com.mongodb.DB;
import com.mongodb.MongoCredential;
import org.apache.jmeter.protocol.mongodb.config.MongoDBHolder;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
//Get DB
DB db = MongoDBHolder.getDBFromSource("SITDB","${DBName}","${username}","${password}");
boolean auth = db.authenticate("${username}","${password}".toCharArray());
//Get Collection
DBCollection collection = db.getCollection("${Collection}");
//Find ApplicationNum
//collection.find({applicationNum: "${applicationId}"});
BasicDBObject query = new BasicDBObject("applicationNum", "${applicationId}");
DBObject result = collection.findOne(query);
SampleResult.setResponseData(result.toString().getBytes());
响应码:500 响应消息:javax.script.ScriptException:com.mongodb.MongoException:未经授权对default.paymentHeader进行查询
答案 0 :(得分:1)
JMeter对此没有任何帮助,您需要为${username}
提供read permissions到default.paymentHeader
集合中。
另外请注意,您不应将JMeter Functions or Variables引用为${username}
,而应将vars
shorthand用于JMeterVariables类,而不要像vars.get('username')
更多信息:JSR223 Sampler Documentation,尤其是:
JMeter在将脚本字段传递给解释器之前先处理函数和变量引用,因此这些引用将只解析一次。脚本文件中的变量和函数引用将逐字传递给解释器,这可能会导致语法错误。为了使用运行时变量,请使用适当的props方法,例如
props.get("START.HMS"); props.put("PROP1","1234");