Jmeter扩展开发--自定义java取样器

news2024/11/15 15:43:53

简介

jmeter内置了包括:http、https、tcp等各种协议的支持,通常情况只需要做简单的参数配置即可使用。但在某些特殊情况下,还是希望能做自定义压测处理,此时就涉及Jmeter的扩展开发自定义Java取样器,如下图所示:

依赖

<dependency>
   <groupId>org.apache.jmeter</groupId>
   <artifactId>ApacheJMeter_core</artifactId>
   <version>${jmeter-version}</version>
</dependency>

<dependency>
    <groupId>org.apache.jmeter</groupId>
    <artifactId>ApacheJMeter_java</artifactId>
    <version>${jmeter-version}</version>    
</dependency>

添加如上的基本依赖,完成对Jmeter的扩展,如果自定义操作需要用到其他的依赖,引入即可

打包插件

<build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <executions>
                    <execution>
                        <id>assemble-all</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

java取样器代码编写

自定义java取样器使用如下图所示:

实现org.apache.jmeter.protocol.java.sampler.JavaSamplerClient

或者

继承抽象类org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient

其中有4个重要的方法,一一说明如下

org.apache.jmeter.protocol.java.sampler.JavaSamplerClient#getDefaultParameters方法说明

getDefaultParameters方法是运行jmeter实例的默认参数方法,只有在该方法中配置了参数名称的参数才会在以上ui显示出来,代码试图如下:

public Arguments getDefaultParameters() {
        Arguments arguments = new Arguments();
        arguments.addArgument("userName","张三");
        arguments.addArgument("address","汽车站");
        return arguments;
    }

org.apache.jmeter.protocol.java.sampler.JavaSamplerClient#setupTest方法说明

        在jmeter中每个线程即是一个JavaSamplerClient实例(后续在做自定义取样器时会做源码分析),每个JavaSamplerClient实例均会且只会运行一次setupTest方法一次。在该方法中一般编写测试场景中的初始化操作,包括:tcp连接建立,数据准备等等,代码示例如下:

public void setupTest(JavaSamplerContext context) {
        // doSameInit();
    }

org.apache.jmeter.protocol.java.sampler.JavaSamplerClient#teardownTest方法说明

     teardownTest方法用于线程在停止运行runTest方法后调用一次,用于关闭jmeter资源操作,包括:连接关闭,数据清理等等,代码示例如下:

public void teardownTest(JavaSamplerContext context) {
        // do same clean operation
    }

org.apache.jmeter.protocol.java.sampler.JavaSamplerClient#runTest方法说明

核心方法,jmeter中每个线程会创建一个JavaSamplerClient,执行一次setUp方法,然后循环执行runTest方法,直到设定条件结束(循环多少次或者执行时间结束),代码示例及说明如下:

 public SampleResult runTest(JavaSamplerContext context) {
        SampleResult result = new SampleResult();
        result.sampleStart();
        try {
            // do business operation
            result.sampleEnd();
            result.setSuccessful(true);
            result.setResponseCode("200");
            result.setSamplerData("");
        } catch (Exception e) {
            result.setSuccessful(false);
            result.setResponseCode("500");
        }
        return result;
    }

以上编写完测试代码之后,打包,将相关依赖包放到Jmeter安装目录/lib/ext下,重启jmeter,该自定义组件即可被识别

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

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

相关文章

基于物联网的智能家居监测与控制系统(全套资料)

项目源码资料下载地址&#xff1a; http://comingit.cn/?id29 易学蔚来全套毕设演示&#xff08;看上哪个选那个&#xff09;&#xff1a; https://www.yuque.com/javagongchengshi/ccadbu/nh92kcpyqodhf07l 毕设服务真实反馈&#xff0c;在线观看&#xff1a; https://www.yu…

opencv中的图像高斯模糊—GaussianBlur

高斯模糊&#xff08;Gaussian Blur&#xff09;是一种广泛应用于图像处理的平滑技术&#xff0c;其通过对图像应用高斯函数来减少图像噪声和细节。与简单平均模糊&#xff08;均值滤波&#xff09;不同&#xff0c;高斯模糊给予中心像素更高的权重&#xff0c;而远离中心的像素…

介绍Oracle的SQL调化健康检查脚本(SQLHC)

概述 Oracle提供了一个SQL调优健康检查脚本&#xff08;SQLHC&#xff09;&#xff0c;用于检查需要优化的SQL的运行环境&#xff0c;生成报告以便帮助DBA找到SQL性能不佳的原因。SQLHC是SQLT的一个子集&#xff08;我后续的文章会介绍SQLT&#xff09;&#xff0c;但SQLHC与S…

#微信小程序(一个emo文案界面)

1.IDE&#xff1a;微信开发者工具 2.实验&#xff1a;一个emo文案界面 &#xff08;1&#xff09;最好使用rpx &#xff08;2&#xff09;图片宽度占不满&#xff0c;在CSS中设置width为100% &#xff08;3&#xff09;imag图片全部为网页链接图片 3.记录 4.代码 index.htm…

sqllab第二十关通关笔记

知识点&#xff1a; cookie注入 可以进行url解析错误注入传参位置 get请求post请求cookie传参 输入admin admin进行登录&#xff0c;抓取当前数据包 通过放包发现是一个302跳转的响应包&#xff0c;页面只有一个 I Love Cookies&#xff1b;没什么信息 通过点击页面上方的按钮…

Linux搭建FTP服务器

一、概念简介 vsftpd&#xff08;very secure FTP daemon&#xff09;是Linux下的一款小巧轻快、安全易用的FTP服务器软件&#xff0c;本次实验介绍如何在Linux上安装并配置vsftpd。 FTP&#xff08;File Transfer Protocol&#xff09;是一种文件传输协议&#xff0c;基于客户…

vue antd table嵌套表格 左侧展开图标动态控制显示隐藏

antd a-table想要实现如以下效果&#xff0c;有子级就显示展开图标&#xff0c;没有就不显示图标&#xff1a; 话不多说&#xff0c;直接上代码&#xff1a; <template><a-table :columns"columns" :data-source"dataSource"><template #b…

电机参数辨识算法(1)——基于高频注入的电感辨识策略

今天将开启参数辨识的第一期。通过复现论文来学习电机参数在线辨识的方法。我会尽可能讲述我在仿真遇到的问题以及解决办法。 1.文章内容介绍 参考文献如下&#xff1a; 这篇文章的复现估计要分为几个部分&#xff0c;电感辨识、电阻辨识、磁链辨识。 文章是以无差拍预测电流…

【MySQL】MySQL主从复制

目录 技术背景数据库架构演变1.单机MySQL数据库的美好年代2.Memcached(缓存)MySQL3.主从复制&#xff1a;读写分离4.垂直拆分业务数据5.分库分表 结论——生产环境的MySQL架构 什么是主从复制作用读写分离一主多从 应用场景原理解析MySQL主从复制工作方式master 记录二进制日志…

提升零售行业竞争力的信息抽取技术应用与实践

一、引言 在当今快速发展的零售行业中&#xff0c;沃尔玛、家乐福等大型连锁超市为消费者提供了丰富的日常食品和日用品。为了进一步提升客户体验和优化库存管理&#xff0c;这些零售巨头纷纷开始探索和应用先进的信息抽取技术。 本文将深入探讨一个成功的信息抽取项目&#…

vue iview 级联选择器遇到的坑

我们PC项目用到的前端技术栈是vue+iview,最近有个需求,要做个级联选择器,并且是懒加载动态加载后端返回的数据。效果如下: 如下图所示,在我们封装的公共组件form-box.vue里有我们级联选择器: 代码如下: <!--级联选择器--><template v-else-if="item.type…

【小白学机器学习9】自己纯手动计算验证,EXCEL的一元线性回归的各种参数值

目录 0 目标 1 构造模型 1.1 构造模型的思路 1.2 具体模型构造的EXCEL公式和过程 2 直接用EXCEL画图&#xff0c;然后生成趋势线的方式进行回归分析 2.1 先选择“观测值Y”的数据&#xff0c;用散点图或者折线图作图 2.2 然后添加趋势线和设置趋势线格式 2.3 生成趋…

IP代理技术革新:探索数据采集的新路径

引言&#xff1a; 随着全球化进程不断加深&#xff0c;网络数据采集在企业决策和市场分析中扮演着愈发重要的角色。然而&#xff0c;地域限制和IP封锁等问题常常给数据采集工作带来了巨大挑战。亿牛云代理服务凭借其强大的网络覆盖和真实住宅IP资源&#xff0c;成为解决这些问…

C++ //练习 10.37 给定一个包含10个元素的vector,将位置3到7之间的元素按逆序拷贝到一个list中。

C Primer&#xff08;第5版&#xff09; 练习 10.37 练习 10.37 给定一个包含10个元素的vector&#xff0c;将位置3到7之间的元素按逆序拷贝到一个list中。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 /******************…

ChatGPT赋能遥感研究:精准分析处理遥感影像数据,推动科研新突破

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境&#xff0c;是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型&#xff0c;在理解和生成人类语言方面表现出了非凡的能力。重点介绍ChatGPT在遥感中的应用&#xff0c;人工智能在解…

就业班 2401--3.13 走进网络

走进网络 长风破浪会有时&#xff0c;直挂云帆济沧海。 1.认识计算机 1.计算机网络是由计算机和通讯构成的&#xff0c;网络研究的是“通信”。 ------1946 世界上第一台计算机 2.终端&#xff1a;只有输入和输出功能&#xff0c;没有计算和处理功能。 3.数据&#xff1a;一串…

【Linux】Ubuntu使用Netplan配置静态/动态IP

1、说明 Ubuntu 18.04开始,Ubuntu和Debian移除了以前的ifup/ifdown命令和/etc/network/interfaces配置文件,转而使用ip link set或者/etc/netplan/01-netcfg.yaml模板和sudo netplan apply命令实现网络管理。 Netplan 是抽象网络配置描述器,用于配置Linux网络。 通过netpla…

command failed: npm install --loglevel error --legacy-peer-deps

在使用vue create xxx创建vue3项目的时候报错。 解决方法&#xff0c;之前使用的https://registry.npm.taobao.org 证书过期更换镜像地址即可 操作如下&#xff1a; 1.cd &#xff5e;2.执行rm .npmrc3. sudo npm install -g cnpm --registryhttp://registry.npmmirror.com…

雅特力车规级MCU-AT32A403A开发板评测 06 GC9A01 SPI-LCD 1.28圆形屏幕

雅特力车规级MCU-AT32A403A开发板评测 06 GC9A01 SPI-LCD 1.28圆形屏幕 硬件平台 AT32A403A Board开发板 1.28寸圆形彩色TFT显示屏高清IPS 模块240X240 SPI接口GC9A01 产品介绍 推荐一个屏幕资料参考网站 http://www.lcdwiki.com/1.28inch_IPS_Module 1.28寸圆形IPS彩屏&…

2024年云服务器ECS价格表出炉——阿里云

2024年阿里云服务器租用费用&#xff0c;云服务器ECS经济型e实例2核2G、3M固定带宽99元一年&#xff0c;轻量应用服务器2核2G3M带宽轻量服务器一年61元&#xff0c;ECS u1服务器2核4G5M固定带宽199元一年&#xff0c;2核4G4M带宽轻量服务器一年165元12个月&#xff0c;2核4G服务…