jmeter之编写java请求-扩展Java Sampler
来源:互联网 发布:mac照片导入相簿 编辑:程序博客网 时间:2024/04/28 16:48
新浪围脖>@o蜗牛快跑o 企鹅交流群>79642549
通常情况下,推荐使用jmeter之java请求编写一beashell调用java代码(上篇)(推荐)编写java 请求
有以下优势
- 脚本易维护
- 易调试
- 开发脚本周期短
不过网上扩展java请求文章比较多的还是,通过实现org.apache.jmeter.protocol.java.sampler.JavaSamplerClient接口
或是继承AbstractJavaSamplerClient虚类来实现java请求
大致步骤如下:
1. 建立java工程
2. 加载依赖包到java工程环境变量中,ApacheJMeter_core.jar和ApacheJMeter_java.jar编写时需要,调试需要加载jmeter全部依赖包(jmeter_home/lib下所有,实际上不是所有,包比较多,很难辨别)
3. 编写Java Sampler,继承AbstractJavaSamplerClient,并重写如下方法
public Arguments getDefaultParameters();可选,定义可用参数及默认值;public void setupTest(JavaSamplerContext arg0):可选,测试前执行,做一些初始化工作;public SampleResult runTest(JavaSamplerContext arg0);必选,实现自定义请求;public void teardownTest(JavaSamplerContext arg0):可选,测试结束时调用;4. 打jar包,将包放到jmeter_home/lib/ext/下
5. 记得把所有额外的(自定义协议依赖的,非jmeter的)依赖包放到jmeter环境变量中
6. 重启jmeter,创建java Sampler选择刚定义好的测试类,如下图:
7. 调整好参数即可开始测试。
编写模板介绍
package com.sampler;//编写jmeter.sampler插件需加载的包import org.apache.jmeter.config.Arguments;import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;import org.apache.jmeter.samplers.SampleResult;//处理异常堆栈import java.io.PrintWriter;import java.io.StringWriter;/**** @author wo niu* @func test ejb interface** 继承虚类AbstractJavaSamplerClient*/public class JavaSampler extends AbstractJavaSamplerClient {// main只是为调试用,最好先调试再打包//运行前请把jmeter_home/lib下的所有jar包加载到IDE工具环境变量 public static void main(String[] args) { Arguments args0 = new Arguments(); args0.addArgument("parm_1","val_1"); args0.addArgument("parm_2","val_2"); args0.addArgument("parm_N","val_N"); JavaSampler test = new JavaSampler(); JavaSamplerContext context = new JavaSamplerContext(args0); test.setupTest(context); test.runTest(context); test.teardownTest(context); }/** * 实现 runTest(JavaSamplerContext context)方法 * runTest()具体实施测试动作 */public SampleResult runTest(JavaSamplerContext context) { /* * SampleResult只能定义为局部变量,避免出现多线程安全问题 * 网上一些帖子,定义为全域变量,这种做法是错误的 */ SampleResult results = new SampleResult(); //默认请求成功 results.setSuccessful(true); results.sampleStart(); //记录响应时间开始 try{ //动态变量从context中读取: // String key = context.getParameter("key"); //TO-DO ejb接口调用 if(false){ //失败时处理 results.setSuccessful(false); results.setResponseData("响应数据","utf8"); } }catch(Throwable e){ e.printStackTrace(); results.setSuccessful(false); //处理异常堆栈为String,只有String才能回写响应数据 results.setResponseData(toStringStackTrace(e),"utf8"); } results.sampleEnd(); //记录响应时间结束 return results;}/** * 测试开始时调用,初始化 */public void setupTest(JavaSamplerContext context){}/** * 测试结束时调用 */public void teardownTest(JavaSamplerContext context){}/** * 定义默认参数 */@Overridepublic Arguments getDefaultParameters() { Arguments args = new Arguments(); /* * test data */ args.addArgument("parm_1","val_1"); args.addArgument("parm_2","val_2"); args.addArgument("parm_N","val_N"); return args;}/** * 处理异常堆栈为String,只有String才能回写响应数据 * @param e * @return */private String toStringStackTrace(Throwable e){ String exception = null; try { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); e.printStackTrace(pw); exception = sw.toString(); pw.close(); sw.close(); } catch (Exception e1) { e1.printStackTrace(); } return exception;}}
0 0
- jmeter之编写java请求-扩展Java Sampler
- 调试JMeter的JAVA sampler
- JMeter-Sampler-HTTP请求
- jmeter java sampler 如何打印日志?
- jmeter之BeanShell Sampler
- jmeter之java请求二次开发
- jmeter java sampler测试java接口(一)javatest解读
- jmeter之编写java请求一beashell调用java代码(上篇)(推
- jmeter之编写java请求一beashell调用java代码(下篇)(推荐
- Class: org.apache.jmeter.protocol.java.sampler.JavaSampler
- Jmeter学习——创建自定义的Java Sampler
- jmeter 使用BeanShell编写java代码提取请求参数
- JMeter-Sampler-Debug Sampler
- JMeter - java请求
- jmeter java请求
- Jmeter-Java请求
- jmeter java请求
- JMeter开发插件之一(JMeter开发Java Request Sampler测试mongodb)
- Vesions ignore & ld: library not found for -l问题总结
- Android开发Eclipse中DDMS中Heap使用及GC_EXTERNAL_ALLOC含义
- 一个类文件向窗体TextBOX控件赋值问题
- 延云YDB v1.0.3-beta版本发布
- Android MediaPlayer 播放prepareAsync called in state 8解决办法
- jmeter之编写java请求-扩展Java Sampler
- python基础教程共60课-第16课字符串格式化2
- JS跨域设置和取Cookie
- python使用函数默认值来实现函数静态变量的功能
- 腾讯2016研发工程师笔试题(三)
- sleep()函数
- linux基础(七)----linux命令系统学习----系统安全相关命令
- httpClient4.5创建连接池进行post请求
- 改你MB需求!