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,设置多线程就可以做性能压力测试了
这里写图片描述

原创粉丝点击