Jmeter 之Java request

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”;

@Override
public 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;
}

// 初始化方法,实际运行时每个线程仅执行一次,在测试方法运行前执行
@Override
public 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,设置多线程就可以做性能压力测试了
这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值