在IDE中引用Jmeter的安装目录lib/ext中两个文件ApacheJMeter_core.jar和ApacheJMeter_java.jar

Java request的类需要继承AbstractJavaSamplerClient类,在继承AbstractJavaSamplerClient类的时候,需要实现四个方法,分别是

setupTest():初始化方法,用于初始化性能测试时的每个线程;

getDefaultParameters():主要用于设置传入的参数;

runTest():为性能测试时的线程运行体;

teardownTest():测试结束方法,用于结束性能测试中的每个线程。

 package com.test.jmeterdemo;

 import com.test.http.HTTPClient;
import com.test.http.HTTPUtils;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult; public class TestHTTP extends AbstractJavaSamplerClient {
private String url;
private String method;
private String header;
private String reqBody;
private String responseCode;
private String responseHeader;
private String responseBody; /**
* 这个方法用来控制显示在GUI页面的属性,由用户来进行设置。
* 此方法不用调用,是一个与生命周期相关的方法,类加载则运行。
*/
public Arguments getDefaultParameters() {
Arguments arguments = new Arguments();
arguments.addArgument("Url", "");
arguments.addArgument("Method", "");
arguments.addArgument("Header", "");
arguments.addArgument("ReqBody", "");
return arguments;
} /**
* 初始化方法,初始化性能测试时的每个线程
* 实际运行时每个线程仅执行一次,在测试方法运行前执行,类似于LoadRunner中的init方法
*/
public void setupTest(JavaSamplerContext jsc){
url = jsc.getParameter("Url");
method = jsc.getParameter("Method");
header = jsc.getParameter("Header");
reqBody = jsc.getParameter("ReqBody");
} /**
* 性能测试时的线程运行体
* 测试执行的循环体,根据线程数和循环次数的不同可执行多次,类似于Loadrunner中的Action方法
*/
public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
SampleResult results = new SampleResult();
results.setSamplerData(url+"\n"+method+"\n"+header+"\n"+reqBody);
results.setRequestHeaders(header);
//标记事务开始
results.sampleStart();
HTTPUtils.Response response = HTTPClient.sendHttpRequest(url, method, header, reqBody);
//标记事务结束
results.sampleEnd();
if (response != null) {
responseCode = String.valueOf(response.getResponseCode());
responseHeader = response.getResponseHeader().toString();
responseBody = (String) response.getResponseBody();
results.setSuccessful(true);
}
results.setResponseCode(responseCode);
results.setResponseHeaders(responseHeader);
results.setResponseData(responseBody, "UTF-8");
return results;
} /**
* 测试结束方法,结束测试中的每个线程
* 实际运行时,每个线程仅执行一次,在测试方法运行结束后执行,类似于Loadrunner中的End方法
*/
public void teardownTest(JavaSamplerContext args) {
}
}

