java扩展jmeter依赖

前置条件

创建一个maven项目, 引入依赖

<dependency><groupId>org.apache.jmeter</groupId><artifactId>ApacheJMeter_core</artifactId><version>3.2</version>
</dependency>
<dependency><groupId>org.apache.jmeter</groupId><artifactId>ApacheJMeter_java</artifactId><version>3.2</version>
</dependency>// 用于函数助手开发
<dependency><groupId>org.apache.jmeter</groupId><artifactId>ApacheJMeter_functions</artifactId><version>3.2</version>
</dependency>

若引入依赖失败,找到仓库内的文件,删除,reimport一下依赖即可

默认路径 /Users/lvxueqing/.m2/repository/org/apache/jmeter

一、Java请求开发

方式1 继承AbstractJavaSamplerClient类

public class First extends AbstractJavaSamplerClient {public SampleResult runTest(JavaSamplerContext javaSamplerContext) {System.out.println(" 我的demo!!!!");return null;}
}

使用方式:

1)到idea终端 打包 mvn clean package

2)将打包后生成的文件,放到jmeter的/apache-jmeter-5.2.1/lib/ext路径下

3)重启jemter

4)添加线程组,添加java请求,可看到刚刚写好的类

5)点击运行 日志打印了

方式2 实现JavaSamplerClient接口

public class Second implements JavaSamplerClient {private static final String URLNAME="URL"; //jmeter属性中显示的变量名称private static final String DEFAULTURL="http://www.baidu.com"; //jmeter属性中显示的变量值private String resultData; // 存储响应数据,将结果放到查看结果树里/*** 决定了jmeter中要展示哪些属性, 第一个运行*/public Arguments getDefaultParameters() {System.out.println("getDefaultParameters  run!! ");Arguments arguments = new  Arguments();arguments.addArgument(URLNAME,DEFAULTURL);return arguments;}//接收用户输入的URLprivate String inputUrl ;/*** 初始化的方法*/public void setupTest(JavaSamplerContext javaSamplerContext) {System.out.println("setupTest  run!! ");inputUrl = javaSamplerContext.getParameter(URLNAME,DEFAULTURL);System.out.println("用户输入的url地址是  " + inputUrl);}/*** 具体功能逻辑的方法*/public SampleResult runTest(JavaSamplerContext javaSamplerContext) {System.out.println("runTest  run!! ");SampleResult sampleResult = new SampleResult();StringBuilder sb = new StringBuilder();try {URL url = new URL(inputUrl);URLConnection conn = url.openConnection();byte[] buffer = new byte[1024];int len;sampleResult.sampleStart(); // 标记事务开始InputStream in = conn.getInputStream();while ((len=in.read(buffer)) != -1){resultData = new String(buffer,"UTF-8");sb.append(resultData);}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}//        resultData = "这就是响应结果";resultData = sb.toString();sampleResult.setSuccessful(true); // 告诉查看结果树 请求是否成功sampleResult.setSampleLabel("自定义java访问请求");sampleResult.setResponseData(resultData,"UTF-8");sampleResult.setDataType(SampleResult.TEXT);return sampleResult;}/*** 做一些收尾工作的方法*/public void teardownTest(JavaSamplerContext javaSamplerContext) {System.out.println("teardownTest  run!! ");}}

结果展示

二、函数助手开发

注意: 函数相关类要放到functions目录下

public class Plus extends AbstractFunction {private Object[] values;private CompoundVariable first,second; // 存储第一个和第二个参数/*** 执行方法*/public String execute(SampleResult sampleResult, Sampler sampler) throws InvalidVariableException {System.out.println(" execute  run ");first = (CompoundVariable) values[0];System.out.println("第一个参数是 " + first);second = (CompoundVariable) values[1];System.out.println("第二个参数是 " + second);int count = new Integer(first.execute().trim()) + new Integer(second.execute().trim()) ;System.out.println("和 " + count);return String.valueOf(count);}/*** 设置参数, 接收用户传递的参数*/public void setParameters(Collection<CompoundVariable> collection) throws InvalidVariableException {System.out.println(" setParameters  run ");checkParameterCount(collection,2);values = collection.toArray();}/*** 功能名称*/public String getReferenceKey() {System.out.println(" getReferenceKey  run ");return "__MyDemoPlus";}/*** 功能描述 参数描述*/public List<String> getArgumentDesc() {System.out.println(" getArgumentDesc  run ");List desc = new ArrayList();desc.add("第一个数");desc.add("第二个数");return desc;}
}

使用方式:

1)到idea终端 打包 mvn clean package

