网站建设方案及,鞍山做网站优化,搜索引擎排名优化价格,在什么网站上可以找设计兼职来做jmeter实现翻页功能JMeter提供了可在采样器中使用的功能。 在编写复杂的测试计划时#xff0c;您会觉得JMeter缺少某些方法。 您使用Beanshell脚本定义自己的自定义方法。 JMeter调用Beanshell解释器来运行脚本。 只要您不产生高负载#xff08;大量线程#xff09;#xf… jmeter实现翻页功能 JMeter提供了可在采样器中使用的功能。 在编写复杂的测试计划时您会觉得JMeter缺少某些方法。 您使用Beanshell脚本定义自己的自定义方法。 JMeter调用Beanshell解释器来运行脚本。 只要您不产生高负载大量线程此方法就可以正常工作。 但是一旦JMeter尝试产生高负载它就会耗尽资源并大大降低速度。 如果改用JMeter自定义函数则JMeter可以轻松生成高负载。 唯一的问题是弄清楚实现要求以及如何与JMeter集成。 JMeter几乎没有提供任何有关自定义函数实现的文档。 但是在浏览了JMeter源代码和Googling之后我找到了实现JMeter自定义功能的方法。 定制方法实施 让我们深入了解实现的细节。 有一些应满足的要求。 这些如下。 函数类包名称必须包含“ .functions”。 函数类必须扩展AbstractFunction并实现executesetParametersgetReferenceKey和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此方法基本上以字符串列表形式返回参数描述。 此描述出现在功能助手中如下图所示 setParametersCollection parameters此方法由JMeter调用它传递在函数调用中传递的值。 变量作为CompoundVariable的集合传递。 即使未提供任何参数也会调用此方法。 在此方法中可以在execute方法中设置和访问全局变量。 字符串executeSampleResult previousResultSampler currentSampler JMeter传递先前的SampleResult和当前的SampleResult。 此方法返回一个字符串该字符串将用作函数调用的替换值。 该方法被多个线程调用因此它必须是线程安全的。 这种方法的奇怪之处在于在处理完参数之后必须将结果转换为字符串并返回 JMeter功能助手 源代码 在下面的示例源代码中我实现了一个名为__TimeInMillis函数。 在使用提供的偏移量调整当前时间后此方法以毫秒为单位返回时间。 例如当当前时间是1371413877000时此$ {__ TimeInMillis2000}方法调用将返回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 ListString desc new LinkedListString();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(CollectionCompoundVariable parameters) throws InvalidVariableException {checkParameterCount(parameters, MIN_PARAM_COUNT, MAX_PARAM_COUNT);values parameters.toArray();}/** {inheritDoc} */Overridepublic String getReferenceKey() {return KEY;}/** {inheritDoc} */Overridepublic ListString 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.htmljmeter实现翻页功能