定制JMeter取样器
JMeter运行你区定义自己的取样器sampler,方法很简单,只需继承类org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient,并重写若干方法即可。
首先,创建一个maven项目,并加入jmeter相关的依赖包:
<dependencies>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter</artifactId>
<version>2.10</version>
</dependency>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_core</artifactId>
<version>2.10</version>
</dependency>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_http</artifactId>
<version>2.10</version>
</dependency>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_java</artifactId>
<version>2.10</version>
</dependency>
</dependencies>
然后,创建一个类,继承自AbstractJavaSamplerClient,并重写setupTest、teardownTest、runTest与getDefaultParameters方法即可
代码示例如下:
package pengliu.me.jmeter.plugins; 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;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.log.Logger; import java.util.Iterator;
import java.util.Random; public class MySampler extends AbstractJavaSamplerClient
{
private static final Logger log = LoggingManager.getLoggerForClass(); @Override
public void setupTest(JavaSamplerContext context)
{
Iterator<String> it = context.getParameterNamesIterator();
while (it.hasNext())
{
String paramName = it.next();
this.log.info(String.format("-----------------paramName: %s, paramValue: %s-----------------",
paramName,
context.getParameter(paramName)));
} this.log.info(String.format("-----------------Get param 'name' from JMeter: %s-----------------",
context.getParameter("name", "Default Name")));
this.log.info(String.format("-----------------Current Thread Id: %s, Start 'setupTest(JavaSamplerContext context)'--------------------",
Thread.currentThread().getId()));
} @Override
public void teardownTest(JavaSamplerContext context)
{
this.log.info(String.format("-----------------Current Thread Id: %s, Start 'teardownTest(JavaSamplerContext context)'--------------------",
Thread.currentThread().getId()));
} public SampleResult runTest(JavaSamplerContext javaSamplerContext)
{
SampleResult result = new SampleResult();
result.sampleStart();
try
{
Random r = new Random();
long sleepTime = (long)r.nextInt(5000);
this.log.info(String.format("-----------------Current Thread Id: %s, Running Test, sleep time is %s--------------------",
Thread.currentThread().getId(),
sleepTime));
Thread.sleep(sleepTime); if(sleepTime%2 == 0)
{
throw new Exception("--------This is my exception from runTest!!!---------");
} result.sampleEnd();
result.setSuccessful(true);
result.setSampleLabel("My Lable: SUCCESS: " + Thread.currentThread().getId());
}
catch (Throwable e)
{
result.sampleEnd();
result.setSuccessful(false);
result.setSampleLabel("My Lable: FAIL: " + Thread.currentThread().getId()); e.printStackTrace();
} return result;
} @Override
public Arguments getDefaultParameters() { Arguments params = new Arguments(); params.addArgument("name", "edw"); return params;
}
}
- 其中setupTest与teardownTest方法,在一个线程只被执行一次,无论此Thread Group配置的Loop Count是多少,每个线程只运行一次这两个方法。
- 其中runTest方法,如果一个线程配置了多次的Loop Count,那么此runTest就会运行多次
- 其中getDefaultParameters方法,返回的是JMeter界面的参数列表,如下图:

- 使用”mvn package”命令打包上面的sampler:

- 将打包好的jar包放到JMeter的lib/ext目录下:

- 启动JMeter, 并加入一个Java Request的sampler:

- Classname选择代码中自定义的sampler类:

- 配置Thread Group,线程数为2,循环数为5:

选中Java Request这个sampler,可以设置参数name的值
- 开始执行后,JMeter会产生两个线程,每个线程都跑只跑一遍setupTest与teardownTest方法,但会跑5遍runTest方法
- 查看JMeter的日志输出:

查看”View Results in Table”中的结果:

定制JMeter取样器的更多相关文章
- 『动善时』JMeter基础 — 12、JMeter取样器详解:sampler
目录 1.取样器介绍 2.JMeter自带的取样器 3."HTTP请求"为例介绍一下取样器 (1)HTTP Request: (2)Web服务器: (3)HTTP请求: (4)同请 ...
- 【Python】使用Beautiful Soup等三种方式定制Jmeter测试脚本
背景介绍 我们在做性能调优时,时常需要根据实际压测的情况,调整线程组的参数,比如循环次数,线程数,所有线程启动的时间等. 如果是在一台Linux机器上,就免不了在本机打开图形页面修改,然后最后传递到压 ...
- python csv 数据切割定制jmeter数据
需求压测随机抽取10w数据中自定义区间的指定数量数据进行压测: jmeter csv/txt配置: 需要获取{data: [${myList}] } jmeter需要数据类型 获取展读取csv数据 ...
- Jmeter入门(5)- jmeter取样器的HTTP请求
一.HTTP管理器 位置:线程组右键 ==> 添加 ==> 配置元件 1.HTTP信息头管理器 添加测试计划 添加线程组 添加HTTP请求 添加请求头(HTTP信息头管理器) 设置请求参数 ...
- 一步一步和我学Apache JMeter
一. Apache JMeter介绍 1. Apache JMeter是什么? Apache JMeter 是Apache组织的开放源代码项目,是一个100%纯Java桌面应用,用于压力测试和性能测量 ...
- jmeter工具应用1
1.Jmeter介绍 Apache JMeter 是Apache组织的开放源代码项目,是一个纯Java桌面应用,用于压力测试和性能测量.它最初被设计用于Web应用测试但后来扩展到其它测试领域. 操 ...
- JMeter:生成漂亮的多维度的HTML报告
JMeter:生成漂亮的多维度的HTML报告我们做性能测试的时候会经常使用一些性能测试工具,我个人比较喜欢Jmeter这个工具,但是JMeter这个工具在生成测试报告方面一直有所欠缺.但是JMeter ...
- jmeter --- 测试计划里的元件
1.线程组 线程组元件是任何一个测试计划的开始点.在一个测试计划中的所有元件都必须在某个线程组下.顾名思义,线程组元件控制JMeter执行你的测试计划时候使用的线程数量.对线程组的控制允许你: 设置线 ...
- JMETER学习宝典
1. 简介 Apache JMeter是100%纯java桌面应用程序,被设计用来测试客户端/服务器结构的软件(例如web应用程序).它可以用来测试包括基于静态和动态资源程序的性能,例如静态文件,Ja ...
随机推荐
- c#实现QQ群成员列表导出及邮件群发之模拟QQ登陆
主题已迁移至:http://atiblogs.com/ ITO-神奇的程序员
- 在windows环境中使用varnish
varnish 的windows 版本下载地址: http://sourceforge.net/projects/cygvarnish/files/windows-zip-bundle/ ...
- 终端启动tomcat报错 command not found 解决方法 (含启动和关闭命令)
Tomcat配置步骤: 1.cd命令进入Tomcat安装路径的bin下 2.sudo chmod 755*.sh 输入appleID密码获得相关权限 3.sudo sh ./startup.sh启动T ...
- 【转】JMeter试用手记
JMeter是一款性能测试工具.个人认为与其说他是一个工具,不如说他是一个框架.因为JMeter的支持范围非常广,目前常见的需要进行性能测试的应用几乎都能应用(如:files, Servlets, P ...
- 分布式缓存系统 Memcached 基本配置与命令
为了方便测试,给出一个C客户端libmemcached链接:https://launchpad.net/libmemcached/ 以及memcacheclient-2.0 : http://code ...
- java调用python
本文记录下使用jython包来实现java代码中调用Python. 一.Maven加入 <dependency> <groupId>org.python</groupId ...
- 子查询语句的thinkphp实现
语句 SELECT a.id as item_id,a.name as item_name,a.intro as item_intro,b.id,b.money FROM sh_incentive_i ...
- UE4动画功能整理
转自:http://blog.ch-wind.com/ue4%E5%8A%A8%E7%94%BB%E5%8A%9F%E8%83%BD%E6%95%B4%E7%90%86/ 工欲善其事必先利其器,最近一 ...
- Java微信公众平台开发(十三)--微信JSSDK中Config配置
转自:http://www.cuiyongzhi.com/post/57.html 前端开发工程师和关注前端开发的开发者们在2015年中肯定被腾讯的JSSDk引爆过,搞APP的.搞前端的甚至是是搞后端 ...
- Spring使用标签注解来简化xml书写
一.步骤 在配置文件中,引入context命名空间 <beans xmlns="http://www.springframework.org/schema/beans" xm ...