JMeter源码解析之JMeter命令行新增命令

news/2024/9/28 12:47:45 标签: jmeter

JMeter源码解析之JMeter命令行新增命令

需求描述

  1. 需要新增一条命令,能够在JMeter命令行中能够展示
  2. 输入对应的JMeter命令,能够展示对应的命令信息
    查看命令效果如下:

apache-jmeter-5.1\bin>jmeter --?
Copyright © 1999-2024 The Apache Software Foundation
–?
print command line options and exit
-z, --aboutme
print developer and exit

运行命令效果如下:

apache-jmeter-5.1\bin>jmeter -z
[INFO ] 2024-09-27 16:12:36,029 JMeter.displayAboutOrg() - **********************************************
[INFO ] 2024-09-27 16:12:36,032 JMeter.displayAboutOrg() - xxxxx有限公司
[INFO ] 2024-09-27 16:12:36,034 JMeter.displayAboutOrg() - xxx中心
[INFO ] 2024-09-27 16:12:36,036 JMeter.displayAboutOrg() - xxx中心
[INFO ] 2024-09-27 16:12:36,037 JMeter.displayAboutOrg() - xxx部
[INFO ] 2024-09-27 16:12:36,038 JMeter.displayAboutOrg() - **********************************************

应用实现

第一步:找到文件\apache-jmeter-5.1\src\core\org\apache\jmeter\JMeter.java,新增一个变量如下

private static final int ABOUT_ME           = 'z';

private static final CLOptionDescriptor D_ABOUTME_OPT =
            new CLOptionDescriptor("aboutme", CLOptionDescriptor.ARGUMENT_DISALLOWED, ABOUT_ME,
                    "print developer and exit");

第二步:在options中新增上述D_ABOUTME_OPT参数

 private static final CLOptionDescriptor[] options = new CLOptionDescriptor[] {
          //省略中间代码
            D_ABOUTME_OPT,
          //省略中间代码
    };

第三步:新增一个displayAboutOrg方法

 private void displayAboutOrg() {
        log.info("**********************************************");
        log.info("***********浙江大华技术股份有限公司***********");
        log.info("*******************研发中心*******************");
        log.info("*******************测试中心*******************");
        log.info("******************测试架构部******************");
        log.info("**********************************************");
    }

第四步:再找到如下方法,然后新增代码如下

public void start(String[] args){
//省略中间代码
  if (parser.getArgumentById(VERSION_OPT) != null) {
                displayAsciiArt();
            } else if (parser.getArgumentById(HELP_OPT) != null) {
                displayAsciiArt();
                System.out.println(JMeterUtils.getResourceFileAsText("org/apache/jmeter/help.txt"));//NOSONAR $NON-NLS-1$
            } else if (parser.getArgumentById(ABOUT_ME) != null) {
                displayAboutOrg();//NOSONAR $NON-NLS-1$
            } else if (parser.getArgumentById(OPTIONS_OPT) != null) {
                displayAsciiArt();
                System.out.println(CLUtil.describeOptions(options).toString());//NOSONAR
            } else if (parser.getArgumentById(SERVER_OPT) != null) {
   //省略中间代码
} 

至此我们已经开发完成新增有一个命令


http://www.niftyadmin.cn/n/5681131.html

相关文章

洞悉go.dev

本篇内容是根据2020年1月份Grokking Go.dev音频录制内容的整理与翻译, Carmen、Mat 和 Jon 与 Steve Francia 和 Julie Qiu 一起讨论了新的 Go.dev 网站。它背后的动机是什么?它使用了什么技术来构建它?他们如何努力使包发现变得更好?有哪些…

什么?你想通过网络安全月入千万?看看AI的回答(包含注释版)

大家好,我是Dest1ny! 我今天给大家整个活,手把手教你如何赚到1000万! 哈哈哈哈,我发誓是最后一次整活?(不是) 要模拟如何赚到1000万,我可以通过一个假设的场景为你描绘出一个可能的过程。在这…

Sharp.js:简单而又实用的图像处理库

前言 在现代Web开发中,图像处理是一个不可或缺的部分。 前端开发者经常需要处理图像,以确保它们在不同的设备和分辨率上都能保持良好的显示效果。 sharp.js是一个高性能的Node.js模块,它利用了libvips库,提供了快速且高效的图像…

小程序用户截屏事件

原生小程序: wx.setScreenBrightness({value: 0.5 }); 参数值: value屏幕亮度值,范围 0~1,0 最暗,1 最亮 uniapp: uni.setScreenBrightness({value: 0.5 }); 参数值: value屏幕亮度值&a…

【电商搜索】现代工业级电商搜索技术-Ha3搜索引擎平台简介

【电商搜索】现代工业级电商搜索技术-Ha3搜索引擎平台简介 — 初稿V1.0 Ha3搜索引擎平台详细介绍 在当今的互联网时代,搜索引擎扮演着至关重要的角色,尤其是在电子商务领域。Ha3搜索引擎平台是由阿里巴巴搜索团队开发的一个先进的搜索引擎&#xff0c…

Linux oracle数据库静默安装

系统:Centos7 一、安装准备 1.1 更换依赖源 yum源进行切换(这里采用的阿里云的yum源)(切换之前建议先备份 /etc/yum.repos.d 中的文件) wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/rep…

EasyExcel使用介绍

EasyExcel使用 1、EasyExcel介绍 1.1 官网介绍 传统操作Excel大多都是利用Apach POI进行操作的,但是POI框架并不完善,使用过程非常繁琐且有较多的缺陷: 动态操作Excel非常繁琐,对于新手来说,很难在短时间内上手;读写时需要占用…

SwiftUI简明概念(3):Path.addArc的clockwise方向问题

一、画个下半圆 SwiftUI中绘制下半圆的一个方法是使用Path.addArc,示例代码如下: var body: some View {Path { path inpath.addArc(center: CGPoint(x: 200, y: 370), radius: 50, startAngle: Angle(degrees: 0), endAngle: Angle(degrees: 180.0), …