关于JMeter的CSV Data Set Config的源码改写(包括了部分界面等代码的分析)

来源:互联网 发布:linux eth0配置ip 编辑:程序博客网 时间:2024/04/28 19:31

为什么准备去研究关于CSV Data Set Config的设置呢,之前一直都是在使用CSV Data Set Config进行参数的时候,通常的做法是在Variable Names (comma-delimited)文本编辑框中输入参数名称,如下图:

然后testcase.csv的内容如下:

但是每次回头去看这个参数化文件的时候,总觉得没用表头挺痛苦的,可是加上了表头数据就总会读出来表头的信息,而不是我们真正需要参数化的一行数据。于是便有了第一幅图中linenumber的出现。最开始的想法是根据指定的行号来读取参数化文件,这样我每次就可以从第二行开始读数据了。至于,第一幅图中的linenumber为什么是个下拉框而非文本框,后面讲源码的时候会说。

既然想要修改代码首先就需要有jmeter的源码,源码我们可以去官网下载。目前最新的版本是apache-jmeter-2.13。下载地址:http://jmeter.apache.org/download_jmeter.cgi

如下图:


下载后将文件进行解压,解压后如下:

这下该讲如何把这些源码配置到MyEclipse中。

1、      新建一个javaproject工程,然后随便起个名字,我这里叫jmeter2.13.然后需要有一些配置,如下:

2、      开始进行导入,导入的时候选择File System。如下图:

3、      选择下载的源码文件的根目录,如下:

4.点击完成后,我们新建的Jmeter源码的工程便建立好了。此时我们需要关闭MyEclipse,将该工程下的”eclipse.classpath”文件中的内容覆盖掉” .classpath” 中的内容,然后再重新打开MyEclipse,看看我这个新建的工程,如下图:

此时我们发现我们的工程上有个红色的感叹号,这是为什么呢??因为我们的工程中缺少了我们需要的一些关键包。这个怎么办呢?接下来我们需要使用ant来对我们的工程进行build操作。

Ant的安装

1、 首先是取官网去下载ant工具,下载地址是:http://ant.apache.org/bindownload.cgi

目前我下载的时候的最新版本是1.9.7,下载后将ant进行解压。

2、配置ant的环境变量,需要设置三个地方ant_home=d:/apache-ant-1.9.7path=%ANT_HOME%\bin;  classpath=%ANT_HOME%\lib;

3、验证ant环境是否配置好。为了验证ant是否成功安装,可以进行如下操作:

依次选择:开始->运行->cmd,输入如下命令:ant

如果出现如下内容,说明安装成功:

Buildfile: build.xml does notexist!

Build failed

【说明ant安装成功!因为ant默认运行build.xml文件,这个文件需要我们建立。】

查看版本:ant  -version

此时我们的ant安装成功了。我们可以开始build我们的java工程了。

接下来我们需要修改下build.xml文件。主要是将其中的java版本修改成和MyEclipse中使用的jdk版本一致。具体如下:

然后我们就可以开始build工作了,此时MyEclipse中会报错,具体错误如下:

这里我们需要使用ant工具来进行相关jar包的下载。具体的使用方法是,进入cmd命令界面,然后进入我们工程的目录,目前我的路径是D:\workspace\jmeter2.14。在该目录下找到lib文件夹,进入/lib/api文件夹下,此时最好在网上先下载3个jar包放在这个文件夹下,3个jar包分别是:“bcmail-jdk15on-1.49.jar”、“bcpkix-jdk15on-1.49.jar”、“bcprov-jdk15on-1.49.jar”。拷贝完以后变可以在CMD中我们的工程路径下敲入“ant download_jars”,此时就会下载相应的依赖的jar包了。当出现“build successful”的文字的时候,就表示成功的把依赖的jar包都下载下来了。此时我们的java工程中的感叹号也就没有了。此时我们就可以修改jmeter的源码,然后重新build该工程,重新build成功后,在工程中的bin目录下点jmeter.bat,此时运行的程序就是我们修改后的程序了。既然要修改程序,我们就来了解一下jmeter源码的程序结构,次处摘自网上:

其实jmeter源码移到Eclipse上的方法,在jmeter官网上是由说明的,具体见: http://jmeter.apache.org/building.html

而jmeter的源码也可以到github上去下载,下载地址是: https://github.com/apache/jmeter

如果要修改CSV Data Set Config界面代码就应该在components下,其中主要的2个类都在org.apache.jmeter.config下,在CSVDataSetBeanInfo.java文件中,我们需要首先建立一个String类型的变量linenumber,然后对linenumber进行设置,代码如下:

光有这个还不行,还需要对“CSVDataSetResources.properties”文件进行设置,在该文件中属性的名称你可以自己起,但是值必须是linenumber,否则程序在运行的时候会到属性文件中去校验这个值是否存在。同时需要你在上图中想使用的元素类型在CSVDataSet.java类中新建相关类型的变量,名字也叫linenumber,然后要加上set和get方法。此时如果重新运行程序,新增加的这个元素就可以显示在CSV Data Set Config界面上了。

==========================================================================

接下来就可以打断点进行代码的调试了,调试的时候main函数的入口在源码结构的core下的org.apache.jmeter中的NewDriver类。在这个类中,需要将其中的jmDir=tmpDir;修改为jmDir="d:/workspace/jmeter2.13";否则会报文件路径的错误。剩下的关于参数文件的读取逻辑就在CSVDataSet.java中的iterationStart方法,具体的逻辑大家可以自己跟(debug)了。

在跟代码的过程中发现了JMeter其实做的很不错了,人家都想到了。如果想让我们的CSV Data Set Config中的参数化文件向loadrunner一样包含表头的话,我们只需要在配置的界面中Variable Names (comma-delimited)项为空就可以了。此时在参数文件中向loadrunner写上表头的名字就可以了,表头的各个字段的名字也就是我们将来用的参数的名字了,如果在Variable Names (comma-delimited)也添加上参数字段的名字就好了,毕竟这样看起来方便,于是想了一下规则,必须让Variable Names (comma-delimited)中的内容和参数文件中表头的内容一致,此时就不读表头信息,而是直接从第二行开始读取就可以了。于是对代码做了如下的修改:

如果以后还想从第几行开始读取,那也就是我最开始提到的linenumber了,至于代码怎么修改,有机会再去尝试了,应该是很好实现的。

好了,整个代码的修改过程就完毕了。


0 0
原创粉丝点击