如何在 jmeter 加载 运行 后编辑 summary.csv 文件
How to edit summary.csv file after jmeter load run
在运行我的负载测试 Jmeter 生成结果到 "summary.csv" 之后。
此文件中的某些网址如下所示:
1482255989405,3359,POST ...users/G0356GM7QOITIMGA/...
1482255989479,3310,POST ...users/HRC50JG3T524N9RN/...
1482255989488,3354,POST ...users/54QEGZB54BEWOCJJ/...
其中“...users/G0356GM7QOITIMGA/...” - 它的 URL 列。
之后,我尝试使用此命令生成 jmeter-report:
jmeter -g summary.csv -o report
但是此操作抛出内存不足异常(因为有许多不同的 URL)。
所以我决定在 tearDown 线程组 中编辑 summary.csv 并将所有 ID 替换为 "someID" 字符串,使用 BeanShell Sampler:
import java.io.*;
import org.apache.jmeter.services.FileServer;
try {
String sep = System.getProperty("line.separator");
String summaryFileDirPath = FileServer.getFileServer().getBaseDir() + File.separator;
String summaryFilePath = summaryFileDirPath + "summary.csv";
log.info("read " + summaryFilePath);
File file = new File(summaryFilePath);
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;
String text = "";
while ((line = reader.readLine()) != null) {
text += line + sep;
}
reader.close();
log.info(summaryFilePath);
file.delete();
FileWriter writer = new FileWriter(summaryFileDirPath + "summary.csv", false);
writer.write(text.replaceAll("users/[A-Z0-9]*/", "users/EUCI/"));
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
结果:
summary.csv screen
似乎 Jmeter 在 teardown 线程组 结束他的工作后附加了一些行。
如何在测试 运行 后仅使用 jmeter 脚本编辑 summary.csv 文件?
PS:我只需要在 summary.csv
中收集结果
有一个 JMeter 属性 - jmeter.save.saveservice.autoflush
,很可能你正在忍受它的默认值 false
# AutoFlush on each line written in XML or CSV output
# Setting this to true will result in less test results data loss in case of Crash
# but with impact on performances, particularly for intensive tests (low or no pauses)
# Since JMeter 2.10, this is false by default
#jmeter.save.saveservice.autoflush=false
您至少可以通过两种方式覆盖该值:
将下一行添加到 user.properties 文件:
jmeter.save.saveservice.autoflush=true
通过-J
命令行参数将其传递给JMeter,如:
jmeter -Jjmeter.save.saveservice.autoflush=true -n -t ....
有关 JMeter 属性及其使用方法的全面信息,请参阅 Apache JMeter Properties Customization Guide 文章
在运行我的负载测试 Jmeter 生成结果到 "summary.csv" 之后。
此文件中的某些网址如下所示:
1482255989405,3359,POST ...users/G0356GM7QOITIMGA/...
1482255989479,3310,POST ...users/HRC50JG3T524N9RN/...
1482255989488,3354,POST ...users/54QEGZB54BEWOCJJ/...
其中“...users/G0356GM7QOITIMGA/...” - 它的 URL 列。
之后,我尝试使用此命令生成 jmeter-report:
jmeter -g summary.csv -o report
但是此操作抛出内存不足异常(因为有许多不同的 URL)。
所以我决定在 tearDown 线程组 中编辑 summary.csv 并将所有 ID 替换为 "someID" 字符串,使用 BeanShell Sampler:
import java.io.*;
import org.apache.jmeter.services.FileServer;
try {
String sep = System.getProperty("line.separator");
String summaryFileDirPath = FileServer.getFileServer().getBaseDir() + File.separator;
String summaryFilePath = summaryFileDirPath + "summary.csv";
log.info("read " + summaryFilePath);
File file = new File(summaryFilePath);
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;
String text = "";
while ((line = reader.readLine()) != null) {
text += line + sep;
}
reader.close();
log.info(summaryFilePath);
file.delete();
FileWriter writer = new FileWriter(summaryFileDirPath + "summary.csv", false);
writer.write(text.replaceAll("users/[A-Z0-9]*/", "users/EUCI/"));
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
结果:
summary.csv screen
似乎 Jmeter 在 teardown 线程组 结束他的工作后附加了一些行。
如何在测试 运行 后仅使用 jmeter 脚本编辑 summary.csv 文件?
PS:我只需要在 summary.csv
有一个 JMeter 属性 - jmeter.save.saveservice.autoflush
,很可能你正在忍受它的默认值 false
# AutoFlush on each line written in XML or CSV output
# Setting this to true will result in less test results data loss in case of Crash
# but with impact on performances, particularly for intensive tests (low or no pauses)
# Since JMeter 2.10, this is false by default
#jmeter.save.saveservice.autoflush=false
您至少可以通过两种方式覆盖该值:
将下一行添加到 user.properties 文件:
jmeter.save.saveservice.autoflush=true
通过
-J
命令行参数将其传递给JMeter,如:jmeter -Jjmeter.save.saveservice.autoflush=true -n -t ....
有关 JMeter 属性及其使用方法的全面信息,请参阅 Apache JMeter Properties Customization Guide 文章