优化统计效率

This commit is contained in:
liangdaliang
2025-04-18 13:29:11 +08:00
parent defa663b4c
commit c91a6183ba
2 changed files with 14 additions and 10 deletions

View File

@@ -87,7 +87,7 @@ public class HttpSampleAnalyzer {
samplesByInterface.forEach((interfaceName, interfaceSamples) -> { samplesByInterface.forEach((interfaceName, interfaceSamples) -> {
// 过滤出该接口的错误请求 // 过滤出该接口的错误请求
List<HttpSample> errorSamples = interfaceSamples.stream() List<HttpSample> errorSamples = interfaceSamples.stream()
.filter(s -> !"true".equals(s.getS())) .filter(s -> !s.getS())
.collect(Collectors.toList()); .collect(Collectors.toList());
// 按错误码统计 // 按错误码统计
@@ -116,7 +116,7 @@ public class HttpSampleAnalyzer {
samplesByInterface.forEach((interfaceName, interfaceSamples) -> { samplesByInterface.forEach((interfaceName, interfaceSamples) -> {
long total = interfaceSamples.size(); long total = interfaceSamples.size();
long errors = interfaceSamples.stream() long errors = interfaceSamples.stream()
.filter(s -> !"true".equals(s.getS())) .filter(s -> !s.getS())
.count(); .count();
result.put(interfaceName, new InterfaceErrorStat(interfaceName, total, errors)); result.put(interfaceName, new InterfaceErrorStat(interfaceName, total, errors));

View File

@@ -490,7 +490,7 @@ public class JMeterGroupUtil {
sampleSaveConfiguration.setSamplerData(true); sampleSaveConfiguration.setSamplerData(true);
sampleSaveConfiguration.setAsXml(true); sampleSaveConfiguration.setAsXml(true);
sampleSaveConfiguration.setFieldNames(true); sampleSaveConfiguration.setFieldNames(true);
sampleSaveConfiguration.setResponseHeaders(true); sampleSaveConfiguration.setResponseHeaders(false);
sampleSaveConfiguration.setRequestHeaders(false); sampleSaveConfiguration.setRequestHeaders(false);
sampleSaveConfiguration.setAssertionResultsFailureMessage(true); sampleSaveConfiguration.setAssertionResultsFailureMessage(true);
//sampleSaveConfiguration.setsserAtionsResultsToSave(0); assertionsResultsToSave //sampleSaveConfiguration.setsserAtionsResultsToSave(0); assertionsResultsToSave
@@ -549,23 +549,26 @@ public class JMeterGroupUtil {
// 初始化统计变量 // 初始化统计变量
Map<String, LabelStats> labelStatsMap = new LinkedHashMap<>(); Map<String, LabelStats> labelStatsMap = new LinkedHashMap<>();
List<HttpSample> samples = new ArrayList<>(); List<HttpSample> samples = new ArrayList<>();
long startTime = Long.MAX_VALUE; // long startTime = Long.MAX_VALUE;
long endTime = Long.MIN_VALUE; // long endTime = Long.MIN_VALUE;
long totalRequests = 0; long totalRequests = 0;
long failedRequests = 0; long failedRequests = 0;
long totalResponseTime = 0; long totalResponseTime = 0;
long totalMinResponseTime = Long.MAX_VALUE; long totalMinResponseTime = Long.MAX_VALUE;
long totalMaxResponseTime = Long.MIN_VALUE; long totalMaxResponseTime = Long.MIN_VALUE;
long totalTimeMillis = 0;
for (int i = 0; i < httpSampleList.getLength(); i++) { for (int i = 0; i < httpSampleList.getLength(); i++) {
Node httpSampleNode = httpSampleList.item(i); Node httpSampleNode = httpSampleList.item(i);
if (httpSampleNode.getNodeType() == Node.ELEMENT_NODE) { if (httpSampleNode.getNodeType() == Node.ELEMENT_NODE) {
Map<String, String> resultMap = new HashMap<>();
Element httpSampleElement = (Element) httpSampleNode; Element httpSampleElement = (Element) httpSampleNode;
// 提取字段 // 提取字段
String label = httpSampleElement.getAttribute("lb"); String label = httpSampleElement.getAttribute("lb");
boolean success = Boolean.parseBoolean(httpSampleElement.getAttribute("s")); boolean success = Boolean.parseBoolean(httpSampleElement.getAttribute("s"));
long responseTime = Long.parseLong(httpSampleElement.getAttribute("t")); long responseTime = Long.parseLong(httpSampleElement.getAttribute("t"));
long timestamp = Long.parseLong(httpSampleElement.getAttribute("ts")); long lt = Long.parseLong(httpSampleElement.getAttribute("lt"));
long ct = Long.parseLong(httpSampleElement.getAttribute("ct"));
totalTimeMillis += responseTime + lt + ct;
// long timestamp = Long.parseLong(httpSampleElement.getAttribute("ts"));
long receivedBytes = Long.parseLong(httpSampleElement.getAttribute("by")); long receivedBytes = Long.parseLong(httpSampleElement.getAttribute("by"));
long sentBytes = Long.parseLong(httpSampleElement.getAttribute("sby")); long sentBytes = Long.parseLong(httpSampleElement.getAttribute("sby"));
String responseCode = httpSampleElement.getAttribute("rc"); String responseCode = httpSampleElement.getAttribute("rc");
@@ -579,8 +582,8 @@ public class JMeterGroupUtil {
if (!success) { if (!success) {
failedRequests++; failedRequests++;
} }
startTime = Math.min(startTime, timestamp); // startTime = Math.min(startTime, timestamp);
endTime = Math.max(endTime, timestamp); // endTime = Math.max(endTime, timestamp);
// 更新按标签的统计 // 更新按标签的统计
LabelStats stats = labelStatsMap.getOrDefault(label, new LabelStats()); LabelStats stats = labelStatsMap.getOrDefault(label, new LabelStats());
stats.totalRequests++; stats.totalRequests++;
@@ -596,7 +599,8 @@ public class JMeterGroupUtil {
} }
} }
// 计算总时长(秒) // 计算总时长(秒)
double totalTimeInSeconds = (endTime - startTime) / 1000.0; double totalTimeInSeconds = totalTimeMillis / 1000.0;
// double totalTimeInSeconds2 = (endTime - startTime) / 1000.0;
// 输出汇总报告 // 输出汇总报告
for (Map.Entry<String, LabelStats> entry : labelStatsMap.entrySet()) { for (Map.Entry<String, LabelStats> entry : labelStatsMap.entrySet()) {