2) 将打包后生成的jar文件,放到jmeter的/apache-jmeter-5.2.1/lib/ext路径下

3)重启jemter

结果展示

结果可展示在日志中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/674.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NIO学习

文章目录 前言一、主要模块二、使用步骤1.服务器端2.客户端 三、NIO零拷贝(推荐)四、NIO另一种copy总结 前言 NIO是JDK1.4版本带来的功能,区别于以往的BIO编程,同步非阻塞极大的节省资源开销&#xff0c;避免了线程切换和上下文切换带来的资源浪费。 一、主要模块 Selector&a…

【Linux学习】Linux编辑器-vim使用

这里写目录标题 1. &#x1f320;vim的基本概念&#x1f320;2. vim的基本操作&#x1f320;3.vim异常处理&#x1f320;4. vim正常模式的相关命令&#x1f320;5. vim末&#xff08;底&#xff09;行模式相关命令 vi/vim都是多模式编辑器&#xff0c;不同的是vim是vi的升级版本…

达梦数据库一体机树立金融解决方案标杆

达梦数据库一体机自问世以来&#xff0c;获得众多行业用户的高度关注&#xff0c;并率先在金融行业吹响冲锋号角&#xff0c;实现多个重大项目的落地应用。近日&#xff0c;珠海华润银行股份有限公司基于达梦数据库一体机 I 系列的《数据库一体机银行多业务系统集中部署解决方案…

(保姆级教学)跨站请求伪造漏洞

1. CSRF漏洞 CSRF&#xff08;Cross-site request forgery&#xff09;跨站请求伪造&#xff0c;也被称为One Click Attack 或者Session Riding&#xff0c;通常缩写为CSRF或者XSRF&#xff0c;是一种对网站的恶意利用。尽管听起来像跨站脚本&#xff08;XSS&#xff09;&…

数据结构和算法:动态规划

初探动态规划 动态规划&#xff08;dynamic programming&#xff09;是一个重要的算法范式&#xff0c;它将一个问题分解为一系列更小的子问题&#xff0c;并通过存储子问题的解来避免重复计算&#xff0c;从而大幅提升时间效率。 例题&#xff1a;爬楼梯 给定一个共有 &…

电机控制专题(三)——Sensorless之有功磁链Active Flux电压模型

文章目录 电机控制专题(三)——Sensorless之有功磁链Active Flux电压模型前言理论推导仿真验证总结参考文献 电机控制专题(三)——Sensorless之有功磁链Active Flux电压模型 前言 总结下电机控制中的有功磁链Active Flux(AF)模型。 纯小白&#xff0c;如有不当&#xff0c;轻…

OpenHarmony实战开发-Web自定义长按菜单案例。

介绍 本示例介绍了给Webview页面中可点击元素&#xff08;超链接/图片&#xff09;绑定长按/鼠标右击时的自定义菜单的方案。 效果预览图 使用说明 长按Web页面中的图片或者链接元素&#xff0c;弹出自定义的Menu菜单&#xff0c;创建自定义的操作&#xff0c;如复制图片、使…

【NLP练习】使用Word2Vec实现文本分类

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、数据预处理 1. 任务说明 本次加入Word2Vec使用PyTorch实现中文文本分类&#xff0c;Word2Vec则是其中的一种词嵌入方法&#xff0c;是一种用于生成词向量…

2001-2022上市公司数字化转型数据(含原始数据+计算代码+计算结果)

2001-2022上市公司数字化转型数据&#xff08;含原始数据计算代码计算结果&#xff09; 1、时间&#xff1a;2001-2022年 2、来源&#xff1a;原始数据整理自wind 3、指标&#xff1a;证券代码、证券简称、统计截止日期、是否发生ST或*ST或PT、是否发生暂停上市、行业代码、…

戴尔电脑怎么关闭开机密码?

