性能测试Jmeter扩展学习-添加自定义函数
我们在使用jmeter的时候有时候会碰到jmeter现有插件或功能也无法支持的场景,比如前端加密,此时我们就需要自己手动编写函数并导入了,下面就是手动修改并导入的过程。
首先我们需要下载jmeter源码压缩包下来,我这里下载的是apache-jmeter-4.0_src.zip,下载解压后,此时直接导入jmeter源码是不行的,我们需要修改两个文件,如下图,将eclipse去掉即可,变成.classpath和.project。(注意下,去cmd命令下修改,ren 旧文件名 新文件名)

我们默认导入后,会发现lib下面没有任何jar包,所以我们需要下载下来,我们通过“Ant build”添加build.xml,然后就会读取配置文件所需的jar包,我们拉到下面双击选择“download_jars”将依赖的jar包全部下载下来。(这里需要一点时间,下载完后点击install即可,也是在download_jars”下方不远处)。install编译好后就会在ext下看到jmeter的核心jar。

我们可以通过右上角或者F4将jar包导入到src下面,否则很多import都会失败。然后在对jmeter路径进行配置,否则启动的话会出现启动失败。

然后在src->core->NewDriver启动即可打开jmeter了。
在这里我们写一个base64编码的函数,在src下新建目录->custom(这个名称随意),新建如下图所示:

代码如下:
package org.apache.jmeter.custom.functions; import com.sun.xml.bind.marshaller.MinimumEscapeHandler;
import org.apache.commons.math3.analysis.function.Min;
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 java.nio.charset.Charset;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import java.util.Base64; public class UTF8EcodingBase64 extends AbstractFunction {
private static final String KEY = "__UTF8EcodingBase64";
private static final List<String> desc = new LinkedList<>(); static{
desc.add("content");
} Object[] values; @Override
public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException {
String content = ((CompoundVariable) values[0]).execute().trim();
String encodeText = "";
Base64.Encoder encoder = Base64.getEncoder();
encodeText = encoder.encodeToString(content.getBytes(Charset.forName("UTF-8")));
return encodeText;
} @Override
public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException {
checkMinParameterCount(parameters, 1);
values = parameters.toArray();
} @Override
public String getReferenceKey() {
return KEY;
} @Override
public List<String> getArgumentDesc() {
return desc;
}
}
写完代码后我们还需要到build.xml下新增一些内容,新增内容如下:
<property name="src.custom" value="src/custom"/>
<property name="build.custom" value="build/custom"/> <target name="compile-custom" depends="compile-jorphan,compile-core" description="Compile example components.">
<mkdir dir="${build.custom}"/>
<javac srcdir="${src.custom}" destdir="${build.custom}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}"
includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}">
<include name="**/*.java"/>
<classpath>
<pathelement location="${build.jorphan}"/>
<pathelement location="${build.core}"/>
<path refid="classpath"/>
</classpath>
</javac>
</target> <target name="install-custom" depends="compile-custom" description="Build and installs the example components.">
<jar jarfile="${dest.jar}/ApacheJMeter_custom.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
<zipfileset file="${resources.meta-inf}/default.notice"
fullpath="META-INF/NOTICE" />
<zipfileset file="${resources.meta-inf}/default.license"
fullpath="META-INF/LICENSE" />
<fileset dir="${build.custom}" includes="**/*.class" />
<fileset dir="${src.custom}" includes="**/*.properties" />
</jar>
</target>
然后我们在Ant build下就可以看到我们新加的“install-custom”,我们双击就会生成class文件,然后再run就会编译产生jar包,最后拷贝jar包到jmeter的lib/ext目录下即可使用了。

下图为拷贝之后打开jmeter使用效果图:

