Jmeter 之Java request
来源:互联网 发布:大成网络招聘骗局 编辑:程序博客网 时间:2024/05/01 04:40
JMeter我们是不是很熟悉?在接触了这么久的jmeter之后,添加Sampler这里有一个叫Java请求的按键,顾名思义这是一个处理java包的一个请求处理器,下面就是我对这个过程的一个记录。
在做这个测试前我们要了解的是他的一些核心步骤*重点内容*
1.创建一个工程(Java工程/Maven工程都可以,个人喜欢而已)
2.将Jmeter的lib目录下的Jar包文件添加到Build Path下(ApacheJMeter_core.jar(必须)、ApacheJMeter_java.jar(必须)、avalon-framework-4.1.4.jar、jorphan.jar、logkit-2.0.jar)
3.创建一个类并实现JavaSamplerClient接口或继承AbstractJavaSamplerClient,并重写
AbstractJavaSamplerClient有下面几种方法需要用到:
public Arguments getDefaultParameters();设置可用参数及默认值;
public void setupTest(JavaSamplerContext arg0):每个线程测试前执行一次,做一些初始化工作;
public SampleResult runTest(JavaSamplerContext arg0):开始测试,从arg0参数可以获得参数值;
public void teardownTest(JavaSamplerContext arg0):测试结束时调用;
下面我是用maven工程实现的,所以创建了一个maven工程:
1,创建工程,添加所需要的依赖包
2,构建一个测试类实现数据库的插入功能:MongodbAddTest 并继承AbstractJavaSamplerClient
public class MongodbAddTest extends AbstractJavaSamplerClient {
private static String userName;
private static String province;
private static String home;
private static int age;
private static int _id;
private static String dbName = “wash_mall_bbs”;
@Overridepublic Arguments getDefaultParameters() { Arguments params = new Arguments(); params.addArgument("userName", "bee"); params.addArgument("age", "25"); params.addArgument("province", "广东"); params.addArgument("home", "韶关"); params.addArgument("_id", "8"); return params;}// 初始化方法,实际运行时每个线程仅执行一次,在测试方法运行前执行@Overridepublic void setupTest(JavaSamplerContext arg0) { BasicDBObject doc = new BasicDBObject();}public SampleResult runTest(JavaSamplerContext context) { MongoDBDao dao = new MongoDBDaoImpl(); SampleResult sr = new SampleResult(); sr.setSampleLabel("增加数据"); userName = context.getParameter("userName"); age = context.getIntParameter("age"); province = context.getParameter("province"); home = context.getParameter("home"); _id = context.getIntParameter("_id"); sr.sampleStart(); try { // BasicDBObject doc = new BasicDBObject(); // Map params1 = null; Map<String, Object> params = new LinkedHashMap<String, Object>(); params.put("userName", userName); params.put("age", age); params.put("province", province); params.put("home", home); params.put("_id", _id); boolean res = dao.inSert(dbName, "wjl2016", params); /* * { Map<String,Object> params = new LinkedHashMap<String,Object>(); * params.put("userName", "Bee"); params.put("age", "27"); * params.put("province", "guangdong"); params.put("home", * "guangzhou"); params.put("_id", "10"); dao.inSert(dbName, * "wjl2016", params); } */ // doc.putAll(params1); sr.setSamplerData(params.toString()); sr.setSuccessful(true); sr.setResponseData("结果是:" + res, "UTF-8"); } catch (Throwable e) { // TODO Auto-generated catch block sr.setSuccessful(false); } finally { sr.sampleEnd();// jmeter 结束统计响应时间标记 } return sr;}public static void main(String[] args) { Arguments params = new Arguments(); // params.addArgument("num1", "1");//设置参数,并赋予默认值1 // params.addArgument("num2", "2");//设置参数,并赋予默认值2 JavaSamplerContext arg0 = new JavaSamplerContext(params); MongodbAddTest test = new MongodbAddTest(); test.setupTest(arg0); test.runTest(arg0); test.teardownTest(arg0);}
}
3,创建数据库连接池
package Mongodb.Mongodb;
import java.net.UnknownHostException;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.ServerAddress;
public class MongoDbUtil {
private static MongoClient mongoClient = null;
public static MongoClient getMongoClient(){
if (mongoClient == null) {
MongoClientOptions.Builder buide = new MongoClientOptions.Builder();
buide.connectionsPerHost(100);// 与目标数据库可以建立的最大链接数
buide.connectTimeout(1000 * 60 * 20);// 与数据库建立链接的超时时间
buide.maxWaitTime(100 * 60 * 5);// 一个线程成功获取到一个可用数据库之前的最大等待时间
buide.threadsAllowedToBlockForConnectionMultiplier(100);
// buide.maxConnectionIdleTime(0);
// buide.maxConnectionLifeTime(0);
buide.socketTimeout(0);
buide.socketKeepAlive(true);
MongoClientOptions myOptions = buide.build();
try {
mongoClient = new MongoClient(new ServerAddress(“192.168.234.28”, 27017), myOptions);
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
if(null==mongoClient){
try {
throw new Exception(“link mongdb fail”);
} catch (Exception e) {
e.printStackTrace();
}
}
return mongoClient;
}
}
4,定义数据库插入接口
package Mongodb.Mongodb;
import java.util.ArrayList;
import java.util.Map;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
public interface MongoDBDao {
public DBCollection getCollection(String dbName, String collectionName);
public boolean inSert(String dbName, String collectionName, Map<> params);
}
5,实现数据库插入方法
package Mongodb.Mongodb;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.Map;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.WriteResult;
/*
* mongodb数据库链接池
*/
public class MongoDBDaoImpl implements MongoDBDao {
private static String dbName = “wash_mall_bbs”;
public DBCollection getCollection(String dbName, String collectionName) { DB db = MongoDbUtil.getMongoClient().getDB(dbName);
// return db.getCollection(collectionName);
if(!db.collectionExists(collectionName)){
return db.createCollection(collectionName, new BasicDBObject(“capped”, false).append(“size”, 10485));
}
return db.getCollection(collectionName);
}
public boolean inSert(String dbName, String collectionName, Map<> params) { DB db = null; db = MongoDbUtil.getMongoClient().getDB(dbName); DBCollection dbCollection = db.getCollection(collectionName); long num = dbCollection.count(); BasicDBObject doc = new BasicDBObject(); try { doc.putAll(params); dbCollection.insert(doc); if (dbCollection.count() - num > 0) { System.out.println("添加数据成功!!!"); return true; } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(null != db){ db.requestDone(); //请求结束后关闭db } } return false;}public static void main(String args[]) { MongoDBDao dao = new MongoDBDaoImpl(); DBCollection dbConlle = dao.getCollection(dbName, "wjl2016"); System.out.println(dbConlle.toString()); //插入数据
// {
// Map<> params = new LinkedHashMap<>();
// params.put(“userName”, “hehe”);
// params.put(“age”, 18);
// params.put(“province”, “湖北”);
// params.put(“home”, “hb”);
// params.put(“_id”, 1);
// dao.inSert(dbName, “wjl2016”, params);
// }
}
}
6,导出Jar包(file->export->Runnerable jar file->选择要运行的类)
7,把刚导出的Jar包放到jmeter安装目录下的lib/
8,启动Jmeter
添加一个线程组、添加查看树、Java 请求、选择要测试的方法
9,设置多线程就可以做性能压力测试了
- Jmeter 之Java request
- Jmeter之Java Request
- Jmeter之JAVA Request的应用
- jmeter 之 JDBC request
- Jmeter之JDBC Request
- jmeter java request
- jmeter java request
- jmeter java request
- Jmeter之HTTP Request Defaults
- Jmeter之HTTP Request Defaults
- Jmeter之HTTP Request Defaults
- Jmeter之HTTP Request Defaults
- JMeter之HTTP Request Defaults
- Jmeter之HTTP Request Defaults
- jmeter进行java request 测试
- JMeter入门:Java Request实例
- JMeter入门:Java Request实例
- JMeter入门:Java Request实例
- 进程权限
- csrf
- After Go victory, challenges given to 'AlphaMahjong'
- TensorFlow深度学习入门——常用函数说明
- 八大排序算法
- Jmeter 之Java request
- 解决java.lang.IncompatibleClassChangeError
- 使用HTML <frameset>元素制作导航网页
- python3使用tkinter制作用户管理模块
- 搭建ElasticSearch 强大的企业级的搜索引擎服务器
- C#和JAVA 3DES加密解密
- Spring Data JPA 报错 :PropertyReferenceException: No property params found for type xxx!
- 一个程序员要扔掉多少代码,才能成为真正的程序员
- 【电路第一章】 基本概念和基本公设