实施自定义JMeter采样器
随着我们采用不同的体系结构和实现方式,对通用压力测试工具的需求不断增长。
Apache Jmeter是进行负载测试时最著名的工具之一。 它支持许多协议,例如ftp http tcp,并且可以轻松地用于分布式测试。
Jmeter还为您提供了一种创建自定义采样器的简便方法。 例如,如果您需要对HTTP终结点进行负载测试,而该终结点需要用于签名标头的特定过程,那么自定义采样器将派上用场。
目标是实现一个自定义采样器项目,该项目将对一个简单功能进行负载测试。
在此示例中,我使用gradle 。
group 'com.gkatzioura.jmeter'
version '1.0-SNAPSHOT'apply plugin: 'java'sourceCompatibility = 1.6repositories {mavenCentral()
}dependencies {compile 'org.apache.jmeter:ApacheJMeter_java:2.11'compile 'org.json:json:20151123'testCompile group: 'junit', name: 'junit', version: '4.11'
}task copySample(type:Copy,dependsOn:[build]) {copy {from project.buildDir.getPath()+'/libs/jmeter-sampler-1.0-SNAPSHOT.jar'into 'pathtoyourjmeterinstallation/apache-jmeter-2.13/lib/ext/'}
}
我包括对项目的ApacheJMeter依赖项,因为采样器将必须扩展AbstractJavaSamplerClient。 copySample任务会将jar复制到所有采样器所在的Jmeter的lib / ext路径中。
采样器将调用一个简单的函数:
package com.gkatzioura.jmeter;/*** Created by gkatzioura on 30/1/2016.*/
public class FunctionalityForSampling {public String testFunction(String arguement1,String arguement2) throws Exception {if (arguement1.equals(arguement2)) {throw new Exception();}else return arguement1+arguement2;}}
CustomSampler类扩展AbstractJavaSamplerClient类并调用testFunction。 通过覆盖getDefaultParameters函数,我们可以应用可与请求一起使用的默认参数。
package com.gkatzioura.jmeter;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.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.io.Serializable;/*** Created by gkatzioura on 30/1/2016.*/
public class CustomSampler extends AbstractJavaSamplerClient implements Serializable {private static final String METHOD_TAG = "method";private static final String ARG1_TAG = "arg1";private static final String ARG2_TAG = "arg2";private static final Logger LOGGER = LoggerFactory.getLogger(CustomSampler.class);@Overridepublic Arguments getDefaultParameters() {Arguments defaultParameters = new Arguments();defaultParameters.addArgument(METHOD_TAG,"test");defaultParameters.addArgument(ARG1_TAG,"arg1");defaultParameters.addArgument(ARG2_TAG,"arg2");return defaultParameters;}@Overridepublic SampleResult runTest(JavaSamplerContext javaSamplerContext) {String method = javaSamplerContext.getParameter(METHOD_TAG);String arg1 = javaSamplerContext.getParameter(ARG1_TAG);String arg2 = javaSamplerContext.getParameter(ARG2_TAG);FunctionalityForSampling functionalityForSampling = new FunctionalityForSampling();SampleResult sampleResult = new SampleResult();sampleResult.sampleStart();try {String message = functionalityForSampling.testFunction(arg1,arg2);sampleResult.sampleEnd();;sampleResult.setSuccessful(Boolean.TRUE);sampleResult.setResponseCodeOK();sampleResult.setResponseMessage(message);} catch (Exception e) {LOGGER.error("Request was not successfully processed",e);sampleResult.sampleEnd();sampleResult.setResponseMessage(e.getMessage());sampleResult.setSuccessful(Boolean.FALSE);}return sampleResult;}}
编译完成后,必须将创建的jar复制到JMeter安装目录的lib / ext目录。 同样,如果还有更多依赖项需要导入,则还应该将它们复制到JMeter安装目录的lib路径中。
通过将Java Sampler添加到JMeter线程组来完成该过程之后,我们可以选择我们的自定义采样器。
- 您也可以在此处找到源代码。
翻译自: https://www.javacodegeeks.com/2016/02/implement-custom-jmeter-samplers.html
实施自定义JMeter采样器相关推荐
- jmeter 采样器作用_实施自定义JMeter采样器
jmeter 采样器作用 随着我们采用不同的体系结构和实现方式,对通用压力测试工具的需求不断增长. 关于负载测试, Apache Jmeter是最知名的工具之一. 它支持许多协议,例如ftp http ...
- 使用Maven实施自定义JSF 2.0组件
前一段时间,我编写了自己的定制JSF组件. 但是在那个时候,JSF 1.0仍然是最新的,并且该项目没有使用maven作为构建系统. 因此,我一直想用maven编写一个自定义JSF2组件. 因此,让我们 ...
- Jmeter自定义Java请求
一.需求背景 在日常压测过程中,有些请求逻辑比较复杂的时候,Jmeter 中自带的sample取样器不够灵活,或者性能就会比较低了,这个时候就可以自己写java代码实现自己的请求. 二.准备工作 1. ...
- jmeter数据库负载测试_JMeter:负载测试关系数据库
jmeter数据库负载测试 Apache JMeter是完全使用Java编写的性能测试工具. 可以在请求/响应模型上运行的任何应用程序都可以使用JMeter进行负载测试. 关系数据库也不例外:接收sq ...
- JMeter:负载测试关系数据库
Apache JMeter是完全使用Java编写的性能测试工具. 可以在请求/响应模型上运行的任何应用程序都可以使用JMeter进行负载测试. 关系数据库也不例外:接收sql查询,执行它们并返回执行结 ...
- Jmeter基本使用到精通(一)从安装第一个任务线程的创建及测试
(一)jemter介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件, ...
- jmeter具体操作
一.Jmeter 简介 2.1. 我们为什么使用 Jmeter 开源,免费,.基于 Java 编写,可集成到其他系统可拓展各个功能插件 支持接口测试,压力(负载和压力)测试等多种功能,支持录制回放, ...
- JMeter官方文档阅读及实践笔记(上)
JMeter笔记 一.测试计划元件概览 本节简单介绍测试计划的不同部分. 最小测试将包括测试计划.线程组和一个或多个采样器. 1.Thread Group,线程组 线程组元素是任何测试计划的起点.所有 ...
- jmeter组件介绍
一. 性能测试 1.0 为什么要进行性能测试? 评估当前系统的能力 寻找性能瓶颈,优化系统性能 评估软件是否满足未来的需要 招聘需要 1.1 什么是性能 时间:系统处理用户请求的响应时间 资源:系统运 ...
最新文章
- json loads No JSON object could be decoded 问题解决
- [转载] 后台进程符的使用 [文摘]
- Quartz 入门详解
- musical.ly体验-这款国产外销的APP凭什么登上美国榜首?
- LeetCode Algorithm 389. 找不同
- 关于解决vue.js中组件的template内容不能换行的问题
- 工业无线遥控器 SUNRF-1011RC
- Android日志Log的封装以及每个级别的意义
- Git/mercurial...版本控制分支曲线图解析
- 音视频开发之旅(41)-天空盒
- 八数码问题c语言,启发式搜索算法解决八数码问题(C语言)
- 几个免费IP地址查询API接口
- Illustrator CS6中文版从新手到高手pdf
- IoT黑板报0209:工信部明确增加物联网网号
- H3C华三旁挂防火墙
- redis之十五(游标迭代器(过滤器)——Scan)
- 赛尔号和赛尔机器人_赛尔号大电影6垃圾星赛尔机器人介绍
- OAM 与 KubeVela:下一代云原生应用交付和管理实践
- Substrate 基础 -- 教程(Tutorials)
- 浅谈大数据风控平台的功能需求
热门文章
- c/c++ 字符串分割
- JDBC连接数据库教程,postgreSQL
- 转-Kafka【第一篇】Kafka集群搭建
- 变色龙引导_Arquillian变色龙。 简化您的Arquillian测试
- 网络研讨室_免费网络研讨会:Java应用程序中的吞咽异常
- 单例模式引发的内存泄漏:_资源泄漏:救援的命令模式
- 工业互联网二级节点建设_建设者还是二传手?
- jqgrid mvc_将JQGrid与Spring MVC和Gson集成
- javaone_JavaOne演讲者选择了您不容错过的10个会话
- Tomcat JDBC池–连接泄漏–捕获罪魁祸首