Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MeterSphere
data-streaming
提交
16747419
D
data-streaming
项目概览
MeterSphere
/
data-streaming
9 个月 前同步成功
通知
12
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
data-streaming
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
16747419
编写于
11月 24, 2022
作者:
C
CaptainB
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor: 实时报告计算优化
上级
897788e4
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
21 addition
and
23 deletion
+21
-23
src/main/java/io/metersphere/streaming/report/realtime/RequestStatisticsSummaryRealtime.java
...ing/report/realtime/RequestStatisticsSummaryRealtime.java
+21
-23
未找到文件。
src/main/java/io/metersphere/streaming/report/realtime/RequestStatisticsSummaryRealtime.java
浏览文件 @
16747419
...
...
@@ -17,10 +17,12 @@ import org.springframework.stereotype.Component;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.time.temporal.TemporalUnit
;
import
java.util.ArrayList
;
import
java.util.Comparator
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.atomic.AtomicLong
;
import
java.util.stream.Collectors
;
@Component
(
"requestStatisticsSummaryRealtime"
)
...
...
@@ -68,30 +70,26 @@ public class RequestStatisticsSummaryRealtime extends AbstractSummaryRealtime<Li
}
List
<
Statistics
>
finalResult
=
result
;
ReportTimeInfo
finalTimeInfo
=
timeInfo
;
LoadTestReportResultRealtimeKey
reportResultRealtimeKey
=
new
LoadTestReportResultRealtimeKey
();
reportResultRealtimeKey
.
setReportId
(
reportId
);
reportResultRealtimeKey
.
setReportKey
(
ReportKeys
.
TimeInfo
.
name
());
reportResultRealtimeKey
.
setResourceIndex
(
resourceIndex
);
reportResultRealtimeKey
.
setSort
(
sort
);
LoadTestReportResultRealtime
reportResultRealtime
=
loadTestReportResultRealtimeMapper
.
selectByPrimaryKey
(
reportResultRealtimeKey
);
ReportTimeInfo
reportTimeInfo
=
null
;
try
{
reportTimeInfo
=
objectMapper
.
readValue
(
reportResultRealtime
.
getReportValue
(),
ReportTimeInfo
.
class
);
}
catch
(
JsonProcessingException
e
)
{
LogUtil
.
error
(
e
);
}
ReportTimeInfo
finalReportTimeInfo
=
reportTimeInfo
;
AtomicLong
realtimeInfo
=
new
AtomicLong
(
0
);
SummaryRealtimeAction
action
=
(
resultPart
)
->
{
try
{
String
reportValue
=
resultPart
.
getReportValue
();
List
<
Statistics
>
reportContent
=
objectMapper
.
readValue
(
reportValue
,
new
TypeReference
<
List
<
Statistics
>>()
{
List
<
Statistics
>
reportContent
=
objectMapper
.
readValue
(
resultPart
.
getReportValue
(),
new
TypeReference
<
List
<
Statistics
>>()
{
});
LoadTestReportResultRealtimeKey
reportResultRealtimeKey
=
new
LoadTestReportResultRealtimeKey
();
reportResultRealtimeKey
.
setReportId
(
reportId
);
reportResultRealtimeKey
.
setReportKey
(
ReportKeys
.
TimeInfo
.
name
());
reportResultRealtimeKey
.
setResourceIndex
(
resourceIndex
);
reportResultRealtimeKey
.
setSort
(
sort
);
LoadTestReportResultRealtime
reportResultRealtime
=
loadTestReportResultRealtimeMapper
.
selectByPrimaryKey
(
reportResultRealtimeKey
);
ReportTimeInfo
reportTimeInfo
=
objectMapper
.
readValue
(
reportResultRealtime
.
getReportValue
(),
ReportTimeInfo
.
class
);
realtimeInfo
.
set
(
reportTimeInfo
.
getDuration
());
reportContent
.
forEach
(
statistics
->
{
statistics
.
setTransactions
(
format
.
format
(
new
BigDecimal
(
statistics
.
getTransactions
()).
multiply
(
BigDecimal
.
valueOf
(
finalReportTimeInfo
.
getDuration
()))));
statistics
.
setReceived
(
format
.
format
(
new
BigDecimal
(
statistics
.
getReceived
()).
multiply
(
BigDecimal
.
valueOf
(
finalReportTimeInfo
.
getDuration
()))));
statistics
.
setSent
(
format
.
format
(
new
BigDecimal
(
statistics
.
getSent
()).
multiply
(
BigDecimal
.
valueOf
(
finalReportTimeInfo
.
getDuration
()))));
statistics
.
setTransactions
(
format
.
format
(
new
BigDecimal
(
statistics
.
getTransactions
()).
multiply
(
BigDecimal
.
valueOf
(
realtimeInfo
.
get
()))));
statistics
.
setReceived
(
format
.
format
(
new
BigDecimal
(
statistics
.
getReceived
()).
multiply
(
BigDecimal
.
valueOf
(
realtimeInfo
.
get
()))));
statistics
.
setSent
(
format
.
format
(
new
BigDecimal
(
statistics
.
getSent
()).
multiply
(
BigDecimal
.
valueOf
(
realtimeInfo
.
get
()))));
});
// 保存顺序
...
...
@@ -139,9 +137,9 @@ public class RequestStatisticsSummaryRealtime extends AbstractSummaryRealtime<Li
statistics
.
setTp95
(
format
.
format
(
new
BigDecimal
(
statistics
.
getTp95
()).
divide
(
divisor
,
4
,
RoundingMode
.
HALF_UP
)));
statistics
.
setTp99
(
format
.
format
(
new
BigDecimal
(
statistics
.
getTp99
()).
divide
(
divisor
,
4
,
RoundingMode
.
HALF_UP
)));
if
(
finalTimeInfo
.
getDuration
()
>
0
)
{
statistics
.
setTransactions
(
format
.
format
(
new
BigDecimal
(
statistics
.
getTransactions
()).
divide
(
BigDecimal
.
valueOf
(
finalTimeInfo
.
getDuration
()
+
finalReportTimeInfo
.
getDuration
()),
4
,
RoundingMode
.
HALF_UP
)));
statistics
.
setReceived
(
format
.
format
(
new
BigDecimal
(
statistics
.
getReceived
()).
divide
(
BigDecimal
.
valueOf
(
finalTimeInfo
.
getDuration
()
+
finalReportTimeInfo
.
getDuration
()),
4
,
RoundingMode
.
HALF_UP
)));
statistics
.
setSent
(
format
.
format
(
new
BigDecimal
(
statistics
.
getSent
()).
divide
(
BigDecimal
.
valueOf
(
finalTimeInfo
.
getDuration
()
+
finalReportTimeInfo
.
getDuration
()),
4
,
RoundingMode
.
HALF_UP
)));
statistics
.
setTransactions
(
format
.
format
(
new
BigDecimal
(
statistics
.
getTransactions
()).
divide
(
BigDecimal
.
valueOf
(
finalTimeInfo
.
getDuration
()
+
realtimeInfo
.
get
()),
4
,
RoundingMode
.
HALF_UP
)));
statistics
.
setReceived
(
format
.
format
(
new
BigDecimal
(
statistics
.
getReceived
()).
divide
(
BigDecimal
.
valueOf
(
finalTimeInfo
.
getDuration
()
+
realtimeInfo
.
get
()),
4
,
RoundingMode
.
HALF_UP
)));
statistics
.
setSent
(
format
.
format
(
new
BigDecimal
(
statistics
.
getSent
()).
divide
(
BigDecimal
.
valueOf
(
finalTimeInfo
.
getDuration
()
+
realtimeInfo
.
get
()),
4
,
RoundingMode
.
HALF_UP
)));
}
});
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录