Jmeter扩展组件开发(7) - 自定义java请求的开发
2023-02-18 16:27:16 时间
CODE
package com.demo;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class Second implements JavaSamplerClient {
//URLNAME 就是在图形化界面当中显示的变量名称
private static final String URLNAME = "URL";
//设置界面当中默认显示的变量的值
private static final String DEFAULTURL = "http://www.baidu.com";
/*
* 这个方法决定了在jmeter当中显示哪些属性
* @return arguments
*/
public Arguments getDefaultParameters() {
System.out.println("getDefaultParameters run");
Arguments arguments = new Arguments();
arguments.addArgument(URLNAME,DEFAULTURL);
return arguments;
}
/*
* 这个方法就是一个初始化方法,我们所有的初始化的动作都可以在这里写
* @param javaSamplerContext
*/
//用户输入的url
private String inputUrl;
public void setupTest(JavaSamplerContext javaSamplerContext) {
inputUrl = javaSamplerContext.getParameter(URLNAME,DEFAULTURL);
System.out.println("setupTest run");
System.out.println("用户输入的url地址是:" + inputUrl);
}
//用来存储响应数据,目的是将响应结果放到查看结果树当中
private String resultData;
/*
* 这个方法就是实现你具体功能逻辑的方法
* @param javaSamplerContext
* @return
*/
public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
SampleResult result = new SampleResult(); //SampleResult()类是负责把数据打到查看结果树上
System.out.println("runTest run");
StringBuffer sb = new StringBuffer();//定义一个StringBuffer sb
try {
URL url = new URL(inputUrl); //引用url类,传入用户输入的url @param inputUrl
URLConnection conn = url.openConnection(); //访问打开url(inputUrl)
byte[] buffer = new byte[1024];//声明一个byte[]类型的数组,长度为1024
int len;//定义一个int型 len长度
result.sampleStart();//事务,标记事务的开始(有了事务,就可以统计时间、流量以及其他参数,知道请求具体情况)
InputStream in = conn.getInputStream();//定义一个输入流
//len=in.read(buffer)) 读取响应的数据流放到buffer变量,赋值给长度len,len !=1 表示数据读取完了
while ((len=in.read(buffer)) != -1){
resultData = new String(buffer,"utf-8"); //响应的数据流buffer,赋值给响应数据变量resultData,字符编码格式为UTF-8
sb.append(resultData);//读取的长度是1024,有可能一次读不完,读取多次,放到sb中显示完整的响应数据
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// resultData = "这就是响应结果";
resultData = sb.toString();//sb数据以string类型类型返回给resultData
result.setSampleLabel("查看结果树请求名称代码写死了,外面无法更改"); //自定义查看结果树请求名称
result.setSuccessful(true); //告诉查看结果树true就访问是否成功,可自行进行参数化传参判断
result.setResponseData(resultData,null); //resultData放到result中,编码格式为null
result.setDataType(SampleResult.TEXT); //结果是一个text数据类型
return result;
}
public void teardownTest(JavaSamplerContext javaSamplerContext) {
System.out.println("teardownTest run");
}
}
Step
敲代码?打包?放到Jmeter目录?Jmeter重启校验?一个get请求OK了
相关文章
- AutoCAD2021软件安装步骤cad软件全版本下载
- cobrax 使用反射获取 flag 配置, 支持指针字段
- 万元的正版课程9.9元被盗卖
- ES6:模块化的基本语法
- 使用vite 快速创建项目
- producer参数---Kafka从入门到精通(七)
- react-react-dom v6 知识整合
- Kafka消息分区&producer拦截器&无消息丢失(八)
- React 18 componentDidMount重复执行两次的解决方案
- 消费者组consumer group详解-Kafka从入门到精通(九)
- KafkaConsumer-Kafka从入门到精通(十)
- 二分查找法解题思路
- Consumer位移管理-Kafka从入门到精通(十一)
- 元数据的理解!!
- Synchronized代码详解?
- synchronized(this)、synchronized(.class)、锁静态方法、方法区别?
- 程序员修炼之道 — DRY 原则
- Rebalance&多线程实例消费(十二)
- Broker消息设计--Kafka从入门到精通(十三)
- 副本与ISR设计--Kafka从入门到精通(十四)