Groovy Jmeter MongoDb未经授权

Groovy Jmeter MongoDb未经授权,groovy,jmeter,jmeter-5.0,Groovy,Jmeter,Jmeter 5.0,我试图将数据(负载测试)从jmeter插入mongodb,但出现未经授权的错误,它连接到DB。 连接代码: String mongoUser = "user" String userDB = "mysyt" char[] password = "password".toCharArray(); MongoCredential credential = MongoCredential.createCredential(mongoUser, userDB, password); Mong

我试图将数据(负载测试)从jmeter插入mongodb,但出现未经授权的错误,它连接到DB。 连接代码:

String mongoUser = "user"
String userDB = "mysyt"
char[] password = "password".toCharArray();

MongoCredential credential = MongoCredential.createCredential(mongoUser, userDB, password);

    MongoClientSettings settings = MongoClientSettings.builder()
        .applyToClusterSettings {builder -> 
            builder.hosts(Arrays.asList(new ServerAddress("xxx.xx.xxx.xx",27017)))}
        .build();

    MongoClient mongoClient = MongoClients.create(settings);

    MongoDatabase database = mongoClient.getDatabase("mysyt");
    MongoCollection<Document> collection = database.getCollection("user");

    vars.putObject("collection", collection);


Error:

Response code:500 Response message:Exception: com.mongodb.MongoCommandException: Command failed with error 13 (Unauthorized): 'command insert requires authentication' on server xx.xxx.xx.xxx:27017. The full response is {"operationTime": {"$timestamp": {"t": 1580126230, "i": 1}}, "ok": 0.0, "errmsg": "command insert requires authentication", "code": 13, "codeName": "Unauthorized", "$clusterTime": {"clusterTime": {"$timestamp": {"t": 1580126230, "i": 1}}, "signature": {"hash": {"$binary": "j7ylgmDSaPsZQRX/SwPTo4ZSTII=", "$type": "00"}, "keyId": {"$numberLong": "6785074748788310018"}}}}
插入代码:

集合名称已在用户定义变量(TestPlan)中配置

MongoCollection collection=vars.getObject(“collection”);
Document Document=新文档(“userId”、“user1”)。追加(“userName”、“kohli”);
收藏.插入器(文件);
返回“插入文件”;

您正在创建的实例,但未将其传递给,正确的代码如下所示:

MongoClientSettings settings = MongoClientSettings.builder()
        .applyToClusterSettings { builder ->
            builder.hosts(Arrays.asList(new ServerAddress("xxx.xx.xxx.xx", 27017)))
        }
        .credential(credential) // this line is essential
        .build();
查看以下资料:

展望未来,最好包含API的确切版本,因为API可能会随着版本的变化而变化,对于驱动程序版本3.6有效的说明将不适用于驱动程序版本4.0,反之亦然

Response message:Exception: com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=xx.xxx.xx.xxx:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketWriteException: Exception sending message}, caused by {javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake}, caused by {java.io.EOFException: SSL peer shut down incorrectly}}]
 MongoCollection<Document> collection = vars.getObject("collection");

    Document document = new Document("userId", "user1").append("userName", "kohli");
    collection.insertOne(document);

    return "Document inserted";
MongoClientSettings settings = MongoClientSettings.builder()
        .applyToClusterSettings { builder ->
            builder.hosts(Arrays.asList(new ServerAddress("xxx.xx.xxx.xx", 27017)))
        }
        .credential(credential) // this line is essential
        .build();