【IDEA】实战,阿里二面被问到构建及二次开发,直接裂开!!

灯灯灯灯
• 阅读 1758

##JMeter5.4.1源码IDEA构建&二次开发(实战)

1.下载源码

https://jmeter.apache.org/download_jmeter.cgi前往下载源码

【IDEA】实战,阿里二面被问到构建及二次开发,直接裂开!!

2.导入IDEA

2.1 先设置Gradle目录

未设置过Gradle的IDEA,建议先设置下Gradle的用户目录【获取资料】

【IDEA】实战,阿里二面被问到构建及二次开发,直接裂开!!

2.2导入JMeter工程

【IDEA】实战,阿里二面被问到构建及二次开发,直接裂开!!

【IDEA】实战,阿里二面被问到构建及二次开发,直接裂开!!

2.3设置国内Gradle源

【IDEA】实战,阿里二面被问到构建及二次开发,直接裂开!!

【IDEA】实战,阿里二面被问到构建及二次开发,直接裂开!!

【IDEA】实战,阿里二面被问到构建及二次开发,直接裂开!!

设置gradle的下载源

【IDEA】实战,阿里二面被问到构建及二次开发,直接裂开!!

速度直接起飞!😂【获取资料】

【IDEA】实战,阿里二面被问到构建及二次开发,直接裂开!!

重新加载Gradle,或者重新加载项目【获取资料】

【IDEA】实战,阿里二面被问到构建及二次开发,直接裂开!!

接下来就是耐心的等等待,网速好的话,大约30-3h左右即可下载完毕。【获取资料】

2.4 执行 runGui

进行整体项目构建,熟悉的JMeter就可以打开了【获取资料】

【IDEA】实战,阿里二面被问到构建及二次开发,直接裂开!!

3.新增系统函数

拿到源码我们是为了对JMeter进行二次开发,我当前的需求就是新增自定义的系统函数。

整体流程

  1. 系统函数是在 src/functions下。我们需要新增里面的系统函数【获取资料】

  2. 之后打出的jar包 我们需要替换到\apache-jmeter-5.2.1\lib\extApacheJMeter_functions.jar即可。

实战:新增自定义的UUID系统函数

我想新增一个去掉 - 的UUID系统函数。于是在java\org\apache\jmeter\functions新建了一个JAVA 类【获取资料】

package org.apache.jmeter.functions;

import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import java.util.UUID;

import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sampler;

/**
 * 自定义创建一个不含有 - 的 UUID
 * Create a custom UUID that does not contain “-”
 *
 * Parameters:
 * - None
 *
 * Returns:
 * - A pseudo random UUID 4
 * 
 */
public class UuidCustomer extends AbstractFunction {

    private static final List<String> desc = new LinkedList<>();

    //定义 系统函数的名称
    private static final String KEY = "__UUID2"; //$NON-NLS-1$

    public UuidCustomer() {
    }

    //执行的系统函数的操作
    @Override
    public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException {
        return UUID.randomUUID().toString().replace("-", "");
    }

    @Override
    public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException {
        checkParameterCount(parameters, 0, 0);
    }

    @Override
    public String getReferenceKey() {
        return KEY;
    }

    @Override
    public List<String> getArgumentDesc() {
        return desc;
    }

}

运行测试一下

点击 runGui 运行测试一下【获取资料】

【IDEA】实战,阿里二面被问到构建及二次开发,直接裂开!!

完美成功。接下来打包并替换到使用的JMeter上

打Jar包

【IDEA】实战,阿里二面被问到构建及二次开发,直接裂开!!

成功之后会打一个jar包在【获取资料】

【IDEA】实战,阿里二面被问到构建及二次开发,直接裂开!!

将此包重命名后进行替换

【IDEA】实战,阿里二面被问到构建及二次开发,直接裂开!!

使用替换后JMeter查看

【IDEA】实战,阿里二面被问到构建及二次开发,直接裂开!!

完美成功!🤙🤙🤙

系统函数里面关键讲解

DigestEncodeFunction举例子。【获取资料】

水平有限,看看大致执行的过程就行,明白之后方便我们自定义或者修改

【IDEA】实战,阿里二面被问到构建及二次开发,直接裂开!!

【IDEA】实战,阿里二面被问到构建及二次开发,直接裂开!!

【IDEA】实战,阿里二面被问到构建及二次开发,直接裂开!!

【IDEA】实战,阿里二面被问到构建及二次开发,直接裂开!!

最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。

可以的话请给我一个三连支持一下我哟??????【获取资料】 【IDEA】实战,阿里二面被问到构建及二次开发,直接裂开!!

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Easter79 Easter79
3年前
spring源码调试准备工作
Spring源码下载1、gitclonebranchv5.1.3.RELEASEhttps://gitee.com/Z201/springframework.git2、gradle下载,gradle要JDK8的版本3、到下载的spring源码路径执行gradle命令,gradlew:spri
Easter79 Easter79
3年前
springCloud 搭建eureka服务之天坑
这里我是采用gradle来管理jar包的。1、使用idea创建一个gradle项目。2、编辑settings.gradle文件rootProject.name'jtm'//include'jtm_core'//include'jtm_sys'//include'jtm_eureka'
Stella981 Stella981
3年前
Gradle的安装与配置及Spring源码导入(亲测)
前言我这边使用的gradle版本是:gradle6.5.1idea版本是:ideaIU2019.3.1jdk:1.8Gradle简介Gradle是源于ApacheAnt和ApacheMaven概念的项目自动化构建开源工具,它使用一种基于Groovy的的特定领域语言(
Stella981 Stella981
3年前
Idea 配合 Gradle 多项目管理
缘起之前一直用的是eclipse,几次(差不多有3、4次吧)想切换到idea这个传说中的IDE,不过一直被Gradle设置给打了回来。这次干活干累了决定配置一下idea权当休闲,经过一番翻箱倒柜,终于达到了自己满意的效果。Gradle配合IdeaModule先说一下我
Stella981 Stella981
3年前
Gradle使用杂记
1、配置环境变量GRADLE\_HOME2、把gradle缓存目录指向了gradle安装目录下的.gradle目录,设置环境变量GRADLE\_USER\_HOMEGRADLE\_USER\_HOME%GRADLE\_HOME%\\.gradle或者指定目录GRADLE\_USER\_HOMED:\\gradle\\.grad
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
京东云开发者 京东云开发者
5个月前
spring源码阅读之bean加载过程(一)
如果想要阅读源码,首先要选择版本,然后将源代码下载到本地,导入idea中,话不多说,直接看步骤吧这里我选择5版本,下载源码默认是main分支,看想学习的分支,比如我切换到5版本,截图如下:2.安装gradle3.转换源码进idea下载完成后可以看到有个文档