Jmeter函数组件开发
插件开发方法有两种:
一、在jmeter官网下载jmeter源码,在源码里面新加函数,然后导出jar;
二、不下载源码,直接导入jmeter相应的jar包,即可开发。(推荐)
下面介绍第二种开发方法:
在eclipse新建项目,导入jmeter目录下\lib\ext目录中的的ApacheJMeter_core.jar,继承AbstractFunction类。
案例:以下写一个计算阶乘的Function,将其命名为Factorial,主要代码参考如下,
- import java.util.Collection;
- import java.util.LinkedList;
- import java.util.List;
- import org.apache.jmeter.engine.util.CompoundVariable;
- import org.apache.jmeter.functions.AbstractFunction;
- import org.apache.jmeter.functions.InvalidVariableException;
- import org.apache.jmeter.samplers.SampleResult;
- import org.apache.jmeter.samplers.Sampler;
- import org.apache.jmeter.util.JMeterUtils;
- import org.apache.jorphan.logging.LoggingManager;
- import org.apache.log.Logger;
- public class Factorial extends AbstractFunction {
- private static final Logger log = LoggingManager.getLoggerForClass();
- private static final List<String> desc = new LinkedList<String>();
- private static final String KEY = "__factorial";
- private Object[] values = null;
- static {
- desc.add("factorial_value");
- }
- //描述参数
- @Override
- public List<String> getArgumentDesc() {
- // TODO Auto-generated method stub
- return desc;
- }
- //函数执行,返回结果
- @Override
- public String execute(SampleResult previousResult, Sampler currentSampler)
- throws InvalidVariableException {
- // TODO Auto-generated method stub
- String numberString = ((CompoundVariable) values[0]).execute().trim();
- int num;
- try{
- num = Integer.valueOf(numberString);
- } catch (Exception e){
- return null;
- }
- return String.valueOf(factorial(num));
- }
- //获取函数引用关键字
- @Override
- public String getReferenceKey() {
- // TODO Auto-generated method stub
- return KEY;
- }
- //设置参数
- @Override
- public void setParameters(Collection<CompoundVariable> parameters)
- throws InvalidVariableException {
- // TODO Auto-generated method stub
- //可以检查参数数量,主要包括以下两种方法
- checkMinParameterCount(parameters, 1);
- checkParameterCount(parameters, 1, 1);
- values = parameters.toArray();
- }
- private int factorial(int num){
- int result = 1;
- if(num < 0){
- return -1;
- }
- if(num == 0){
- result = 1;
- } else {
- for(int i = num; i > 0; i--){
- result *= i;
- }
- }
- return result;
- }
- }
通过继承AbstractFunction抽象类,重写getArgumentDesc方法实现对函数参数的描述,重写setParameters方法来对函数的参数进行检查和设置,重写getReferenceKey方法告诉JMeter该函数在框架中的引用名称,重写execute方法,实现对该函数的执行并返回结果。通过上述代码我们完成了对Factorial函数组件的编写。
将代码导出为jar文件,放在\lib\ext目录中,打开jmeter即可在函数助手中查看到该函数组件:
Jmeter函数组件开发的更多相关文章
- Jmeter扩展组件开发(10) - 自定义扩展函数助手的开发
CODE package com.functions;import org.apache.jmeter.engine.util.CompoundVariable;import org.apache.j ...
- Jmeter扩展组件开发(8) - 函数助手扩展开发demo
前提条件 1.pom文件引用ApacheJMeter_functions包 <dependency> <groupId>org.apache.jmeter</groupI ...
- Jmeter扩展组件开发(2) - 扩展开发第一个demo的实现
maven工程src目录介绍 main:写代码 main/java:写Java代码 main/resources:写配置文件 test:写测试代码 test/java demo实现 创建Package ...
- Jmeter扩展组件开发(1) - 创建maven工程
前言 没有安装IDEA的伙伴先安装.url:https://www.cnblogs.com/gltou/p/14956060.html 扩展开发实现的两种方式 继承AbstracJavaSampler ...
- Jmeter扩展组件开发(9) - 解决空指针问题
问题分析 上一节https://www.cnblogs.com/gltou/p/14967005.html功能描述内容为空,导致Jmeter报空指针 CODE List desc = new Arra ...
- Jmeter扩展组件开发(7) - 自定义java请求的开发
CODE package com.demo;import org.apache.jmeter.config.Arguments;import org.apache.jmeter.protocol.ja ...
- Jmeter扩展组件开发(6) - 将响应结果数据显示到查看结果树中
CODE //用来存储响应数据,目的是将响应结果放到查看结果树当中private String resultData;/** 这个方法就是实现你具体功能逻辑的方法* @param javaSample ...
- Jmeter扩展组件开发(5) - 初始化方法的作用与实现
CODE //URLNAME 就是在图形化界面当中显示的变量名称private static final String URLNAME = "URL";//设置界面当中默认显示的变 ...
- Jmeter扩展组件开发(4) - 自定义参数的实现
CODE //URLNAME 就是在图形化界面当中显示的变量名称private static final String URLNAME = "URL";//设置界面当中默认显示的变 ...
随机推荐
- 浅谈iOS程序员的成长和进阶
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...
- JDBC链接mysql数据库
Unit_1 首先:JDBC:java database connectivity SUN公司提供的一套操作数据库的标准规范. JDBC与数据库驱动的关系是接口与实现的关系. JDBC涉及到四个核心的 ...
- jeesite简单入口分析
这两天要开新项目 , 准备使用比较受欢迎的 jeesite框架 . jeesite是一个写好的网站 , 用到的框架比较多 具体请看 -- > github链接 下载下来之后 , 手动把maven ...
- cookie跨域和js跨域问题
js跨域:主机名,协议,端口号只要有任何一个不同,就不能成立
- 每天一个Linux命令(04)--mkdir命令
Linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录. 1.命令格式: mkdir [选项]目录 2.命令功能: ...
- VUE2.0实现购物车和地址选配功能学习第五节
第五节 单件商品金额计算和单选全选功能 1.vue精髓在于操作data模型来改变dom,渲染页面,而不是直接去改变dom 2.加减改变总金额功能: html:<div class="c ...
- javascript组成概述认识
这里的JavaScript组成概述是说的在浏览器端渲染的JavaScript而不是nodejs js组成概述 js的完整实现是由ECMAscript.DOM.BOM三个部分组成的: -ECMAscri ...
- ajax 做登录 实现页面免刷新
结合之前学的知识,可以用ajax来传递数据,实现页面不用刷新,仅数据刷新,来看一下ajax是怎么来实现页面免刷新的 方的是客户端,圆的是服务器 如果没有ajax的话,客户端直接把数据传给服务器,服务器 ...
- RMI原理及简单示例
分布式对象 在学习 RMI 之前,先来分布式对象(Distributed Object):分布式对象是指一个对象可以被远程系统所调用.对于 Java 而言,即对象不仅可以被同一虚拟机中的其他客户程序( ...
- Spring总结_04_容器和bean
一.概念理解 1.容器 IoC容器负责容纳并管理bean,在Spring中,BeanFactory是IoC容器的核心接口. 它的职责包括:实例化.定位.配置应用程序中的对象及建立这些对象间的依赖. ...