1. 程式人生 > >【jmeter二次開發】二、Jmeter擴充套件--實現自定義函式ApacheJMeter_functions

【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

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

   //定義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開發——讓SVNTSVN(TortoiseSVN)支援windows的訪問控制模型NTFS ADS (可選資料流NTFS的安全屬性)

SVN二次開發 ——讓SVN、TSVN(TortoiseSVN)支援windows的訪問控制模型、NTFS ADS (可選資料流、NTFS的安全屬性) 不知為什麼。原來很好的格式,也有圖,也完整,現在全亂了,前面還缺東少西的,等有時間了再整理。 可以先參閱這個連結,這個格

搭建rtmp直播流服務之4:videojs和ckPlayer開源播放器開發(播放rtmphls直播流及普通視訊)

前面幾章講解了使用 從資料來源獲取,到使用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方法中,可以接收到引數,並打印出