当前位置: 首页 > news >正文

Jmeter函数二次开发说明

jmeter 二次开发使用

jmeter二次开发实现方法

使用maven依賴进行开发

  1. 导入jmeter的maven依赖,需要和你使用的jmeter版本一致。

    • <!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_core -->
      <dependency><groupId>org.apache.jmeter</groupId><artifactId>ApacheJMeter_core</artifactId><version>5.6.3</version>
      </dependency>
      
  2. 现在就可以直接二次开发了。

  3. 然后将你开发好的代码直接放入jmeter中就可以直接运行了。

使用jmeter的jar包进行开发

  1. jmeter自带jar包位于:jmeter安装目录/lib/ext目录中。
  2. 将jar包导入自己的项目就可以进行二次开发了。
  3. 然后将你开发好的代码直接放入jmeter中就可以直接运行了。

jmeter 二次开发使用方法

函数开发

  1. 需要创建一个类继承AbstractFunction实现里面的四个抽象方法,代码如下。

    • package com.leisure.function;
      import com.leisure.utils.RSAUtil;
      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.util.ArrayList;
      import java.util.Collection;
      import java.util.List;public class RSAFunction extends AbstractFunction {// 函数传入的参数,可以在setParameters 方法中设置这个值,如果有多个参数就设置多个变量。测试的时候可以用无参构造方法private String data = "";// 算法名必须要使用'__'双下划线开头,且不能使用中文命名private static final String FUNCTION_NAME = "__RSAPublicEncryptFunction";/*** 执行函数体* @param sampleResult 代表了一个采样结果,即对一个特定请求的执行结果的所有信息记录。它包含了关于请求执行的各种详细信息* @param sampler 是JMeter中的一个基本元素,它是向服务器发送请求并记录响应的核心组件。每个sampler代表了一次具体的请求操作,比如HTTP请求、TCP请求、JDBC请求等。* @return 函数处理结果* @throws InvalidVariableException 异常*/@Overridepublic String execute(SampleResult sampleResult, Sampler sampler) throws InvalidVariableException {return RSAUtil.encryptByPublicKey(data);}/*** 设置函数的参数* @param collection 参数* @throws InvalidVariableException 异常*/@Overridepublic void setParameters(Collection<CompoundVariable> collection) throws InvalidVariableException {// 检测传入的参数是否就是一个checkParameterCount(collection, 1);// 获取出入的参数值Object[] object = collection.toArray();data = ((CompoundVariable)object[0]).execute();}/*** 设置函数名* @return 函数名*/@Overridepublic String getReferenceKey() {return FUNCTION_NAME;}/*** 设置参数说明* @return 参数说明*/@Overridepublic List<String> getArgumentDesc() {List<String> list = new ArrayList<>();list.add("需要加密的内容(必填): ");return list;}}
      
  2. 使用maven直接构建成一个jar包,获取这个jar包,将这个jar包放到jmeter的:D:\Program Files\apache-jmeter-5.6.3\lib\ext 目录下,重启jmter,然后在函数里面找自己定义的函数名就可以使用了。

  3. 注意:如果使用了第三方jar包就直接将第三方jar包放到:D:\Program Files\apache-jmeter-5.6.3\lib\ext 目录下就可以了。

  4. 注意:如果使用了特定文件直接使用我类构造器获取对应文件的InputStream流就可以直接读文件中的类容了。代码如下:

    • package com.leisure.config;import org.w3c.tidy.Out;import java.io.*;
      import java.net.URL;
      import java.net.URLDecoder;
      import java.nio.charset.StandardCharsets;
      import java.util.HashMap;
      import java.util.Map;
      import java.util.Objects;public class FilePathConfig {public static Map<String, Reader> paths;// 获取对应文件的Readpublic static Reader getFileReader(String  filename){paths = new HashMap<>();// 类加载器ClassLoader classLoader = FilePathConfig.class.getClassLoader();// 添加获取对应文件的Read  ,rsa/publicKeyStr.pem  这个文件的resource path ,在 idae中直接右键文件选择这个路径进行复制就行InputStream publicKeyStr = classLoader.getResourceAsStream("rsa/publicKeyStr.pem");assert publicKeyStr != null;Reader reader_publicKeyStr = new InputStreamReader(publicKeyStr, StandardCharsets.UTF_8);//将文件的Read存放得到Map中方便以后获取paths.put("publicKeyStr", reader_publicKeyStr);return paths.get(filename);}public static void main(String[] args) {Reader publicKeyStr = getFileReader("publicKeyStr");System.out.println(publicKeyStr);}}
      

相关文章:

Jmeter函数二次开发说明

jmeter 二次开发使用 jmeter二次开发实现方法 使用maven依賴进行开发 导入jmeter的maven依赖&#xff0c;需要和你使用的jmeter版本一致。 <!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_core --> <dependency><groupId>org.ap…...

重新学习STM32(1)GPIO

概念简介 GPIO 是通用输入输出端口的简称&#xff0c;简单来说就是 STM32 可控制的引脚。STM32 芯片通过 GPIO 引脚与外部设备连接起来&#xff0c;从而实现与外部通讯、控制以及数据采集的功能。 GPIO被分成很多组&#xff0c;比如 GPIOA和GPIOB等。所有的 GPIO引脚都有基本的…...

React+TS前台项目实战(二)-- 路由配置 + 组件懒加载 + Error Boundary使用

文章目录 前言一、路由配置和懒加载lazy的使用二、TS版本Error Boundary组件封装三、在layout组件中使用Suspense组件和错误边界组件总结 前言 本文将详细介绍项目中的页面路由配置和异步组件懒加载处理&#xff0c;以提高用户体验&#xff0c;实现过渡效果。 一、路由配置和懒…...

成为电商低价神秘顾客访问员的必备条件(深圳神秘顾客公司)

电商低价神秘顾客需要具备以下条件&#xff0c;以确保能够执行有效的调查任务并为企业提供有价值的反馈&#xff1a; 1、细致的观察能力&#xff1a;神秘顾客访问员需要具备细致的观察能力&#xff0c;能够全面、细致地观察电商平台的购物流程、商品详情、服务细节等。这包括注…...

现货黄金交易多少克一手?国内外情况大不同

如果大家想参与国际市场上的现货黄金交易&#xff0c;就应该从它交易细则的入手&#xff0c;先彻底认识这个品种&#xff0c;因为它是来自欧美市场的投资方式&#xff0c;所以无论是从合约的计的单位&#xff0c;计价的货币&#xff0c;交易的具体时间&#xff0c;以及买卖过程…...

LNMP与动静态网站介绍

Nginx发展 Nginx nginx http server Nginx是俄罗斯人 Igor Sysoev(伊戈尔.塞索耶夫)开发的一款高性能的HTTP和反向代理服务器。 Nginx以高效的epoll.kqueue,eventport作为网络IO模型&#xff0c;在高并发场景下&#xff0c;Nginx能够轻松支持5w并发连接数的响应&#xff0c;并…...

教育小程序开发:技术实现与实践案例

随着信息技术的不断进步&#xff0c;教育小程序在教育领域的应用越来越广泛。教育小程序开发不仅可以提高教学效率&#xff0c;还能够提供个性化的学习体验。本文将以技术代码为例&#xff0c;详细介绍教育小程序开发的关键技术和实践案例&#xff0c;帮助开发者更好地理解和实…...

LeetCode 746.使用最小花费爬楼梯

题目&#xff1a; 给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的最低花费…...

软件设计模式概述

一 软件模式概述 软件设计模式是在软件开发过程中经过验证的、可重复使用的最佳实践。 它们提供了解决常见设计问题的模板和指导方针&#xff0c;有助于开发人员编写高质量、可维护和可扩展的代码。 软件设计模式通常基于面向对象的编程范式&#xff0c;并利用封装、…...

短剧片源火爆,千金难求好剧源

前言 在当今快节奏的生活中&#xff0c;短剧以其精悍的篇幅、吸睛的剧情和便捷的观看方式&#xff0c;异军突起&#xff0c;吸引了大量观众的关注和喜爱。这些短剧不仅让人们在忙碌的间隙轻松娱乐&#xff0c;更以其高潮迭起的情节设计&#xff0c;让观众在短时间内便能体验到…...

MES系统定制 | 生产调度车间排班计划/MES排程排产

MES系统是一种集成化的生产信息化管理系统&#xff0c;通过实时收集和分析车间生产数据&#xff0c;帮助企业实现生产过程的自动化控制和监测。它可以跟踪生产计划、设备状态、物料流动等关键指标&#xff0c;并提供实时报表和决策支持。在这个系统中&#xff0c;车间班次排班是…...

【Anaconda】 anaconda常用命令总结

【Anaconda】 anaconda常用命令总结 一、创建虚拟环境二、激活/使用/进入某个虚拟环境三、退出当前环境四、复制某个虚拟环境五、删除某个环境六、查看当前所有环境七、查看当前虚拟环境下的所有安装包八、安装或卸载包(进入虚拟环境之后&#xff09;九、分享虚拟环境十、源服务…...

VIsio Professional 绘图

...

Flutter InAppWebView Unknown feature SUPPRESS_ERROR_PAGE

在使用InAppWebView的initialData加载html代码的时候,出现java.lang.RuntimeException: Unknown feature SUPPRESS_ERROR_PAGE的出错误 E/MethodChannel#flutter/platform_views(16853): Failed to handle method call E/MethodChannel#flutter/platform_views(16853):<...

linux系统PXE自动装机和无人值守

一、PXE 1.PXE&#xff1a;c/s模式&#xff0c;允许客户端通过网络从远程服务器&#xff08;服务端&#xff09;下载引导镜像&#xff0c;加载安装文件&#xff0c;实现自动化安装操作系统。&#xff08;c/s客户端和服务端都可以是多台&#xff09; 2.PXE优点&#xff1a;规模…...

大模型的高考数学成绩单:及格已经非常好了

让考生头皮发麻的高考数学&#xff0c;可难倒了顶尖 AI 大模型。 一年一度的高考即将落幕&#xff0c;衷心希望各位考生都超常发挥&#xff0c;考出满意的好成绩&#xff01;&#xff01; 和往年一样&#xff0c;除了让 AI 大模型写写高考作文&#xff0c;我们也选取了六家国…...

【漏洞复现】CraftCMS ConditionsController.php 代码执行漏洞(CVE-2023-41892)

0x01 产品简介 Crat CMS是一个开源的内容管理系统&#xff0c;它专注于用户友好的内容创建过程&#xff0c;逻辑清晰明了&#xff0c;是一个高度自由&#xff0c;高度自定义设计的平台&#xff0c;可以用来创建个人或企业网站也可以搭建企业级电子商务系统。 0x02 漏洞概述 …...

代码随想录算法训练营第三十八 |● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯

我在每一个算法开始之前都会去认真的看一下这个理论基础&#xff0c;或者说是算法的主要思想&#xff0c;可以直接看视频carl讲解的很清晰&#xff1b;其次还会大致看一下这一part中的题型及难度 动态规划理论基础讲解链接&#xff1a;https://programmercarl.com/%E5%8A%A8%E6…...

如何有效处理服务器后台密码暴露

服务器后台密码的暴露是信息安全领域中的严重事件&#xff0c;它可能引发未经授权的数据访问、恶意软件植入或系统功能滥用等一系列问题。本文将探讨几种处理服务器后台密码暴露的有效策略&#xff0c;包括紧急响应步骤、密码安全增强措施及长期预防机制&#xff0c;并提供实际…...

使用本地大模型调用代码,根本就是一场骗局!

通过大模型调用其他工具到底可不可行&#xff1f;ChatGPT 或许能轻松搞定一切&#xff0c;但同样的需求落在本地大模型上&#xff0c;恐怕就要打个问号了。 法国开发工程师 Emilien Lancelot 尝试了多款号称具备工具调用功能的 agent 框架&#xff0c;来看看本地大模型到底能不…...

AI学习 - 大模型基础入门

AI学习 - 大模型基础入门 从零开始&#xff1a;Ollama 安装 → 本地模型运行 → Python 代码接入 → 理解核心概念 摘要 本文记录了在 Windows 上使用 Ollama 部署本地大模型、并通过 Python 代码接入调用的完整过程。内容涵盖&#xff1a;Ollama 安装与模型拉取、大模型基础概…...

基于Arduino与nRF24L01+的无线传感器平台设计与部署指南

1. 项目概述与设计思路如果你和我一样&#xff0c;喜欢在阳台或者小院子里种点蔬菜瓜果&#xff0c;那你肯定也遇到过这样的烦恼&#xff1a;出门几天&#xff0c;心里总惦记着家里的番茄苗是不是缺水了&#xff0c;小温室里的温度会不会太高。传统的温湿度计只能让你在现场读数…...

独立开发者如何利用Taotoken Token Plan,以更低成本启动AI项目

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 独立开发者如何利用Taotoken Token Plan&#xff0c;以更低成本启动AI项目 对于独立开发者或小型团队而言&#xff0c;启动一个集成…...

如何用WaveTools终极优化《鸣潮》游戏性能:从卡顿到丝滑的完整指南

如何用WaveTools终极优化《鸣潮》游戏性能&#xff1a;从卡顿到丝滑的完整指南 【免费下载链接】WaveTools &#x1f9f0;鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 如果你正在玩《鸣潮》却频繁遭遇帧率波动、画面卡顿或操作延迟&#xff0c;那…...

Windows 11 LTSC安装微软商店的终极解决方案:3步恢复完整应用生态

Windows 11 LTSC安装微软商店的终极解决方案&#xff1a;3步恢复完整应用生态 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore LTSC-Add-MicrosoftStor…...

JavaScript对象创建:告别繁琐,四种灵活写法一学就会

在JavaScript里&#xff0c;创建对象的这般方法常把刚开始学习的新手弄得困惑不已&#xff0c;好像无论走哪条道都行得通&#xff0c;可又不清楚该挑哪一条才好。我编写JavaScript都有十几年功夫了&#xff0c;对象创建这事差不多每天都会碰到可谓基础技能。它不像变量声明那般…...

自动加字幕软件推荐:口播视频如何批量加字幕过

口播视频加字幕&#xff0c;为什么越做越累&#xff1f;一位知识类博主连续两周日更3条口播视频&#xff0c;每条12–18分钟&#xff0c;需手动校对字幕、拆分金句切片、补气口停顿、匹配背景音乐——最后一条视频发布时&#xff0c;字幕错漏率达17%&#xff0c;平台审核未过。…...

星露谷物语SMAPI模组加载器:从新手到专家的完整使用指南

星露谷物语SMAPI模组加载器&#xff1a;从新手到专家的完整使用指南 【免费下载链接】SMAPI The modding API for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/smap/SMAPI 星露谷物语SMAPI模组加载器是官方推荐的模组API&#xff0c;它为玩家和开发者提供…...

基于窗口比较器与晶体管逻辑的可编程非线性电压指示器设计

1. 项目概述&#xff1a;打造一个可编程的“移动光点”电压指示器在电子制作和仪器仪表领域&#xff0c;我们经常需要一个直观的电压指示器。经典的LM3914点/条图显示驱动芯片大家都很熟悉&#xff0c;它能把一个模拟电压信号转换成10个LED的点亮状态&#xff0c;形成移动的光点…...

DeepSeek代码审查配置避坑清单:12个被99%团队忽略的关键参数(含生产环境校验脚本)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek代码审查功能概览 DeepSeek 提供的代码审查&#xff08;Code Review&#xff09;能力基于其大语言模型对编程语义、安全规范与工程实践的深度理解&#xff0c;支持多语言静态分析、漏洞识别、可…...