优化统计效率

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

View File

@@ -490,7 +490,7 @@ public class JMeterGroupUtil {
sampleSaveConfiguration.setSamplerData(true);
sampleSaveConfiguration.setAsXml(true);
sampleSaveConfiguration.setFieldNames(true);
sampleSaveConfiguration.setResponseHeaders(true);
sampleSaveConfiguration.setResponseHeaders(false);
sampleSaveConfiguration.setRequestHeaders(false);
sampleSaveConfiguration.setAssertionResultsFailureMessage(true);
//sampleSaveConfiguration.setsserAtionsResultsToSave(0); assertionsResultsToSave
@@ -549,23 +549,26 @@ public class JMeterGroupUtil {
// 初始化统计变量
Map<String, LabelStats> labelStatsMap = new LinkedHashMap<>();
List<HttpSample> samples = new ArrayList<>();
long startTime = Long.MAX_VALUE;
long endTime = Long.MIN_VALUE;
// long startTime = Long.MAX_VALUE;
// long endTime = Long.MIN_VALUE;
long totalRequests = 0;
long failedRequests = 0;
long totalResponseTime = 0;
long totalMinResponseTime = Long.MAX_VALUE;
long totalMaxResponseTime = Long.MIN_VALUE;
long totalTimeMillis = 0;
for (int i = 0; i < httpSampleList.getLength(); i++) {
Node httpSampleNode = httpSampleList.item(i);
if (httpSampleNode.getNodeType() == Node.ELEMENT_NODE) {
Map<String, String> resultMap = new HashMap<>();
Element httpSampleElement = (Element) httpSampleNode;
// 提取字段
String label = httpSampleElement.getAttribute("lb");
boolean success = Boolean.parseBoolean(httpSampleElement.getAttribute("s"));
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 sentBytes = Long.parseLong(httpSampleElement.getAttribute("sby"));
String responseCode = httpSampleElement.getAttribute("rc");
@@ -579,8 +582,8 @@ public class JMeterGroupUtil {
if (!success) {
failedRequests++;
}
startTime = Math.min(startTime, timestamp);
endTime = Math.max(endTime, timestamp);
// startTime = Math.min(startTime, timestamp);
// endTime = Math.max(endTime, timestamp);
// 更新按标签的统计
LabelStats stats = labelStatsMap.getOrDefault(label, new LabelStats());
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()) {