jmeter可以使用ant自动化运行,运行结果可以通过html文件展示出来,并且可以生成日志jtl文件,文件名就是我们的jmx文件名。但是如果想知道运行开始和结束时间,就比较麻烦,写了个java脚本,解析jtl文件,取出其中的开始和结束时间戳,转化为日期格式,然后给jtl和html文件重命名。用到了dom4j jar包。
package com.yeetrack.jmeterAnt;
import java.io.File;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
* @author youthflies
* 处理jmeter jtl文件,解析里面的时间戳,为jtl文件和html文件加上运行时间
*/
public class TimeStamp
{
private static String resultPath;
private static List<File> fileList;
public static void main(String[] args)
{
//获取jtl文件列表
resultPath=(new File(System.getProperty("user.dir"))).getPath()+File.separator+"results";
fileList = new ArrayList<File>();
readAllFile(resultPath);
SAXReader reader = new SAXReader();
Document document = null;
//处理jtl文件
for(File file : fileList)
{
//跳过非jtl文件
if(!file.getName().endsWith("jtl"))
continue;
String starTest = null;
String endTest = null;
try
{
document = reader.read(file);
Element rootElement = document.getRootElement();
Iterator<Element> iterator = rootElement.elementIterator();
starTest = iterator.next().asXML();
while(iterator.hasNext())
{
endTest = iterator.next().asXML();
}
int startIndex = starTest.indexOf("ts=\"");
int endIndex = endTest.indexOf("ts=\"");
String startTime = starTest.substring(startIndex+4, startIndex+17);
String endTime = endTest.substring(endIndex+4, endIndex+17);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
String startDate = simpleDateFormat.format(Long.parseLong(startTime));
String endDate = simpleDateFormat.format(Long.parseLong(endTime));
System.out.println(startDate);
String oldName = file.getAbsolutePath();
int startSite = oldName.indexOf(file.getName());
String newName = oldName.substring(0, startSite)+startDate+"~"+endDate+"--"+file.getName();
//重命名jtl文件
file.renameTo(new File(newName));
//重命名相应的html文件
String htmlFileName = oldName.toLowerCase().replace("jtl", "html");
File htmlFile = new File(htmlFileName);
int startHtmlSite = htmlFileName.indexOf(htmlFile.getName());
String newHtmlName = htmlFileName.substring(0, startHtmlSite)+startDate+"~"+endDate+"--"+file.getName();
htmlFile.renameTo(new File(newHtmlName));
} catch (Exception e)
{
// TODO: handle exception
}
}
System.out.println("添加时间戳完毕");
}
private static void readAllFile(String path)
{
File dirFile = new File(path);
File[] resultFiles = dirFile.listFiles();
for(File file : resultFiles)
{
if(file.isDirectory())
readAllFile(file.getAbsolutePath());
else
{
if(!file.getName().contains("~"))
fileList.add(file);
}
}
}
}
将代码导成可执行jar包,放在libs文件夹中。
确认下,jmeter的jtl文件是xml文件格式的,build.xml文件,填上这一句<property name="jmeter.save.saveservice.output_format" value="xml"/>
<target name="test" >
<basename property="jmx.filename" file="${jmxfile}" suffix=".jmx"/>
<echo message="---------- Processing ${jmxfile} -----------"/>
<echo message="resultlogdir===${resultBase}/temp/${results.jtl}"/>
<jmeter jmeterhome="${jmeter-home}" resultlogdir="${resultBase}/temp/${results.jtl}" runremote="${runremote}" resultlog="${report.datestamp}${jmx.filename}.jtl"
testplan="${jmxs.dir}/${jmx.filename}.jmx">
<property name="jmeter.save.saveservice.output_format" value="xml"/>
<!--<property name="jmeter.save.saveservice.response_data" value="true"/>-->
<jvmarg value="-Xincgc"/>
<jvmarg value="-Xms2048m"/>
<jvmarg value="-Xmx2048m"/>
build.xml中执行我们的jar包:
<target name="timestamp" depends="copy-images">
<java classname="com.baidu.jmeterAnt.TimeStamp">
<classpath>
<path location="libs/timestamp.jar"></path>
</classpath>
</java >
</target>
Ok,这样ant执行出来的文件名,2013-06-08-20-40-48~2013-06-08-20-40-48--baidu-10.jtl
, 2013-06-08-21-16-38~2013-06-08-21-16-39--itebeta-10.html
。方便知晓运行时间,监控服务器状态。
版权声明
本站文章、图片、视频等(除转载外),均采用知识共享署名 4.0 国际许可协议(CC BY-NC-SA 4.0),转载请注明出处、非商业性使用、并且以相同协议共享。
© 空空博客,本文链接:https://www.yeetrack.com/?p=587
近期评论