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);}}
      

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

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

相关文章

uniapp,微信小程序,在map组件外与中的代码区别

需求&#xff1a;整屏地图&#xff0c;需要在地图上方编写筛选条件&#xff0c;地图中标注经纬度定位与自定义样式 次情形仅用于微信小程序&#xff0c;其他的没去验证过 1&#xff0c;在地图上方编写赛选条件&#xff0c;及其他&#xff0c;不需要根据地图经纬度进行定位&…

大模型初学者怎么入门大语言模型(LLM)?

前言 在当今的科技浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;和机器学习技术已经取得了长足的进步&#xff0c;其中大模型的发展尤为引人注目。大模型&#xff0c;通常指的是拥有海量参数、能够处理复杂任务的深度学习模型&#xff0c;如自然语言处理&#xff08;…

将字符串转换为Python数据类型

ast.literal_eval() 用于将字符串转换为Python数据类型&#xff0c;如列表、字典等&#xff0c;是安全且有限制的。 eval() 可以执行任意的Python代码&#xff0c;但存在安全风险&#xff0c;应避免使用。 json.loads() 用于将JSON字符串转换为Python对象&#xff0c;如字典…

RT-DETR 详解之 Uncertainty-minimal Query Selection

引言 在上一章博客中博主已经完成查询去噪向量构造部分的讲解&#xff08;DeNoise&#xff09;在本篇博客中&#xff0c;我们将进行Uncertainty-minimal Query Selection创新点的讲解。 Uncertainty-minimal Query Selection是RT-DETR提出的第二个创新点&#xff0c;其作用是…

UE5 Sequencer 使用指导 - 学习笔记

https://www.bilibili.com/video/BV1jG411L7r7/?spm_id_from333.337.search-card.all.click&vd_source707ec8983cc32e6e065d5496a7f79ee6 Sequencer 01 1.1 调整视口 调整窗口数量 调整视口类型为Cinematic视口 视口显示网格&#xff0c;或者条件参考线 1.2 关卡动画与…

bexcel

import requests from lxml import etree from time import sleep import numpy as np from openpyxl import Workbook # 进行UA伪装 headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.3…

QT QString字符串去除空白方法

空白包括 \t’, ‘\n’, ‘\v’, ‘\f’, ‘\r’, ’ ’ 1.去除字符串前面的空格 QString str1 " 1 2 3 "; str1.remove(QRegExp("^ \\s*")); //结果&#xff1a;“1 2 3”2.去除字符串后面的空格 QString str2 " 4 5 6 ";str2.remove(QRegE…

架构设计-用户信息及用户相关的密码信息设计

将用户的基本信息和用户密码存放在不同的数据库表中是一种常见的安全做法&#xff0c;这种做法旨在增强数据的安全性和管理的灵活性。以下是这种做法的几个关键原因&#xff1a; 安全性增强&#xff1a; 当用户密码被单独存放在一个表中时&#xff0c;可以使用更强大的加密和哈…

计算机毕业设计 | SpringBoot+vue的教务管理系统

1&#xff0c;绪论 1.1 项目背景 在这个资讯高度发展的时代&#xff0c;资讯管理变革已经是一个更为宽泛、更为全面的潮流。为了保证中国的可持续发展&#xff0c;随着信息化技术的不断进步&#xff0c;教务管理体系也在不断完善。与此同时&#xff0c;伴随着信息化的飞速发展…

Android:UI:Drawable:View/ImageView与Drawable

文章目录 在View/ImageVIew中显示DrawableDrawable对View的更新操作在View/ImageVIew中显示Drawable API View.setBackground(Drawable) ImageView.setImagDrawable(Drawable) 源码分析 View.mBackground在View.draw(Canvas)中绘制,调用Drawable.draw(Canvas) ImageView.m…

Hexapod C-887 使用手册 -- 1

最近要做PI C-887的集成控制&#xff0c;先把使用手册看一便&#xff0c;在此记录阅读进度。 本人微信号&#xff0c;如果有项目合作&#xff0c;可以加本人微信。 1 有关此文档 在本章中 本用户手册的目标和目标群体 符号和打印规则 图 术语的定义 其它适用文件 下载手…

Python GUI 库跨平台兼容问题及解决方案

在选择 Python GUI 库时&#xff0c;跨平台兼容性是一个重要的考虑因素。不同的 GUI 库可能在不同的操作系统上表现不同&#xff0c;因此需要选择一个能够在多个平台上运行良好的库。如果我们遇到下面的问题&#xff0c;可以尝试下我整理的方法。 1、问题背景 Python 作为一门…

基于【Lama Cleaner】一键秒去水印,轻松移除不想要的内容!

一、项目背景 革命性的AI图像编辑技术,让您的图片焕然一新!无论水印、logo、不想要的人物或物体,都能被神奇地移除,只留下纯净的画面。操作简单,效果出众,给你全新的视觉体验。开启图像编辑新纪元,尽在掌控! 利用去水印开源工具Lama Cleaner对照片中"杂质"进行去除…

【Vue】获取模块内的actions方法

目标&#xff1a; 掌握模块中 action 的调用语法 (同理 - 直接类比 mutation 即可) 注意&#xff1a; 默认模块中的 mutation 和 actions 会被挂载到全局&#xff0c;需要开启命名空间&#xff0c;才会挂载到子模块。 调用语法&#xff1a; 直接通过 store 调用 $store.di…

【Go语言】面向对象编程(一):类的定义、初始化和成员方法

面向对象编程&#xff08;一&#xff09;&#xff1a;类的定义、初始化和成员方法 1 类的定义和初始化 Go 语言的面向对象编程没有 class 、 extends 、implements 之类的关键字和相应的概念&#xff0c;而是借助结构体来实现类的声明&#xff0c;如下是定义一个学生类的方法…

Virtual Memory Primitives for User Program翻译

Virtual Memory Primitives for User Program 安德鲁阿普尔&#xff08;Andrew Appel&#xff09;和李凯&#xff08;Kai Li&#xff09; 普林斯顿大学计算机科学系 摘要 传统上&#xff0c;内存管理单元&#xff08;MMUS&#xff09;被操作系统用于实现磁盘分页的虚拟内存…

Element ui 快速入门

Element UI 是一套基于 Vue.js 的桌面端组件库&#xff0c;它提供了一系列易用、美观、高度可定制的组件&#xff0c;可以帮助开发者快速构建出优秀的用户界面。 以下是 Element UI 的快速入门步骤&#xff1a; 安装 Element UI&#xff1a;在项目中使用 npm 或者 yarn 安装 …

FullCalendar日历组件集成实战(9)

背景 有一些应用系统或应用功能&#xff0c;如日程管理、任务管理需要使用到日历组件。虽然Element Plus也提供了日历组件&#xff0c;但功能比较简单&#xff0c;用来做数据展现勉强可用。但如果需要进行复杂的数据展示&#xff0c;以及互动操作如通过点击添加事件&#xff0…

一文详谈大模型 RAG 优化方案与实践

暑期实习基本结束了&#xff0c;校招即将开启。 不同以往的是&#xff0c;当前职场环境已不再是那个双向奔赴时代了。求职者在变多&#xff0c;HC 在变少&#xff0c;岗位要求还更高了。提前准备才是完全之策。 最近&#xff0c;我们又陆续整理了很多大厂的面试题&#xff0c…