Jmeter性能测试之进阶Java request的使用的更多相关文章

  1. Jmeter性能测试之进阶BeanShell的使用

    BeanShell 最常用的用法 写好Java代码打成jar, 放到目录\lib\ext下面 package com.test; import java.io.File; import java.io ...

  2. JMeter入门(4):Java Request实例

    目的:对Java程序进行测试: 一.核心步骤 1.创建一个Java工程: 2.将JMeter的lib目录下的jar文件添加进此工程的Build Path: 3.创建一个类并实现JavaSamplerC ...

  3. Jmeter性能测试之基础知识(一)

    1. 官网下载Jmeter: 点这里, 下载完成解压即可 2. 启动: 进入解压后的bin目录, Windows点击jmeter.bat, Linux执行jmeter 3. 添加线程组(user) : ...

  4. Jmeter性能测试之如何写Java请求测试用例类

    一. 引言: 最近工作中的一个项目要求做性能测试,该项目由提供服务的几个应用组成,选用的框架是阿里巴巴公司开源的服务框架Dubbo.关于Dubbo的介绍,网上也有很多资料,本人只是做了粗略的了解,没有 ...

  5. Jmeter性能测试之分布式(五)

    Jmeter是纯Java开发的开源性能测试工具, Java程序是很吃内存的, 有时候一台负载机给服务器的压力是不够的, 需要很多台同时负载, 这个时候就需要用到分布式了. 1. 组网图大概就是这样的 ...

  6. Jmeter性能测试之添加思考时间

    利用定时器添加用户思考时间 JMeter如何插入思考时间,在一个真实的性能测试场景中,是需要加入思考时间,来模拟真实用户行为.本文就来介绍,如何在三个请求之间添加思考时间. 1. 在Test Plan ...

  7. Jmeter性能测试之Monitor监控(SSHMon Samples Collector)

    前面写的一篇Monitor监控有缺陷, 这篇文章使用Jmeter4.0+的版本, 使用插件SSHMon Samples Collector来做资源监控 1. 官网下载插件: plugins-manag ...

  8. Jmeter性能测试之Monitor监控(四)

    使用Jmeter(该篇文章使用的版本最高为3.1, 3.1+的版本存在兼容性问题)做性能测试, 要监控服务器硬件资源消耗情况, 可以使用扩展插件完成. 1. 服务端插件下载agent, 点击这里 , ...

  9. Jmeter性能测试之参数化(二)

    Jmeter参数化主要有3种方式: 1. Add--> Pre Processors--> User Parameters 2. Add--> Config Element--> ...

随机推荐

  1. Sqoop export(Hive to MySQL) 的一些 reference

    之后可能会整理成文章..还有一些坑没趟完. Reference: https://cloud.tencent.com/developer/article/1078473  Sqoop抽取Hive Pa ...

  2. JAVA多线程-实现通讯

    一.多线程之间如何实现通讯 1)什么是多线程之间通讯 多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同. 2)如何通讯 wait().notify().notifyAll()是三个 ...

  3. JS自动微信消息轰炸

    打开网页版本微信,按f12,以console台 输入下边这段代码 setInterval(function(){$('.edit_area').html('需要发送的文字');$(".edi ...

  4. Linux 学习 (四) 帮助命令

    Linux达人养成计划 I 学习笔记 man 命令 获取指定命令的帮助 man的级别 1:查看命令的帮助 2:查看可被内核调用的函数的帮助 3:查看函数和函数库的帮助 4:查看特殊文件的帮助(主要是/ ...

  5. eclipse安装Activiti

    一. eclipse自己下载 打开eclipse软件,然后点击菜单栏的help选项,选择install New Software,示例如下: 出现如下对话框: 点击添加[Add]按钮,出现如下对话框 ...

  6. 洛谷P1608路径统计

    题目 这个提示一个简单的最短路计数,除了用数组存上最短路的个数的做法以外,还有可以在得出最短路之后,搜索加剪枝的方法来通过该题. 可以反向搜索用A*的方法来通过,但是这个题的去重十分的恶心,需要一些玄 ...

  7. [CTSC2008]网络管理 [整体二分]

    题面 bzoj luogu 所有事件按时间排序 按值划分下放 把每一个修改 改成一个删除一个插入 对于一个查询 直接查这个段区间有多少合法点 如果查询值大于等于目标值 进入左区间 如果一个查询无解 那 ...

  8. rt-thread 之组件与设备初始化配置

    @2019-03-08 [小记] rt-thread 初始化配置有两个分支: 第一,板级设备初始化 rt_components_board_init() 第二,内核组件初始化 rt_component ...

  9. 记录一次被bc利用跳转过程分析

    挖公司的项目站,发现站点一访问就直接跳转到了赌博站,有点懵逼,简单分析下hc利用过程: 公司项目站:http://***.com 当我访问它: 通过http:***.com直接跳转到了306648.c ...

  10. NowCoder -- 牛客小白月赛10

    A--勘测 推下公式  a[i] = a[i-1] + a[i-2] +2 #include<stdio.h> #include<string.h> ]; int main() ...