1.同时按键盘上是“window键”&#xff08;一般是键盘最下面一排第二个&#xff09;和“R键“&#xff0c;并在弹出的窗口输入“netplwiz”然后确定。 2.然后会弹出的“用户账户”窗口&#xff0c;接下来取消勾选“要使用本计算机&#xff0c;用户必须输入用户名和密码” 3.上面…

每日算法练习(1)

开一个新坑&#xff0c;记录下自己每天的算法练习&#xff0c;希望自己通过1个多月的学习&#xff0c;能够成为算法大神。 下面正式开始新坑。 两个数组的交集 这是牛客上的题&#xff0c;根据题意&#xff0c;我们有多种解法&#xff0c;这题用哈希比较好写。我们可以弄一个…

Java 变得越来越像 Rust?

随着编程技术的增强和复杂性的提升&#xff0c;许多编程语言也纷纷效仿&#xff0c;Java 也不例外。 另一边&#xff0c;尽管社区内部问题重重&#xff0c;但 Rust 仍逐年获得开发人员的喜爱。这背后都是有原因的&#xff1a;Rust 的编译器让开发人员避免了各种问题。编译器对…

【GlobalMapper精品教程】074:从Lidar点云创建3D地形模型

本文基于地形点云数据,基于泊松方法、贪婪三角形测量方法和阿尔法形状创建3d地形模型。 文章目录 一、加载地形点云数据二、创建三维地形模型1. 泊松方法2. 贪婪三角形测量方法3. 阿尔法形状注意事项一、加载地形点云数据 加载配套案例数据包中的data074.rar中的地形点云数据…

3D地图大屏 附源码(Three.js + Vue3)

目录 &#x1f44b; 前言 &#x1f680; 项目包 ⚒️ 字体制作 &#x1f310; 地图制作 &#x1f4a1; 参考视频 & 项目 开源项目&#xff08;Vue3tsWindcssEchartThree.js大屏案例&#xff09; 开源&#xff08;教程&#xff09; UI风格学习&#xff08; www.shuzixs.com …

java调用讯飞星火认知模型

前往讯飞开发平台选择产品&#xff0c;获取appId、apiKey、APISecret&#xff0c;这里我选择的是v3.0模型。 java后端实现 本项目以及实现了基本的会话功能&#xff0c;小伙伴可以自己扩充其他的例如绘画功能。 注意&#xff1a;星火模型的api使用的是websocket协议&#xf…

c 多文件编程

1.结构目录 声明类:用于声明方法,方便方法管理和调用&#xff1b; 实现类:用于实现声明的方法; 应用层:调用方法使用 写过java代码的兄弟们可以这么理解&#xff1a; 声明类 为service层 实现类 为serviceimpl层 应用层 为conlloter层 2.Dome 把函数声明放在头文件xxx.h中&…

与上级意见不合时如何恰当地表达自己的观点?

在工作中与上级意见不合时&#xff0c;恰当表达自己的观点并寻求共识是一个需要谨慎处理的问题。以下是一些建议&#xff1a; 1. **尊重与礼貌**&#xff1a;在任何情况下&#xff0c;都应保持对上级的尊重和礼貌。即使在意见不合时&#xff0c;也要避免情绪化&#xff0c;保持…

200页图解国标《数据分类分级规则》正式稿,强化重要数据识别

GB/T 43697-2024《数据安全技术 数据分类分级规则》正式稿发布&#xff0c;并于2024年10月1日实施。2024年4月17日&#xff0c;国家标准全文公开系统公布了国标最终版。《数据分类分级规则》是全国网安标委更名后&#xff0c;发布的第一部以“数据安全技术”命名的国家标准&…

Python-VBA函数之旅-enumerate函数

目录 1、enumerate函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、相关文章&#xff1a; 个人主页&#xff1a;非风V非雨-CSDN博客 enumerate函数在Python中是一个强大的内置函数&#xff0c;用于将一个可迭代对象转换为一个索引序列&#xff0c;同时返…

java-spring 图灵 04 doscan

01.本次的重点依旧是扫描函数&#xff0c;这次是spring中的源码&#xff1a; 02.第一步&#xff0c;构造AnnotationConfigApplicationContext 主方法&#xff1a; public static void main(String[] args) {// 创建一个Spring容器AnnotationConfigApplicationContext applica…