如何开发一个简单的Sampler

创建maven项目,并选择对应版本的jmeter核心依赖

在这里,我先选择5.4.1版本的jmeter,如果有其他的依赖jar包,可以一并放在这里

 <properties><jmeter.version>5.4.1</jmeter.version><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><dependencies><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><!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_http --><dependency><groupId>org.apache.jmeter</groupId><artifactId>ApacheJMeter_http</artifactId><version>${jmeter.version}</version></dependency><!-- other dependencies -->...<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency></dependencies>

创建对应的GUI类(基于SWING)

本例中 ,先尝试生成一个简单的Http请求的取样器,期望元素包括名称、注释、请求地址、请求参数:

public class MyHttpSenderGui extends AbstractSamplerGui {private JTextField urlField;private HTTPArgumentsPanel argumentsPanel;public MyHttpSenderGui() {init();}@Overridepublic String getLabelResource() {return null;}@Overridepublic String getStaticLabel() {return "我的HTTP请求";}@Overridepublic TestElement createTestElement() {return new MyHttpSampler();}@Overridepublic void modifyTestElement(TestElement element) {element.clear();configureTestElement(element);element.setProperty("url", urlField.getText());element.setProperty("requestBody", JSON.toJSONString(argumentsPanel.getParameters().getArgumentsAsMap()));}public void init() {argumentsPanel = new HTTPArgumentsPanel();setLayout(new VerticalLayout(30, 50));setBorder(makeBorder());Box box = Box.createVerticalBox();box.add(makeTitlePanel());box.add(makeUrlPanel());box.add(argumentsPanel);add(box,BorderLayout.NORTH);}private Container makeUrlPanel() {JPanel urlPanel = new JPanel(new BorderLayout(5, 0));urlField = new JTextField(150);JLabel label = new JLabel("请求地址:");label.setLabelFor(urlField);urlPanel.add(label, "West");urlPanel.add(urlField, "Center");HorizontalPanel vp = new HorizontalPanel();vp.add(urlPanel);return vp;}}

关键方法和代码说明

getStaticLabel:页面上展示的名称

getLabelResource: 和 getStaticLabel的差别在于,getLabelResource会根据properties文件进行语言的国际化,优先采用getStaticLabel。需要和makeTitlePanel配合使用

modifyTestElement:在取样器提交的时候,通过该方法将界面的参数传递给Sampler。缺少element.clear();configureTestElement(element);会导致icon无法找到,并导致取样器无法使用

createTestElement:创建该取样器的处理方法。

init:创建GUI,具体请参考Swing。

创建取样器处理类

public class MyHttpSampler extends AbstractSampler {@Overridepublic SampleResult sample(Entry e) {String url = getPropertyAsString("url");String requestBody = getPropertyAsString("requestBody");SampleResult sampleResult = new SampleResult();// 设置请求参数sampleResult.setSamplerData(String.format("url:%s\n\trequestBody:%s", url, requestBody));sampleResult.sampleStart();try {String body = HttpClientUtil.getPostJsonBody(url, requestBody);sampleResult.setSuccessful(true);sampleResult.setResponseData(body, "utf-8");sampleResult.setSampleLabel("我的HTTP请求-成功");} catch (Exception exception){sampleResult.setSuccessful(false);sampleResult.setResponseData("请求失败,没为什么", "utf-8");sampleResult.setSampleLabel("我的HTTP请求-失败");} finally {sampleResult.sampleEnd();}return sampleResult;}
}

集成取样器

  • 将程序打包生成对应的jar包
  • 将对应的jar包放到%JMETER_HOME%/lib/ext下,重新打开JMeter,取样器会自动加载

功能简述

将一个普通的HTTP请求,参数转化成json格式后,通过POST的方式传到目标服务器

相关补充见下:

JMeter开发一个最简单的Sampler相关推荐

  1. 开发一个最简单的iOS App

    开发一个最简单的iOS App 大家好,我是孜孜不倦学习的Zhangbeihai. 上月底我组织了[组队学习]TensorFlow 入门课程(中文) ,截至目前有300多同学加入.主要就是 Tenso ...

  2. jQuery框架开发一个最简单的幻灯效果

    在线演示 在这个课程中,我们将介绍如何使用jQuery来开发一个最简单的图片幻灯效果. 立刻观看互动课程:jQuery框架开发一个最简单的幻灯效果 阅读原文:jQuery框架开发一个最简单的幻灯效果

  3. 27 行代码开发一个最简单的 SAP ALV 报表

    所谓 ALV,全称是 ABAP List View,是 SAP GUI 环境下一种深受用户喜爱的数据呈现方式.网络上有很多关于如何编写 ALV 的例子,但大多都是大段大段的代码,缺乏必要的文字描述,对 ...

  4. LWJGL入门指南:使用《我的世界》(Minecraft)同款游戏库开发一个超级“简单”的3D射击游戏

    LWJGL系列文章 LWJGL入门指南:序章 LWJGL入门指南:安装LWJGL或生成maven或gradle依赖与第一行LWJGL代码 LWJGL入门指南:一个超级简单的3D射击游戏demo 前言 ...

  5. 开发一个最简单的Cardboard虚拟现实应用(四)做一个Cardboard第一人称控制器

    [开源互助-原创文章,转载请说明出处] 第三帖中已经创建了一个cardboard自带的demo应用,但它是不能移动的,玩家只能站在原地,通过头部转动来观察四周,除此之外,玩家并没有更多的手段与游戏场景 ...

  6. 使用Python开发一个超级简单的接水果小游戏,零基础也可以学会

    Pylash项目地址 创建项目 这样的话我们的项目就创建好了,然后只用往Main.py里填写代码运行即可. 编写Hello World小程序 编写游戏 有以上对pylash的小小了解,我们接下来可以开 ...

  7. python接水果游戏代码_使用Python开发一个超级简单的接水果小游戏,零基础也可以学会...

    Pylash项目地址 创建项目 这样的话我们的项目就创建好了,然后只用往Main.py里填写代码运行即可. 编写Hello World小程序 编写游戏 有以上对pylash的小小了解,我们接下来可以开 ...

  8. 在SAP WebIDE里开发一个最简单的react component

    源代码如下: <!DOCTYPE HTML> <html lang="en"> <head> <meta charset="ut ...

  9. 动手开发一个有用的 ABAP ALV 工具 - 查看指定用户的 ABAP 传输请求试读版

    本专栏计划的文章数在 150 篇左右,到 2022年10月6日为止,目前已经更新了 56 篇,专栏完成度为 37.3% 零基础 ABAP 学习教程系列文章的目录 1. ABAP 标准培训教程 BC40 ...

最新文章

  1. 开始逆向objc基础准备(一)简单认识一下arm32,以及与x86汇编指令类比
  2. SQL:查询学习笔记
  3. 2021-03-15 深入理解SLAM技术【1】 基础知识
  4. [CF446C]DZY Loves Fibonacci Numbers
  5. Vue2.0 全家桶开发的网页应用(参照吾记APP)
  6. java文件重命名失败问题
  7. 关于Mysql服务自动关闭以及无法启动问题的解决办法
  8. AcWing 842. 排列数字(DFS)
  9. HTML5 网站大观:15个精美的 HTML5 作品集网站实例
  10. CPU检测软件CPU-Z的下载使用
  11. 电脑远程链接怎么删除计算机,删除远程桌面连接记录的方法
  12. “九章”量子计算机与智能优化算法
  13. Canvas 炫彩小球
  14. 推荐图书《周一清晨的领导课》
  15. php常用单词上传知米背单词,知米背单词APP导入单词列表的操作步骤
  16. O2O、B2B、C2C(通俗讲解)
  17. Modesim仿真出现vlog-2388问题
  18. 计算机考研基本信息,复旦大学计算机考研基本信息
  19. 【问题记录】ABP框架模板页面样式加载不完全
  20. java 上传文件-生成文件首页缩略图 生成pdf 抓取图片

热门文章

  1. C#将数字自动翻译为中文
  2. JS判断字符串中的内容是否为纯数字
  3. js关于时间(date)的比较
  4. ORA-02002error while writing to audit trail 问题处理
  5. 总谐波失真计算公式_IEC61000-4-3测试系统的谐波场强分量测量方法
  6. Ubuntu安装电源管理工具TLP
  7. Backtracking algorithm梳理
  8. hdu 4416 后缀数组
  9. 科研 | 国家自然科学基金委 | 资助项目简介
  10. mysql基本SQL语句