日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jmeter实现翻页功能_JMeter定制功能实现

發布時間:2023/12/3 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jmeter实现翻页功能_JMeter定制功能实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

jmeter實現翻頁功能

JMeter提供了可在采樣器中使用的功能。 在編寫復雜的測試計劃時,您會覺得JMeter缺少某些方法。 您使用Beanshell腳本定義自己的自定義方法。 JMeter調用Beanshell解釋器來運行腳本。 只要您不產生高負載(大量線程),此方法就可以正常工作。 但是,一旦JMeter嘗試產生高負載,它就會耗盡資源并大大降低速度。 如果改用JMeter自定義函數,則JMeter可以輕松生成高負載。 唯一的問題是弄清楚實現要求以及如何與JMeter集成。 JMeter幾乎沒有提供任何有關自定義函數實現的文檔。 但是在瀏覽了JMeter源代碼和Googling之后,我找到了實現JMeter自定義功能的方法。

定制方法實施

讓我們深入了解實現的細節。 有一些應滿足的要求。 這些如下。

  • 函數類包名稱必須包含“ .functions”。
  • 函數類必須擴展AbstractFunction并實現execute(),setParameters(),getReferenceKey()和getArgumentDesc()方法
  • 制作jar文件并放入<JMETER_HOME> / lib / ext目錄,然后重新啟動JMeter

包裹名字

JMeter的設計使其無需GUI(通用用戶界面)即可運行。 它加載核心類并執行測試計劃。 它為核心類提供了較高的優先級,并且更喜歡先加載這些類。 為了確保GUI和核心/后端不混合,它根據程序包名稱隔離類。 它嘗試遵循約定,即函數實現類應存在于包中,該類應在其中包含“函數”字,例如com.code4reference.jmeter.functions 。 它在后臺查找jmeter.properties文件,并嘗試查找以下屬性值。

classfinder.functions.contain=.functions.

如您所見,提供的默認值是".functions." 。 您可以將其更改為其他名稱,但必須確保自定義函數類包名稱中應存在相同的詞。 最好保留默認值。 一旦定義了包,就可以編寫Function實現類了。

函數實現類

在編寫此類時,您必須實現以下方法。

  • String getReferenceKey():可以從采樣器調用的函數的名稱。 約定是在函數名稱之前放置兩個“ __”(下劃線),例如__TimeInMillis ,函數名稱應與實現此函數的類名稱相同。 此函數名稱應存儲在某個靜態的最終String變量中,以便在執行期間不能更改。
  • List getArgumentDesc():此方法基本上以字符串列表形式返回參數描述。 此描述出現在功能助手中(如下圖所示)
  • setParameters(Collection parameters):此方法由JMeter調用,它傳遞在函數調用中傳遞的值。 變量作為CompoundVariable的集合傳遞。 即使未提供任何參數,也會調用此方法。 在此方法中,可以在execute()方法中設置和訪問全局變量。
  • 字符串execute(SampleResult previousResult,Sampler currentSampler): JMeter傳遞先前的SampleResult和當前的SampleResult。 此方法返回一個字符串,該字符串將用作函數調用的替換值。 該方法被多個線程調用,因此它必須是線程安全的。 這種方法的奇怪之處在于,在處理完參數之后,必須將結果轉換為字符串并返回
  • JMeter功能助手

    源代碼

    在下面的示例源代碼中,我實現了一個名為__TimeInMillis函數。 在使用提供的偏移量調整當前時間后,此方法以毫秒為單位返回時間。 例如,當當前時間是1371413877000時,此$ {__ TimeInMillis(2000)}方法調用將返回1371413879000。

    package com.code4reference.jmeter.functions;import java.util.Collection; import java.util.LinkedList; import java.util.List; import java.util.Calendar;import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.functions.AbstractFunction; import org.apache.jmeter.functions.InvalidVariableException; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger;public class TimeInMillis extends AbstractFunction {private static final List<String> desc = new LinkedList<String>();private static final String KEY = "__TimeInMillis";private static final int MAX_PARAM_COUNT = 1;private static final int MIN_PARAM_COUNT = 0;private static final Logger log = LoggingManager.getLoggerForClass();private Object[] values;static {desc.add("(Optional)Pass the milliseconds that should be added/subtracted from current time.");}/*** No-arg constructor.*/public TimeInMillis() {super();}/** {@inheritDoc} */@Overridepublic synchronized String execute(SampleResult previousResult, Sampler currentSampler)throws InvalidVariableException {//JMeterVariables vars = getVariables();Calendar cal = Calendar.getInstance();if (values.length == 1 ) { //If user has provided offset value then adjust the time.log.info("Got one paramenter");try {Integer offsetTime = new Integer(((CompoundVariable) values[0]).execute().trim());cal.add(Calendar.MILLISECOND, offsetTime);} catch (Exception e) { //In case user pass invalid parameter.throw new InvalidVariableException(e);} }return String.valueOf(cal.getTimeInMillis());}/** {@inheritDoc} */@Overridepublic synchronized void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException {checkParameterCount(parameters, MIN_PARAM_COUNT, MAX_PARAM_COUNT);values = parameters.toArray();}/** {@inheritDoc} */@Overridepublic String getReferenceKey() {return KEY;}/** {@inheritDoc} */@Overridepublic List<String> getArgumentDesc() {return desc;} }

    我重點介紹了代碼的一些關鍵部分。 在第19行,設置功能名稱,如在第26行提供功能描述。 在第60行,檢查參數數量,并確保已提供正確數量的參數。 代碼的主要部分在44到51之間突出顯示,其中當前時間被調整并作為字符串對象返回。 如果您有興趣檢查其他函數的實現,那么請檢查github / Code4Reference上存在的整個源代碼。 編寫代碼后,將其編譯并制作jar文件并將其放置在<JMETER_HOME> / lib / ext目錄中。 你可以得到一個樣本Gradle腳本構建jar文件這篇文章 。 如果您不了解Gradle,則可以使用命令生成jar文件 。 通過在Eclipse中導出包并選擇導出目標作為Jar文件,是創建jar文件的最簡單方法。

    參考:來自Code4Reference博客上的JCG合作伙伴 Rakesh Cusat的JMeter自定義函數實現 。

    翻譯自: https://www.javacodegeeks.com/2013/06/jmeter-custom-function-implementation.html

    jmeter實現翻頁功能

    總結

    以上是生活随笔為你收集整理的jmeter实现翻页功能_JMeter定制功能实现的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。