【jmeter二次開發】二、Jmeter擴充套件--實現自定義函式ApacheJMeter_functions
Jmater函式擴充套件的步驟
1、 匯入Jmeter原始碼,或使用maven專案,引入依賴的jar包
2、 繼承AbstractFunction,實現自定義Function
3、 繼承JMeterTestCase,對自定義的函式進行單元測試
4、 對自定義函式進行編譯打包,並放在lib\ext下
5、 Jmeter ->選項 ->函式助手對話方塊,選擇已開發的函式呼叫
自定義Function
繼上一篇文章已經介紹如何匯入Jmeter原始碼,這裡就不做詳細介紹,此次主要引用自動生成手機號碼為例
import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.threads.JMeterVariables; public class MobileGenerator extends AbstractFunction { private static //定義function名稱 private static final String KEY = "__MobileGenerator"; private static String[] telFirst = "134,135,136,137,138,139,150,151,152,157,158,159,130,131,132,155,156,133,153" .split(","); //自定義function的描述 static { desc.add("Name of variable in which to store the result (optional)"); } private CompoundVariable varName; //執行部分 public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { int index = getNum(0, telFirst.length - 1); String first = telFirst[index]; String second = String.valueOf(getNum(1, 888) + 10000).substring(1); String thrid = String.valueOf(getNum(1, 9100) + 10000).substring(1); String mobile = first + second + thrid; if (varName != null) { JMeterVariables vars = getVariables(); final String varTrim = varName.execute().trim(); if (vars != null && varTrim.length() > 0) {// vars will be null // on TestPlan vars.put(varTrim, mobile); } } return mobile; } //設定引數值 public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException { //校驗引數個數 checkParameterCount(Collection<CompoundVariable> parameters, int min, int max) checkParameterCount(parameters, 0, 1); //將值存入變數中 Object[] values = parameters.toArray(); if (values.length > 0) { varName = (CompoundVariable) values[0]; } else { varName = null; } } @Override public String getReferenceKey() { return KEY; } @Override public List<String> getArgumentDesc() { return desc; } private static int getNum(int start, int end) { return (int) (Math.random() * (end - 1)); } } |
對開發的函式進行單元測試
import static org.apache.jmeter.functions.FunctionTestHelper.makeParams; import java.util.Collection; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.junit.JMeterTestCase; import org.junit.Test; public class MobileGeneratorTest extends JMeterTestCase { @Test public void test() throws Exception { MobileGenerator mobileGenerator = new MobileGenerator(); Collection<CompoundVariable> params = makeParams("mobile",null,null); mobileGenerator.setParameters(params); String string = mobileGenerator.execute(); System.out.println(string); } } |
編譯並打包
編譯並打包到lib\ext目錄下,覆蓋下之前的ApacheJMeter_functions.jar,重啟Jmeter
呼叫自定義函式
相關推薦
【jmeter二次開發】二、Jmeter擴充套件--實現自定義函式ApacheJMeter_functions
Jmater函式擴充套件的步驟1、 匯入Jmeter原始碼,或使用maven專案,引入依賴的jar包2、 繼承AbstractFunction,實現自定義Function3、 繼承JMeterTestCase,對自定義的函式進行單元測試4、 對自定義函式進行編譯打包,並放在l
【jmeter二次開發】一、JMeter原始碼匯入到Intellij IDEA
!!JMeter原創必須是精品!! jmeter原始碼如何匯入到eclipse,我就不多說了,網上一大堆,但貌似都不是很詳細。 我今天就講一下jmeter原始碼如何匯入到Intellij IDEA,絕對詳細的匯入,編譯,執行。 環境: max book pro +
【CAD二次開發】-ObjectARX-JIG 一拖多 (MultipleEntJig)
本文介紹的例子是沿一個圓弧實體等間距放置若干個圖塊,使用者拖動游標時圓弧的形狀發生變化,同時插入的塊參照的位置也會隨之變化。 技術路線: (1)使用ObjectARX嚮導建立新工程MultipleEntJig 向工程中新增一個普通類CArcBl
【CAD二次開發】-ObjectARX-擴充套件資料 (Xdata)
基本思路: (1)建立一個新專案,命名為Xdata.註冊一個命令AddXData. 實現程式碼為: static void AAAMyGroupAddXData() { // 提示使用者選擇所要新增擴充套件資料的圖形物件 AcDbEntity *pEnt
【二次開發】將CATIA嵌入到Winform窗體中
由於專案需要,我們需要將CATIA嵌入到我們的軟體之中,要求在軟體啟動後,同時呼叫並啟動CATIA軟體,並能夠遮蔽掉軟體自身的選單和按鈕。通過在網上查閱資料,實現了這一功能。 呼叫並啟動CATIA public string GetCatiaInstal
【二次開發】如何使用C#進行CATIA二次開發
1. 引言 由於專案需要,最近蒐集整理了一些關於CATIA二次開發的資料,貌似國內對於CATIA二次開發需求不大,相關資料比較有限,因此剛開始遇到了不少問題,通過分析網上的一些示例,以及結合CATIA的巨集錄製功能生成的程式碼,才算是對CATIA的開發方式有所
【ArcEngine 10 二次開發】DataGridView顯示Layer中的屬性表
顯示圖層Layer中的屬性表 新建一個Form視窗 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using S
SVN二次開發——讓SVN、TSVN(TortoiseSVN)支援windows的訪問控制模型、NTFS ADS (可選資料流、NTFS的安全屬性)
SVN二次開發 ——讓SVN、TSVN(TortoiseSVN)支援windows的訪問控制模型、NTFS ADS (可選資料流、NTFS的安全屬性) 不知為什麼。原來很好的格式,也有圖,也完整,現在全亂了,前面還缺東少西的,等有時間了再整理。 可以先參閱這個連結,這個格
搭建rtmp直播流服務之4:videojs和ckPlayer開源播放器二次開發(播放rtmp、hls直播流及普通視訊)
前面幾章講解了使用 從資料來源獲取,到使用ffmpeg推流,再到nginx-rtmp釋出流,後端的服務到這裡就已經全部完成了。 如果這裡的流程沒走通,那麼這裡的播放器也是沒辦法播放實時流的。 本章講一下播放器的選用和二次開發,前端的播放器雖然有flex(flash)可
10.Jmeter-二次開發,實現自定義函式外掛
1.前提:有時候,Jmeter自帶的函式,可能不能滿足於業務的需求,這時候,我們可以自己寫一個函式外掛;2.建立maven工程一直next,輸入GroupID,ArtifactId->finsh3.編輯pom.xml建立好maven工程後,引入Jmeter的jar包,注
【Spring註解驅動開發】二狗子讓我給他講講@EnableAspectJAutoProxy註解
## 寫在前面 > 最近,二狗子入職了新公司,新入職的那幾天確實有點飄。不過慢慢的,他發現他身邊的人各個身懷絕技啊,有Spring原始碼的貢獻者,有Dubbo原始碼的貢獻者,有MyBatis原始碼的貢獻者,還有研究AI的大佬,個個都是大神級別的人物。二狗子有點慌,想起自己雖然入職了,但是比起其他人確實
大華門禁SDK二次開發(二)
經過與大華技術支援的溝通,門禁服務程式已經開發好了,可以正常接收門禁開關事件,可以傳送開門命令。基於專案實時性要求,這裡使用SignalR實現門禁狀態、控制命令的實時傳送。 幾種場景需求 根據SignalR的設計規則,Client端可以主動呼叫服務端Hub的多個方法,但是客戶端被動接收訊息的方法只能有一個
QGis二次開發基礎 -- 屬性識別工具的實現
屬性識別工具,也就是常用的 identify 工具,它常常與諸如放大、縮小等地圖工具放在一起,提供瀏覽地圖要素的一項基本功能。為什麼要單獨討論一下這個工具,是因為它與普通的地圖瀏覽工具的實現有一些微小的差異。下面通過原始碼的學習,來了解這個工具的實現方法以及掌握
【微信小程式】微信小程式掃描自定義二維碼到指定頁面的坑
重點 測試版本不需要釋出也可以進行測試 測試階段不釋出,只能掃描測試連結中的地址中的二維碼,其他的就算符合規範也不可以 如果是要動態匹配引數,那麼動態部分必定是/後面的字串 如果是要動態匹配引數,那
【React自制全家桶】五、React元件的生命週期函式詳解
一、總覽React元件的生命週期函式 什麼是生命週期函式:簡單的來說就是 在某個時刻會自動執行的函式 二、React的生命週期函式主要由四塊組成 分別是:元件初始化、元件掛載、元件更新、元件解除安裝 三、生命週期之元件初始化 作用:元件初始時設定pr
【學習筆記】【Cocos2d-x Lua指令碼開發】如何使用Lua指令碼呼叫自定義類
步驟:自定義類——>使用tolua++編譯到LuaCoco2d.cpp——>Lua指令碼呼叫 具體的操作步驟如下: 步驟一:自定義類 建立自定義類 //DeepSeaHero.h #include "cocos2d.h" using namespace
【Unity編輯器】使用反射和Attribute實現自定義右鍵選單
unity提供了許多Attribute,比如[MenuItem]和[ContextMenu],一個是在編輯器選單欄中新增選單按鈕,一個是在檢視面板新增上下文選單,由於其原理是基於C#的Attribute功能,我們自然可以想到,是否可以自己編寫一套自定義Attribute,來
Android 併發二三事之利用CountDownLatch 或 ConditionVariable實現自定義Future
前言: Android 併發第三篇 介紹如何利用 CountDownLatch 或 ConditionVariable 實現自定義Future,用於適應專案中的需求。 即阻塞當前執行緒,等待其他執行緒的結果返回,其功能類似於FutureTask。 首先介
【JEECG技術博文】JEECG簡單實例講解自定義表單功能
nbsp str 用戶 strong detail 表單設計 格式化時間 功能實現 oot JEECG簡單實例講解自定義表單功能 作者:任傑 http://blog.csdn.net/renjie0520/article/details/50286503
button元件、 onShareAppMessage 方法實現 —— 自定義傳參 —— 微信小程式
有時候自定義分享按鈕——需要傳參,可是小程式的button元件,並不支援傳參, 這個時候,我們可以在button上,自定義傳參,格式如下: data-屬性名 = " {{ 引數 }} " 然後在onShareAppMessage方法中,可以接收到引數,並打印出