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";//设置界面当中默认显示的变 ...
随机推荐
- 使用curl上传报错问题排查
1. THE STOR COMMAND 说明存储出了问题,处理方案: 方案1: 请检查ftp服务器存储是否已满,若已满则清理一下空间即可. 方案2: 若ftp服务器存储未满,请检查是否有上传了的文件, ...
- How do I get the lowest value of all the non zero value pixels?
How do I get the lowest value of all the non zero value pixels? 问题就是题目:如何从图像中获得非零的最小值. 优质解答: You can ...
- [编织消息框架][rpc]使用篇
rpc 分两部份,一个是调用者,另一方是服务提供者 调用者只关心那个服务,传相应参数,返回内容就可以 而提供者根据调用相应服务同参数,工作处理后响应内容即可 根据他们的关系可以用JAVA 接口同实现类 ...
- 深度神经网络(DNN)的正则化
和普通的机器学习算法一样,DNN也会遇到过拟合的问题,需要考虑泛化,这里我们就对DNN的正则化方法做一个总结. 1. DNN的L1&L2正则化 想到正则化,我们首先想到的就是L1正则化和L2正 ...
- 【数据标识】iOS App下载渠道的统计需求
需求概述 我们现在有一个需求,某一个活动需要拉新所谓的拉新一般是推App下载,这个用户通过这个活动下载了App后,我们需要做到[在数据库中记录这个用户下载这个App是通过那个二维码渠道的,从效果上说, ...
- 查找第K小数
题目描述 查找一个数组的第K小的数,注意同样大小算一样大. 如 2 1 3 4 5 2 第三小数为3. 输入描述: 输入有多组数据.每组输入n,然后输入n个整数(1<=n<=1000), ...
- SqlServer建立存储过程,方便.NET插入自增字段
首先,需要在数据库中创建一个表,以在test数据库创建tableNo表为例: create table tablesNo ( tableName ) not null, --表名 num int no ...
- 1081: [SCOI2005]超级格雷码
1081: [SCOI2005]超级格雷码 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 301 Solved: 159[Submit][Statu ...
- wxpython tab切换页面
最近没事学习下wxpython,发现很少有关于页面切换的demo,这边分享下2中切换的方法.第一种:利用wx.Notebook第二种:利用Sizer布局实现(自己写的),代码没有涉及到什么重构之类的优 ...
- java构造函数使用方法总结
使用构造器时需要记住: 1.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名) 2.每个类可以有一个以上的构造器 3.构造器可以有0个.1个或1个以上的参数 4.构造器没有返回 ...