四、Jmeter5.6 -Groovy脚本连接mongodb5.0.6

groovy 脚本调用 MongoDB

groovy 语言,它是一种类 Java 语言,具体可以查阅下百度。

步骤1:下载mongo-java-driver驱动

官方驱动:MongoDB Java Drivers

Maven:https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver (建议谷歌浏览器访问)

我用的目前是最新的jmeter5.6,点击下载3.12.14

选择jar包。

把mongo-java-driver-3.12.14包拷贝至apache-jmeter-5.6\lib\ext目录下。

注意:这里有坑了,我们检查apache-jmeter-5.6\lib目录下是否存在驱动mongo-java-driver-xxx,不然会报错,如果有就移除。以亲测多次的确低版本的驱动是无法支撑的。

步骤2:我们需要用JSR223 Sampler(采样器),此采样器是在 jmeter.properties (是在jmeter安装bin目录下)文件中屏蔽掉的,我们可以打开该文件搜索“not_in_menu”,MongoDB相关的元件都是屏蔽掉。我们修改如下。如图:

 步骤3:打开jmeter,右击我们可看见

注意:我这里提供了简单的增、删、改、查的java脚本,并对其他元件进行整体讲述。

步骤4:新增-线程组-CSV数据文件设置,用户定义的变量,查看结果树。如图:

 csv数据文件设置:是我们提供外部文件,供我们链接数据库后进行增、删、改、查

 标记进行说明,

 用户定义变量:是我们提前预置的变量,方便链接数据库配置的变量。如图:

 我们可以通过navicat15连接查看userone库下的uesr的集合,是没有任何数据的。如何通过navicat连接本地服务可点击参考我的文章。

 步骤5:我们可新增4个(修改名称:增、删、改、查)JSR223 Sampler采样器

 注意:一定要选择,如图:

 增:

import com.mongodb.client.*;
import org.bson.Document;
import java.util.ArrayList;
import java.util.List;
 
// 建立数据库连接
MongoClient mongoClient = MongoClients.create(${mongoHost});
// 连接 数据库  databaseName为数据库名
MongoDatabase database = mongoClient.getDatabase(${databaseName});
// 连接 数据集 collectionName为数据集名
MongoCollection<Document> collection = database.getCollection(${collectionName});
// 构造数据

Document  doc = new Document("_id", ${a})
                .append("username", "${b}")
                .append("password", ${c})

// 插入1条数据
collection.insertOne(doc);
//写入响应
def RpData=""
doc.each
{
    RpData=RpData+it.toString()
}
SampleResult.setResponseData(RpData)

注意:插入的过程是需要时间,一定要记得,可添加定时器

把上方的代码拷贝至脚本编辑框内:

 运行截图(我在线程组里面设置了循环10次):

改:

import static com.mongodb.client.model.Filters.eq;
import org.bson.Document;
import com.mongodb.client.*;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.UpdateOneModel;
import com.mongodb.client.result.UpdateResult;
import java.util.ArrayList;
import java.util.List;

// 建立数据库连接
MongoClient mongoClient = MongoClients.create(${mongoHost});
// 连接 数据库  databaseName为数据库名
MongoDatabase database = mongoClient.getDatabase(${databaseName});
// 连接 数据集 collectionName为数据集名
MongoCollection<Document> collection = database.getCollection(${collectionName});
 
// 更改
collection.replaceOne(eq("username","张三2"),Document.parse("{username:'张三2',password:1001}"));

// 查询
MongoCursor<Document> doc = collection.find().iterator()
//写入响应
def RpData=""
doc.each
{
    RpData=RpData+it.toString()
}
SampleResult.setResponseData(RpData)

注意:该代码的通过replaceOne寻找相等的数据,并修改。

运行后查看数据库如图:

 查:

import com.mongodb.client.*;
import org.bson.Document;
import java.util.ArrayList;
import java.util.List;
 
// 建立数据库连接
MongoClient mongoClient = MongoClients.create(${mongoHost});
// 连接 数据库  databaseName为数据库名
MongoDatabase database = mongoClient.getDatabase(${databaseName});
// 连接 数据集 collectionName为数据集名
MongoCollection<Document> collection = database.getCollection(${collectionName});
// 查询
MongoCursor<Document> doc = collection.find().iterator()
//写入响应
def RpData=""
doc.each
{
    RpData=RpData+it.toString()
}
SampleResult.setResponseData(RpData)

运行截图:

 删:

import static com.mongodb.client.model.Filters.eq;
import org.bson.Document;
import com.mongodb.client.*;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.UpdateOneModel;
import com.mongodb.client.result.UpdateResult;
import java.util.ArrayList;
import java.util.List;

// 建立数据库连接
MongoClient mongoClient = MongoClients.create(${mongoHost});
// 连接 数据库  databaseName为数据库名
MongoDatabase database = mongoClient.getDatabase(${databaseName});
// 连接 数据集 collectionName为数据集名
MongoCollection<Document> collection = database.getCollection(${collectionName});

//删除
collection.deleteOne(eq("username","张三11"));

// 查询
MongoCursor<Document> doc = collection.find().iterator()
//写入响应
def RpData=""
doc.each
{
    RpData=RpData+it.toString()
}
SampleResult.setResponseData(RpData)

运行截图:

 

在进行性能测试之前,需要考虑许多因素,包括身份验证等。对于测试环境或本地环境,建议取消身份验证,因为在实际生产环境中,数据库通常不会为每个线程(用户)建立数据库连接。因此,性能测试通常针对测试环境或本地环境进行,而不是在正式生产环境中进行。即使在对正式环境进行性能测试时,也需要谨慎处理,并确保取消各种服务器上的安全策略或将测试机器的IP添加到白名单中。这样可以避免因大量请求而触发安全机制,导致被屏蔽访问。

这4个代码片段是一个简单的增删改查,亲测是可运行的,当然该文章的阐述只是讲解了如何连接MongoDB数据库。后续文章会讲解如何写性能测试报告。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值