性能测试Jmeter扩展学习-添加自定义函数的更多相关文章
- jmeter的使用--添加自定义函数和导入自定义jar
1.添加自定义函数,增加 号码生成函数 MobileGenerator和身份证生成函数IdCardGenerator 在package org.apache.jmeter.functions;中增加 ...
- JMeter接口学习笔记2017
协议学习地址:http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html 本篇学习笔记来自于慕课网上学习JMeter的学习笔记 学习 ...
- jmeter 工具学习 未完待续
about Apache JMeter是Apache组织的开源项目,是 一个纯Java桌面应用,用于压力测试和性能测试,它最初被设计用于 web应用测试,后来逐渐的扩展到其他领域 jmeter可以用于 ...
- KnockoutJS 3.X API 第七章 其他技术(6) 使用“fn”添加自定义函数
有时,您可能会通过向Knockout的核心值类型添加新功能来寻找机会来简化您的代码. 您可以在以下任何类型中定义自定义函数: 因为继承,如果你附加一个函数到ko.subscribable,它将可用于所 ...
- 【转】Jmeter变量参数化及函数应用
我们在使用Jmeter录制脚本后,经常会对已录制的脚本进行修改,需要把一些参数使用一些变量替代,Jmeter是支持这些功能的,不过是通过函数实现的.下面举一个简单的例子,使用随机数替代一个参数: 打开 ...
- Jmeter变量参数化及函数应用
分类: 测试工具 2006-12-14 10:54 12041人阅读 评论(5) 收藏 举报 javascriptloadrunnerrandom脚本测试多线程 我们在使用Jmeter录制脚本后,经常 ...
- JMeter参数化设置——通过函数助手
Now you can know everything in the world, but the only way you're findin' out that one is by givin' ...
- JMeter扩展插件实现对自定义协议进行支持 转
本文版权归xmeter.net 所有.欢迎转载,转载请注明出处. 摘要## JMeter本身提供了插件机制,允许第三方扩展JMeter以支持JMeter不支持的协议的测试.本文以扩展一个简单的Apac ...
- luogu P5410 模板 扩展 KMP Z函数 模板
LINK:P5410 模板 扩展 KMP Z 函数 画了10min学习了一下. 不算很难 思想就是利用前面的最长匹配来更新后面的东西. 复杂度是线性的 如果不要求线性可能直接上SA更舒服一点? 不管了 ...
随机推荐
- List集合1
一.List接口介绍 List继承自Collection接口,是单列集合的一个重要分支,习惯性的会将实现List接口的对象称为List集合 二.List接口3个特点 1.有序(有序不是顺序,有序指的是 ...
- XenServer7.6命令行导出导入虚拟机(迁移)
一:命令行方法导出虚拟机(先关闭虚拟机) 1.1:打印虚拟机列表 xe vm-list uuid ( RO) : 43dfac04-515e-7769-b2d2-444d4b7cb198 name-l ...
- python常见错误
最近刚刚接触Python,为了养成好习惯,遇到了诸多的问题,林林总总,在这里简单记录下: 编写简单的python语句时: module level import not at top of file ...
- Matlab_audiowrite_音频生成
输出音频文件所需函数为 audiowrite .通过例程进行解释: % 生成时间序列 fs = 5000; % [Hz] 信号采样频率 T = 1; % [s] 信号长度 x = 0:1/fs:T; ...
- python爬虫挂代理
以下是GET的方法,使用的代理接口网站是 http://www.xicidaili.com/nn/ #-*- coding:utf-8 -*- from bs4 import BeautifulSou ...
- 非常好的开源C项目tinyhttpd(500行代码)
编译命令 gcc -W -Wall -lpthread -o httpd httpd.c 源码 #include <stdio.h> #include <sys/socket.h&g ...
- NAS (Network Attached Storage)
当电脑硬盘容量满了,多数使用者第一个想法就是买一块几TB的硬盘来扩充,如果是笔电的使用者,第一个想到的是买一个外接式硬盘来备份资料,这样的想法并没有错,那是当你还不知道有「NAS」这个好用的东西,才会 ...
- hdu 1754 I Hate It (单点修改+区间最值+裸题)
Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...
- linux_wget 使用
一.Linux之安装软件之wget安装方法使用 https://www.cnblogs.com/peida/archive/2013/03/18/2965369.html
- vc6.0使用
1.文件结构 工作空间dsw 工程1 Source file .cpp,main Header file .h Resource files 工程2 ...