随着我们采用不同的体系结构和实现方式,对通用压力测试工具的需求不断增长。

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采样器相关推荐

  1. jmeter 采样器作用_实施自定义JMeter采样器

    jmeter 采样器作用 随着我们采用不同的体系结构和实现方式,对通用压力测试工具的需求不断增长. 关于负载测试, Apache Jmeter是最知名的工具之一. 它支持许多协议,例如ftp http ...

  2. 使用Maven实施自定义JSF 2.0组件

    前一段时间,我编写了自己的定制JSF组件. 但是在那个时候,JSF 1.0仍然是最新的,并且该项目没有使用maven作为构建系统. 因此,我一直想用maven编写一个自定义JSF2组件. 因此,让我们 ...

  3. Jmeter自定义Java请求

    一.需求背景 在日常压测过程中,有些请求逻辑比较复杂的时候,Jmeter 中自带的sample取样器不够灵活,或者性能就会比较低了,这个时候就可以自己写java代码实现自己的请求. 二.准备工作 1. ...

  4. jmeter数据库负载测试_JMeter:负载测试关系数据库

    jmeter数据库负载测试 Apache JMeter是完全使用Java编写的性能测试工具. 可以在请求/响应模型上运行的任何应用程序都可以使用JMeter进行负载测试. 关系数据库也不例外:接收sq ...

  5. JMeter:负载测试关系数据库

    Apache JMeter是完全使用Java编写的性能测试工具. 可以在请求/响应模型上运行的任何应用程序都可以使用JMeter进行负载测试. 关系数据库也不例外:接收sql查询,执行它们并返回执行结 ...

  6. Jmeter基本使用到精通(一)从安装第一个任务线程的创建及测试

    (一)jemter介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件, ...

  7. jmeter具体操作

    一.Jmeter 简介 2.1. 我们为什么使用 Jmeter 开源,免费,.基于 Java 编写,可集成到其他系统可拓展各个功能插件 支持接口测试,压力(负载和压力)测试等多种功能,支持录制回放, ...

  8. JMeter官方文档阅读及实践笔记(上)

    JMeter笔记 一.测试计划元件概览 本节简单介绍测试计划的不同部分. 最小测试将包括测试计划.线程组和一个或多个采样器. 1.Thread Group,线程组 线程组元素是任何测试计划的起点.所有 ...

  9. jmeter组件介绍

    一. 性能测试 1.0 为什么要进行性能测试? 评估当前系统的能力 寻找性能瓶颈,优化系统性能 评估软件是否满足未来的需要 招聘需要 1.1 什么是性能 时间:系统处理用户请求的响应时间 资源:系统运 ...

最新文章

  1. json loads No JSON object could be decoded 问题解决
  2. [转载] 后台进程符的使用 [文摘]
  3. Quartz 入门详解
  4. musical.ly体验-这款国产外销的APP凭什么登上美国榜首?
  5. LeetCode Algorithm 389. 找不同
  6. 关于解决vue.js中组件的template内容不能换行的问题
  7. 工业无线遥控器 SUNRF-1011RC
  8. Android日志Log的封装以及每个级别的意义
  9. Git/mercurial...版本控制分支曲线图解析
  10. 音视频开发之旅(41)-天空盒
  11. 八数码问题c语言,启发式搜索算法解决八数码问题(C语言)
  12. 几个免费IP地址查询API接口
  13. Illustrator CS6中文版从新手到高手pdf
  14. IoT黑板报0209:工信部明确增加物联网网号
  15. H3C华三旁挂防火墙
  16. redis之十五(游标迭代器(过滤器)——Scan)
  17. 赛尔号和赛尔机器人_赛尔号大电影6垃圾星赛尔机器人介绍
  18. OAM 与 KubeVela:下一代云原生应用交付和管理实践
  19. Substrate 基础 -- 教程(Tutorials)
  20. 浅谈大数据风控平台的功能需求

热门文章

  1. c/c++ 字符串分割
  2. JDBC连接数据库教程,postgreSQL
  3. 转-Kafka【第一篇】Kafka集群搭建
  4. 变色龙引导_Arquillian变色龙。 简化您的Arquillian测试
  5. 网络研讨室_免费网络研讨会:Java应用程序中的吞咽异常
  6. 单例模式引发的内存泄漏:_资源泄漏:救援的命令模式
  7. 工业互联网二级节点建设_建设者还是二传手?
  8. jqgrid mvc_将JQGrid与Spring MVC和Gson集成
  9. javaone_JavaOne演讲者选择了您不容错过的10个会话
  10. Tomcat JDBC池–连接泄漏–捕获罪魁祸首