jmeter java sampler测试java接口(一)javatest解读
来源:互联网 发布:阿里云华东1和华东2 编辑:程序博客网 时间:2024/06/04 18:47
- jmeter在线api文档
http://jmeter.apache.org/api/overview-summary.html
首先分析javatest的源代码。
getDefaultParameters()方法返回一个Arguments,这是获取入参的方法。在jmeter上创建一个java请求,选择javatest可以看到需要用户输入的参数都是在这设定的。
1 每一个参数都必须先在类中声明为常量,常量值最好先赋值,如:
private static final String SLEEP_NAME = “Sleep_Time”;
jmeter窗口展示为Sleep_Time
2 params.addArgument(SLEEP_NAME, String.valueOf(DEFAULT_SLEEP_TIME));
(key)SLEEP_NAME - (value)用户传入/DEFAULT_SLEEP_TIME默认值
3 通过context获取SLEEP_NAME的值
sleepTime = context.getLongParameter(SLEEP_NAME, DEFAULT_SLEEP_TIME);
4 当然类中还要声明
private long sleepTime;
public static final long DEFAULT_SLEEP_TIME = 100;
上面4部实现了传参,sleepTime 就可以直接使用了。如果没有传值,则使用默认的100
5 DEFAULT_SLEEP_TIME可以不申明,后面一节就没有使用默认值,代码也看起来简单点
public Arguments getDefaultParameters() { Arguments params = new Arguments(); params.addArgument(SLEEP_NAME, String.valueOf(DEFAULT_SLEEP_TIME)); params.addArgument(MASK_NAME, DEFAULT_MASK_STRING); params.addArgument(LABEL_NAME, ""); params.addArgument(RESPONSE_CODE_NAME, RESPONSE_CODE_DEFAULT); params.addArgument(RESPONSE_MESSAGE_NAME, RESPONSE_MESSAGE_DEFAULT); params.addArgument(SUCCESS_NAME, SUCCESS_DEFAULT); params.addArgument(SAMPLER_DATA_NAME, SAMPLER_DATA_DEFAULT); params.addArgument(RESULT_DATA_NAME, SAMPLER_DATA_DEFAULT); return params; }
先运行一下一个javatest请求
runTest()方法返回一个SampleResult测试结果,这是测试主体。这里的测试主体就是进行sleep的休眠,然后返回成功。出现异常则返回失败
@Override public SampleResult runTest(JavaSamplerContext context) { setupValues(context); //初始化参数值 SampleResult results = new SampleResult();//设置results的属性 //直接获取setupValues()里面参数的值 results.setResponseCode(responseCode);//返回code results.setResponseMessage(responseMessage);//返回信息 results.setSampleLabel(label);//samplerlabel if (samplerData != null && samplerData.length() > 0) { results.setSamplerData(samplerData); } if (resultData != null && resultData.length() > 0) { results.setResponseData(resultData, null); results.setDataType(SampleResult.TEXT); } // Record sample start time. //测试的启动时间 results.sampleStart();//测试代码//休眠时间 long sleep = sleepTime; if (sleepTime > 0 && sleepMask > 0) { // / Only do the calculation if // it is needed long start = System.currentTimeMillis(); // Generate a random-ish offset value using the current time. sleep = sleepTime + (start % sleepMask); } try { // Execute the sample. In this case sleep for the // specified time, if any if (sleep > 0) { TimeUnit.MILLISECONDS.sleep(sleep); } results.setSuccessful(success); } catch (InterruptedException e) { LOG.warn("JavaTest: interrupted."); results.setSuccessful(true); } catch (Exception e) { //执行失败 LOG.error("JavaTest: error during sample", e); results.setSuccessful(false); } finally { // Record end time and populate the results. //用例结束时间 results.sampleEnd(); } if (LOG.isDebugEnabled()) { LOG.debug(whoAmI() + "\trunTest()" + "\tTime:\t" + results.getTime()); listParameters(context); } return results; }
listParameters()日志打印传入的参数值
private void listParameters(JavaSamplerContext context) { Iterator<String> argsIt = context.getParameterNamesIterator(); while (argsIt.hasNext()) { String name = argsIt.next(); LOG.debug(name + "=" + context.getParameter(name)); } }
whoAmI()返回当前线程
private String whoAmI() { StringBuilder sb = new StringBuilder(); sb.append(Thread.currentThread().toString()); sb.append("@"); sb.append(Integer.toHexString(hashCode())); return sb.toString(); }
在进行debug的时候,调用了whoAmI()和listParameters(context)方法
if (LOG.isDebugEnabled()) { LOG.debug(whoAmI() + "\trunTest()" + "\tTime:\t" + results.getTime()); listParameters(context); }
setupTest()初始化测试的时候用到
public void setupTest(JavaSamplerContext context) { if (LOG.isDebugEnabled()) { LOG.debug(whoAmI() + "\tsetupTest()"); listParameters(context); } }
初始化参数方法,相当于LR的init函数
public void setupTest(JavaSamplerContext context) { if (LOG.isDebugEnabled()) { LOG.debug(whoAmI() + "\tsetupTest()"); listParameters(context); } }
构造函数,每创建一个java sampler线程的时候执行一次
public TestJavaSampler() { LOG.debug(whoAmI() + "\tConstruct"); }
这里简单介绍一下javatest的源码,解析还不是很清楚,但已经不影响测试。后面介绍如何修改测试主体和传参,进行java方法测试
0 0
- jmeter java sampler测试java接口(一)javatest解读
- jmeter使用BeanShell Sampler测试自己写的java接口(一)
- jmeter java sampler测试java接口(二)测试自己的代码
- jmeter使用BeanShell Sampler测试自己写的java接口(二)
- JMeter开发插件之一(JMeter开发Java Request Sampler测试mongodb)
- 调试JMeter的JAVA sampler
- apache jmeter(Java接口测试篇)
- jmeter java sampler 如何打印日志?
- jmeter并发测试java接口
- Jmeter 测试dubbo java接口
- Jmeter开发Sampler测试插件
- jmeter之编写java请求-扩展Java Sampler
- Class: org.apache.jmeter.protocol.java.sampler.JavaSampler
- Jmeter学习——创建自定义的Java Sampler
- Jmeter接口测试案例实践(一)
- Jmeter接口测试笔记(一)
- WEB接口测试之Jmeter接口测试自动化 (一)
- JMeter学习(十七)JMeter测试Java
- 一些网站分析工具
- 欢迎使用CSDN-markdown编辑器
- protobuf RPC实现
- 关于super()
- <div+css页面布局课堂笔记>8---页面浮动设计
- jmeter java sampler测试java接口(一)javatest解读
- 面试宝典
- 计算机网络分层及其作用
- acm 1003 哈夫曼
- 登入界面UI
- hdu 5652 India and China Origins(二分)
- 2016.03.26回顾
- java虚拟机参数设置 jvm参数设置
- hihocoder之智力竞赛