jmeter DNS 扩展开发
扩展功能
支持DNS服务压力测试。支持多域名配置;支持多类型请求类型查询;支持多用户并发请求;支持DNS服务器IP和端口配置。
开发环境
64位window系统,1.8版本JDK,4.5版本eclipse开发工具.
准备环境
JDK安装
安装JDK(1.8版本),配置环境变量JAVA_HOME.进入DOS,输出java -version 检查JDK安装是否成功。
eclipse安装
安装4.5以上eclipse版本。
jmeter最新源码下载
下载地址:
http://jmeter.apache.org/
eclipse建立java project
1、打开 eclipse,新建java project.
备注:项目已经创建,提示 A project with this name already exists.
2、从文件系统导入源码到jmeter工程。
3、classpath配置。
关闭eclipse,到工程根目录下,把eclipse.classpath配置复制到.classpath配置文件中。
4、依赖包下载。
在Java项目的根目录下执行ant download_jars或者把同版本可运行的jmeter程序lib下面的文件复制到jmeter 工程目录下面的lib下面。
5、程序运行配置
打开eclipse,进入newdriver类,启动java applaction 。第一启动会失败,进行run configurations 配置 argument 的工作目录为:${workspace_loc:jmeter/bin}
6、再次启动工程可以运行OK。
DNS代码开发。
1、源文件夹建立
新建src/protocol/dns源码文件夹。
2、DNS包建立
在DNS源码文件夹分别建立org.apache.jmeter.protocol.dns.config.gui、org.apache.jmeter.protocol.dns.control.gui、org.apache.jmeter.protocol.dns.sampler用于DNS参数配置、参数下发、DNS业务实现。
3、dns gui conf 组件开发。
新建如下类:
package org.apache.jmeter.protocol.dns.config.gui;
import org.apache.jmeter.config.gui.AbstractConfigGui;
import org.apache.jmeter.testelement.TestElement;
public class DnsConfigGui extends AbstractConfigGui{
@Override
public String getLabelResource() {
// TODO Auto-generated method stub
return null;
}
@Override
public TestElement createTestElement() {
// TODO Auto-generated method stub
return null;
}
@Override
public void modifyTestElement(TestElement element) {
// TODO Auto-generated method stub
}
}
4、dns test Sampler gui开发。
新建如下类:
package org.apache.jmeter.protocol.dns.control.gui;
import org.apache.jmeter.samplers.gui.AbstractSamplerGui;
import org.apache.jmeter.testelement.TestElement;
public class DnsTestSamplerGui extends AbstractSamplerGui{
@Override
public String getLabelResource() {
// TODO Auto-generated method stub
return null;
}
@Override
public TestElement createTestElement() {
// TODO Auto-generated method stub
return null;
}
@Override
public void modifyTestElement(TestElement element) {
// TODO Auto-generated method stub
}
}
5、dns sampler开发。
新建如下类:
package org.apache.jmeter.protocol.dns.sampler;
import org.apache.jmeter.samplers.AbstractSampler;
import org.apache.jmeter.samplers.Entry;
import org.apache.jmeter.samplers.Interruptible;
import org.apache.jmeter.samplers.SampleResult;
public class DnsSampler extends AbstractSampler implements Interruptible{
@Override
public SampleResult sample(Entry e) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean interrupt() {
// TODO Auto-generated method stub
return false;
}
}
开发完成GUI如下: