Jmeter插件开发实现对mongo数据库的操作
2018-03-15 16:38
513 查看
背景:使用JMeter做接口自动化,用例执行前需要清除一些数据,操作完后校验mongo数据。因为Jmeter3没有对Mongo数据库的支持,所以自己开发java请求实现对mongo的操作。
1.eclipse新建java工程,依赖jar包如下
2.写一个类实现连接mongo数据库,返回要操作的collection对象public DBCollection ConnectionMongoClient(String host, int port, String dbname,String collection) {
Mongo connection = new Mongo(host,port);
DB db = connection.getDB(dbname);
DBCollection coll = db.getCollection(collection);
return coll;
} 3.参看官网API,java请求需要继承AbstractJavaSamplerClient抽象类,下面以mongo的查询操作为例的实现
sampler核心代码
more details see 点击打开链接
getDefaultParameters:设置请求中的参数以及默认值
public Arguments getDefaultParameters(){
Arguments params=new Arguments();
params.addArgument("ip","127.0.0.1");
params.addArgument("port","27017");
params.addArgument("dbname","dummy");
params.addArgument("collection","users");
params.addArgument("queryjsonString","");
return params;
}setupTest:参数初始化public void setupTest(JavaSamplerContext context){
System.out.println("执行setup");
ip= context.getParameter("ip");
port=context.getIntParameter("port");
dbname= context.getParameter("dbname");
collection= context.getParameter("collection");
queryjsonString=context.getParameter("queryjsonString");
}runTest:操作核心代码:设置请求的名称,执行Mongo的查询,设置查看结果树的响应数据@Override
public SampleResult runTest(JavaSamplerContext context) {
System.out.println("执行runTest...");
SampleResult sampleresult = new SampleResult();
sampleresult.sampleStart();
//设置sampler请求的名称
sampleresult.setSampleLabel("MongodbSampler" + Thread.currentThread().getId());
//连接mongo
DBCollection coll=new TestMongoConection().ConnectionMongoClient(ip, port, dbname, collection);
DBObject query=new BasicDBObject();
if (queryjsonString!=""&&queryjsonString!=null){
query=(DBObject) com.mongodb.util.JSON.parse(queryjsonString);
}
//日志打印查询条件,查看查询条件是否传值错误
getLogger().debug(query.toString());
DBCursor cursor = coll.find(query);
while (cursor.hasNext()){
DBObject dbobj=cursor.next();
responseData =responseData+dbobj.toString()+ "\n";
}
if ( responseData!= "" || !responseData.equals("")) {
//设置响应数据为查询结果
sampleresult.setResponseData(responseData.getBytes());
}else {
sampleresult.setResponseData(("the return data is null !").getBytes());
}
sampleresult.setSuccessful(true);
sampleresult.sampleEnd();
return sampleresult;
}删除等操作,仅需修改对mongo操作的相应代码 WriteResult wr=coll.remove(query);
int deleteDocNum=wr.getN();
if (deleteDocNum>0){
responseData=deleteDocNum+" documents deleted successfully";
}else{
responseData="no document deleted";
}
4.界面操作
4.1 请求:
4.2 查看结果,设置的请求名称和响应数据。可对响应数据进行断言,确定用例结果
4.3 将一些关键信息打印入日志,方便调试问题
1.eclipse新建java工程,依赖jar包如下
2.写一个类实现连接mongo数据库,返回要操作的collection对象public DBCollection ConnectionMongoClient(String host, int port, String dbname,String collection) {
Mongo connection = new Mongo(host,port);
DB db = connection.getDB(dbname);
DBCollection coll = db.getCollection(collection);
return coll;
} 3.参看官网API,java请求需要继承AbstractJavaSamplerClient抽象类,下面以mongo的查询操作为例的实现
sampler核心代码
more details see 点击打开链接
getDefaultParameters:设置请求中的参数以及默认值
public Arguments getDefaultParameters(){
Arguments params=new Arguments();
params.addArgument("ip","127.0.0.1");
params.addArgument("port","27017");
params.addArgument("dbname","dummy");
params.addArgument("collection","users");
params.addArgument("queryjsonString","");
return params;
}setupTest:参数初始化public void setupTest(JavaSamplerContext context){
System.out.println("执行setup");
ip= context.getParameter("ip");
port=context.getIntParameter("port");
dbname= context.getParameter("dbname");
collection= context.getParameter("collection");
queryjsonString=context.getParameter("queryjsonString");
}runTest:操作核心代码:设置请求的名称,执行Mongo的查询,设置查看结果树的响应数据@Override
public SampleResult runTest(JavaSamplerContext context) {
System.out.println("执行runTest...");
SampleResult sampleresult = new SampleResult();
sampleresult.sampleStart();
//设置sampler请求的名称
sampleresult.setSampleLabel("MongodbSampler" + Thread.currentThread().getId());
//连接mongo
DBCollection coll=new TestMongoConection().ConnectionMongoClient(ip, port, dbname, collection);
DBObject query=new BasicDBObject();
if (queryjsonString!=""&&queryjsonString!=null){
query=(DBObject) com.mongodb.util.JSON.parse(queryjsonString);
}
//日志打印查询条件,查看查询条件是否传值错误
getLogger().debug(query.toString());
DBCursor cursor = coll.find(query);
while (cursor.hasNext()){
DBObject dbobj=cursor.next();
responseData =responseData+dbobj.toString()+ "\n";
}
if ( responseData!= "" || !responseData.equals("")) {
//设置响应数据为查询结果
sampleresult.setResponseData(responseData.getBytes());
}else {
sampleresult.setResponseData(("the return data is null !").getBytes());
}
sampleresult.setSuccessful(true);
sampleresult.sampleEnd();
return sampleresult;
}删除等操作,仅需修改对mongo操作的相应代码 WriteResult wr=coll.remove(query);
int deleteDocNum=wr.getN();
if (deleteDocNum>0){
responseData=deleteDocNum+" documents deleted successfully";
}else{
responseData="no document deleted";
}
4.界面操作
4.1 请求:
4.2 查看结果,设置的请求名称和响应数据。可对响应数据进行断言,确定用例结果
4.3 将一些关键信息打印入日志,方便调试问题
相关文章推荐
- 基于Metronic的Bootstrap开发框架经验总结(17)-- 使用 summernote插件实现HTML文档的编辑和图片插入操作
- Tom White 是 Kizoom 的首席 Java 开发人员 实现的 如何实现每天定时对数据库的操作
- java实现mongo数据库的CRUD操作
- 安卓开发-实现数据库的CRUD操作
- Eclipse 插件开发 基于org.eclipse.ui.startup扩展点 实现eclipse启动时执行相关操作
- 短信猫开发接口只用操作数据库即可实现短信收发
- LAMP开发精要(7):在 Wordpress 插件中进行数据库操作
- asp.netWeb开发中ztree实现无极限增删改查连接数据同步数据库操作
- openfire插件开发-操作数据库
- 利用反射实现对sqlite3数据库的crud(增删改查)操作的一个baseAndroidDao封装,安卓开发中
- 如何实现每天定时对数据库的操作
- 如何实现每天定时对数据库的操作
- [转]ASP.NET 2.0如何实现数据库应用开发
- 使用Adoconnection实现对两个数据库的操作
- 使用ADO操作SQL SERVER 通过'OLE DB 访问 ACCESS 数据库 ,实现数据交换
- ASP.NET 2.0如何实现数据库应用开发
- 用强制订阅实现数据库同步操作
- 使用XML封装数据库操作语句的实现(zz)
- 一个javabean轻松实现对数据库的各种操作
- 使用XML封装数据库操作语句的实现