基于网络开源代码开发的RPC采样器插件,用于通用的RPC框架测试
jmeter是一款使用广泛的测试软件, 为了支持复杂的业务场景(dubbo协议RPC框架),故开发了此通用RPC插件。
以下展示JMeter RPC Sampler使用示例:
1.使用前准备
1.1安装JDK1.8,配置环境变量
1.2安装Jmeter 3.3(或更高),
1.3配置环境变量
2 . 将 RPC Sampler (下载)取样器jar包ApacheJMeter_RPCForJmeter.jar拷贝到 .."JMETER_HOME"\lib\ext目录中下。
3.打开JMeter,创建一个测试计划,添加线程组
4.选中【线程组】,添加Sampler下的 RPC Sampler
5.新增测试用例,选中RPC Sampler,右键添加查看结果树监听器,方便一会儿执行查看结果,如下图
dubboConsumerJarPath:消费方的jar包,扫描消费方的jar包,获知消费方有哪些可调用的对象(开发提供,如rmds-resource-client-1.0.6-SNAPSHOT.jar)
zookeeperAddress:服务方注册至zookeeper的地址
interFaceFullName:需要调用的接口的完整路径名
interFaceMethodName:需要调用的接口下面的方法名
params:需要调用传入的参数(json格式)
paramClassFullName:需要调用传入参数对应的类的完整路径名(json字符串转Java对象)
6.查看测试结果,点击执行按钮,运行用例
package com.rpc.jmeter.rpcSampler;
public class MethodInfo {
private String infoId;
private String appname;
private String zkaddress;
private String version;
private String groupid;
private String interfaceName;
private String methodname;
private String reqparam;
private String jarpath;
private String paramClass;
private String methodId; // key
private String remark;
public String getInfoId() {
return infoId;
}
public void setInfoId(String infoId) {
this.infoId = infoId;
}
public String getAppname() {
return appname;
}
public void setAppname(String appname) {
this.appname = appname;
}
public String getZkaddress() {
return zkaddress;
}
public void setZkaddress(String zkaddress) {
this.zkaddress = zkaddress;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getGroupid() {
return groupid;
}
public void setGroupid(String groupid) {
this.groupid = groupid;
}
public String getInterfaceName() {
return interfaceName;
}
public void setInterfaceName(String interfaceName) {
this.interfaceName = interfaceName;
}
public String getMethodname() {
return methodname;
}
public void setMethodname(String methodname) {
this.methodname = methodname;
}
public String getReqparam() {
return reqparam;
}
public void setReqparam(String reqparam) {
this.reqparam = reqparam;
}
public String getJarpath() {
return jarpath;
}
public void setJarpath(String jarpath) {
this.jarpath = jarpath;
}
public String getParamClass() {
return paramClass;
}
public void setParamClass(String paramClass) {
this.paramClass = paramClass;
}
public String getMethodId() {
return methodId;
}
public void setMethodId(String methodId) {
this.methodId = methodId;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
@Override
public String toString() {
return "MethodInfo [infoId=" + infoId + ", appname=" + appname + ", zkaddress=" + zkaddress + ", version="
+ version + ", groupid=" + groupid + ", interfaceName=" + interfaceName + ", methodname=" + methodname
+ ", reqparam=" + reqparam + ", jarpath=" + jarpath + ", paramClass=" + paramClass + ", methodId="
+ methodId + ", remark=" + remark + "]";
}
}