Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MeterSphere
metersphere
提交
58756c1a
M
metersphere
项目概览
MeterSphere
/
metersphere
上一次同步 大约 3 年
通知
25
Star
1
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
metersphere
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
58756c1a
编写于
4月 22, 2020
作者:
S
shiziyuan9527
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
删除无用代码
上级
57120bb1
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
19 addition
and
377 deletion
+19
-377
backend/src/main/java/io/metersphere/controller/PerformanceReportController.java
...o/metersphere/controller/PerformanceReportController.java
+0
-1
backend/src/main/java/io/metersphere/report/GenerateReport.java
...d/src/main/java/io/metersphere/report/GenerateReport.java
+0
-19
backend/src/main/java/io/metersphere/report/base/RequestStatistics.java
...in/java/io/metersphere/report/base/RequestStatistics.java
+0
-136
backend/src/main/java/io/metersphere/report/dto/ErrorsTop5DTO.java
...rc/main/java/io/metersphere/report/dto/ErrorsTop5DTO.java
+0
-135
backend/src/main/java/io/metersphere/report/parse/ResultDataParse.java
...ain/java/io/metersphere/report/parse/ResultDataParse.java
+19
-16
backend/src/main/java/io/metersphere/service/ReportService.java
...d/src/main/java/io/metersphere/service/ReportService.java
+0
-1
backend/src/test/java/io/metersphere/JtlTest.java
backend/src/test/java/io/metersphere/JtlTest.java
+0
-69
未找到文件。
backend/src/main/java/io/metersphere/controller/PerformanceReportController.java
浏览文件 @
58756c1a
...
...
@@ -9,7 +9,6 @@ import io.metersphere.commons.utils.Pager;
import
io.metersphere.controller.request.ReportRequest
;
import
io.metersphere.dto.ReportDTO
;
import
io.metersphere.report.base.*
;
import
io.metersphere.report.dto.ErrorsTop5DTO
;
import
io.metersphere.service.ReportService
;
import
io.metersphere.user.SessionUtils
;
import
org.apache.shiro.authz.annotation.Logical
;
...
...
backend/src/main/java/io/metersphere/report/GenerateReport.java
浏览文件 @
58756c1a
...
...
@@ -4,7 +4,6 @@ import com.opencsv.bean.CsvToBean;
import
com.opencsv.bean.CsvToBeanBuilder
;
import
com.opencsv.bean.HeaderColumnNameMappingStrategy
;
import
io.metersphere.report.base.*
;
import
io.metersphere.report.dto.ErrorsTop5DTO
;
import
io.metersphere.report.parse.ResultDataParse
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.jmeter.report.processor.ErrorsSummaryConsumer
;
...
...
@@ -16,8 +15,6 @@ import org.apache.jmeter.report.processor.graph.impl.ResponseTimeOverTimeGraphCo
import
java.io.Reader
;
import
java.io.StringReader
;
import
java.text.DecimalFormat
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.time.Duration
;
import
java.time.Instant
;
import
java.time.LocalDateTime
;
...
...
@@ -28,9 +25,7 @@ import java.util.stream.Collectors;
public
class
GenerateReport
{
private
static
final
Integer
ERRORS_TOP_SIZE
=
5
;
private
static
final
String
DATE_TIME_PATTERN
=
"yyyy/MM/dd HH:mm:ss"
;
private
static
final
String
TIME_PATTERN
=
"HH:mm:ss"
;
private
static
List
<
Metric
>
resolver
(
String
jtlString
)
{
HeaderColumnNameMappingStrategy
<
Metric
>
ms
=
new
HeaderColumnNameMappingStrategy
<>();
...
...
@@ -64,10 +59,6 @@ public class GenerateReport {
return
ResultDataParse
.
summaryMapParsing
(
statisticsDataMap
,
Statistics
.
class
);
}
private
static
String
getResponseCodeAndFailureMessage
(
Metric
metric
)
{
return
metric
.
getResponseCode
()
+
"/"
+
metric
.
getResponseMessage
();
}
public
static
TestOverview
getTestOverview
(
String
jtlString
)
{
TestOverview
testOverview
=
new
TestOverview
();
DecimalFormat
decimalFormat
=
new
DecimalFormat
(
"0.00"
);
...
...
@@ -188,14 +179,4 @@ public class GenerateReport {
return
localDateTime
.
format
(
dateTimeFormatter
);
}
/**
* @param "yyyy-MM-dd HH:mm:ss"
* @return "HH:mm:ss"
*/
private
static
String
formatDate
(
String
dateString
)
throws
ParseException
{
SimpleDateFormat
before
=
new
SimpleDateFormat
(
DATE_TIME_PATTERN
);
SimpleDateFormat
after
=
new
SimpleDateFormat
(
TIME_PATTERN
);
return
after
.
format
(
before
.
parse
(
dateString
));
}
}
\ No newline at end of file
backend/src/main/java/io/metersphere/report/base/RequestStatistics.java
已删除
100644 → 0
浏览文件 @
57120bb1
package
io.metersphere.report.base
;
public
class
RequestStatistics
{
/**请求标签*/
private
String
requestLabel
;
/**压测请求数*/
private
Integer
samples
;
/**平均响应时间*/
private
String
average
;
/**平均点击率*/
private
String
avgHits
;
/**90% Line*/
private
String
tp90
;
/**95% Line*/
private
String
tp95
;
/**99% Line*/
private
String
tp99
;
/**最小请求时间 Min Response Time /ms */
private
String
min
;
/**最大请求时间 Max Response Time /ms */
private
String
max
;
/**吞吐量 KB/sec*/
private
String
kbPerSec
;
/**错误率 Error Percentage */
private
String
errors
;
/**错误个数*/
private
Integer
ko
;
public
String
getRequestLabel
()
{
return
requestLabel
;
}
public
void
setRequestLabel
(
String
requestLabel
)
{
this
.
requestLabel
=
requestLabel
;
}
public
Integer
getSamples
()
{
return
samples
;
}
public
void
setSamples
(
Integer
samples
)
{
this
.
samples
=
samples
;
}
public
String
getAverage
()
{
return
average
;
}
public
void
setAverage
(
String
average
)
{
this
.
average
=
average
;
}
public
String
getAvgHits
()
{
return
avgHits
;
}
public
void
setAvgHits
(
String
avgHits
)
{
this
.
avgHits
=
avgHits
;
}
public
String
getTp90
()
{
return
tp90
;
}
public
void
setTp90
(
String
tp90
)
{
this
.
tp90
=
tp90
;
}
public
String
getTp95
()
{
return
tp95
;
}
public
void
setTp95
(
String
tp95
)
{
this
.
tp95
=
tp95
;
}
public
String
getTp99
()
{
return
tp99
;
}
public
void
setTp99
(
String
tp99
)
{
this
.
tp99
=
tp99
;
}
public
String
getMin
()
{
return
min
;
}
public
void
setMin
(
String
min
)
{
this
.
min
=
min
;
}
public
String
getMax
()
{
return
max
;
}
public
void
setMax
(
String
max
)
{
this
.
max
=
max
;
}
public
String
getKbPerSec
()
{
return
kbPerSec
;
}
public
void
setKbPerSec
(
String
kbPerSec
)
{
this
.
kbPerSec
=
kbPerSec
;
}
public
String
getErrors
()
{
return
errors
;
}
public
void
setErrors
(
String
errors
)
{
this
.
errors
=
errors
;
}
public
Integer
getKo
()
{
return
ko
;
}
public
void
setKo
(
Integer
ko
)
{
this
.
ko
=
ko
;
}
}
backend/src/main/java/io/metersphere/report/dto/ErrorsTop5DTO.java
已删除
100644 → 0
浏览文件 @
57120bb1
package
io.metersphere.report.dto
;
import
io.metersphere.report.base.ErrorsTop5
;
import
java.util.List
;
public
class
ErrorsTop5DTO
{
private
List
<
ErrorsTop5
>
errorsTop5List
;
private
String
label
;
private
String
totalSamples
;
private
String
totalErrors
;
private
String
error1
;
private
String
error1Size
;
private
String
error2
;
private
String
error2Size
;
private
String
error3
;
private
String
error3Size
;
private
String
error4
;
private
String
error4Size
;
private
String
error5
;
private
String
error5Size
;
public
List
<
ErrorsTop5
>
getErrorsTop5List
()
{
return
errorsTop5List
;
}
public
void
setErrorsTop5List
(
List
<
ErrorsTop5
>
errorsTop5List
)
{
this
.
errorsTop5List
=
errorsTop5List
;
}
public
String
getLabel
()
{
return
label
;
}
public
void
setLabel
(
String
label
)
{
this
.
label
=
label
;
}
public
String
getTotalSamples
()
{
return
totalSamples
;
}
public
void
setTotalSamples
(
String
totalSamples
)
{
this
.
totalSamples
=
totalSamples
;
}
public
String
getTotalErrors
()
{
return
totalErrors
;
}
public
void
setTotalErrors
(
String
totalErrors
)
{
this
.
totalErrors
=
totalErrors
;
}
public
String
getError1
()
{
return
error1
;
}
public
void
setError1
(
String
error1
)
{
this
.
error1
=
error1
;
}
public
String
getError1Size
()
{
return
error1Size
;
}
public
void
setError1Size
(
String
error1Size
)
{
this
.
error1Size
=
error1Size
;
}
public
String
getError2
()
{
return
error2
;
}
public
void
setError2
(
String
error2
)
{
this
.
error2
=
error2
;
}
public
String
getError2Size
()
{
return
error2Size
;
}
public
void
setError2Size
(
String
error2Size
)
{
this
.
error2Size
=
error2Size
;
}
public
String
getError3
()
{
return
error3
;
}
public
void
setError3
(
String
error3
)
{
this
.
error3
=
error3
;
}
public
String
getError3Size
()
{
return
error3Size
;
}
public
void
setError3Size
(
String
error3Size
)
{
this
.
error3Size
=
error3Size
;
}
public
String
getError4
()
{
return
error4
;
}
public
void
setError4
(
String
error4
)
{
this
.
error4
=
error4
;
}
public
String
getError4Size
()
{
return
error4Size
;
}
public
void
setError4Size
(
String
error4Size
)
{
this
.
error4Size
=
error4Size
;
}
public
String
getError5
()
{
return
error5
;
}
public
void
setError5
(
String
error5
)
{
this
.
error5
=
error5
;
}
public
String
getError5Size
()
{
return
error5Size
;
}
public
void
setError5Size
(
String
error5Size
)
{
this
.
error5Size
=
error5Size
;
}
}
backend/src/main/java/io/metersphere/report/parse/ResultDataParse.java
浏览文件 @
58756c1a
...
...
@@ -29,26 +29,29 @@ public class ResultDataParse {
ListResultData
items
=
(
ListResultData
)
mapResultData
.
getResult
(
"items"
);
if
(
items
.
getSize
()
>
0
)
{
for
(
int
i
=
0
;
i
<
items
.
getSize
();
i
++)
{
MapResultData
resultData
=
(
MapResultData
)
items
.
get
(
i
);
ListResultData
data
=
(
ListResultData
)
resultData
.
getResult
(
"data"
);
int
size
=
data
.
getSize
();
String
[]
strArray
=
new
String
[
size
];
for
(
int
j
=
0
;
j
<
size
;
j
++)
{
ValueResultData
valueResultData
=
(
ValueResultData
)
data
.
get
(
j
);
if
(
valueResultData
.
getValue
()
==
null
)
{
strArray
[
j
]
=
""
;
}
else
{
String
accept
=
valueResultData
.
accept
(
new
JsonizerVisitor
());
strArray
[
j
]
=
accept
.
replace
(
"\\"
,
""
);
}
}
T
t
=
null
;
try
{
t
=
setParam
(
clazz
,
strArray
);
MapResultData
resultData
=
(
MapResultData
)
items
.
get
(
i
);
ListResultData
data
=
(
ListResultData
)
resultData
.
getResult
(
"data"
);
int
size
=
data
.
getSize
();
String
[]
strArray
=
new
String
[
size
];
T
t
=
clazz
.
newInstance
();
if
(
size
>
0
)
{
for
(
int
j
=
0
;
j
<
size
;
j
++)
{
ValueResultData
valueResultData
=
(
ValueResultData
)
data
.
get
(
j
);
if
(
valueResultData
.
getValue
()
==
null
)
{
strArray
[
j
]
=
""
;
}
else
{
String
accept
=
valueResultData
.
accept
(
new
JsonizerVisitor
());
strArray
[
j
]
=
accept
.
replace
(
"\\"
,
""
);
}
}
t
=
setParam
(
clazz
,
strArray
);
}
list
.
add
(
t
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
list
.
add
(
t
);
}
}
}
...
...
backend/src/main/java/io/metersphere/service/ReportService.java
浏览文件 @
58756c1a
...
...
@@ -13,7 +13,6 @@ import io.metersphere.engine.Engine;
import
io.metersphere.engine.EngineFactory
;
import
io.metersphere.report.GenerateReport
;
import
io.metersphere.report.base.*
;
import
io.metersphere.report.dto.ErrorsTop5DTO
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
...
...
backend/src/test/java/io/metersphere/JtlTest.java
浏览文件 @
58756c1a
package
io.metersphere
;
import
com.alibaba.fastjson.JSONObject
;
import
com.opencsv.bean.CsvToBean
;
import
com.opencsv.bean.CsvToBeanBuilder
;
import
com.opencsv.bean.HeaderColumnNameMappingStrategy
;
import
io.metersphere.report.base.RequestStatistics
;
import
org.junit.Test
;
import
java.io.Reader
;
import
java.io.StringReader
;
...
...
@@ -201,73 +199,6 @@ public class JtlTest {
List
<
Metric
>
metrics
=
beanBuilderExample
(
jtlString
);
// 根据label分组,label作为map的key
Map
<
String
,
List
<
Metric
>>
map
=
metrics
.
stream
().
collect
(
Collectors
.
groupingBy
(
Metric:
:
getLabel
));
getOneRpsResult
(
map
);
}
private
void
getOneRpsResult
(
Map
<
String
,
List
<
Metric
>>
map
){
Iterator
<
Map
.
Entry
<
String
,
List
<
Metric
>>>
iterator
=
map
.
entrySet
().
iterator
();
while
(
iterator
.
hasNext
())
{
Map
.
Entry
<
String
,
List
<
Metric
>>
entry
=
iterator
.
next
();
String
label
=
entry
.
getKey
();
List
<
Metric
>
list
=
entry
.
getValue
();
List
<
String
>
timestampList
=
list
.
stream
().
map
(
Metric:
:
getTimestamp
).
collect
(
Collectors
.
toList
());
int
index
=
0
;
//总的响应时间
int
sumElapsed
=
0
;
Integer
failSize
=
0
;
Integer
totalBytes
=
0
;
// 响应时间的列表排序之后 用于计算90%line、95%line、99line
List
<
Integer
>
elapsedList
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++)
{
try
{
Metric
row
=
list
.
get
(
i
);
//响应时间
String
elapsed
=
row
.
getElapsed
();
sumElapsed
+=
Integer
.
valueOf
(
elapsed
);
elapsedList
.
add
(
Integer
.
valueOf
(
elapsed
));
//成功与否
String
success
=
row
.
getSuccess
();
if
(!
"true"
.
equals
(
success
)){
failSize
++;
}
//字节
String
bytes
=
row
.
getBytes
();
totalBytes
+=
Integer
.
valueOf
(
bytes
);
index
++;
}
catch
(
Exception
e
){
System
.
out
.
println
(
"exception i:"
+
i
);
}
}
Collections
.
sort
(
elapsedList
,
new
Comparator
<
Integer
>()
{
public
int
compare
(
Integer
o1
,
Integer
o2
)
{
return
o1
-
o2
;
}
});
Integer
tp90
=
elapsedList
.
size
()*
9
/
10
;
Integer
tp95
=
elapsedList
.
size
()*
95
/
100
;
Integer
tp99
=
elapsedList
.
size
()*
99
/
100
;
Long
l
=
Long
.
valueOf
(
timestampList
.
get
(
index
-
1
))
-
Long
.
valueOf
(
timestampList
.
get
(
0
));
RequestStatistics
sceneResult
=
new
RequestStatistics
();
sceneResult
.
setRequestLabel
(
label
);
sceneResult
.
setSamples
(
index
);
// sceneResult.setAverage(sumElapsed/index);
sceneResult
.
setTp90
(
elapsedList
.
get
(
tp90
)+
""
);
sceneResult
.
setTp95
(
elapsedList
.
get
(
tp95
)+
""
);
sceneResult
.
setTp99
(
elapsedList
.
get
(
tp99
)+
""
);
sceneResult
.
setMin
(
elapsedList
.
get
(
0
)+
""
);
sceneResult
.
setMax
(
elapsedList
.
get
(
index
-
1
)+
""
);
sceneResult
.
setErrors
(
String
.
format
(
"%.2f"
,
failSize
*
100.0
/
index
)+
"%"
);
sceneResult
.
setKbPerSec
(
String
.
format
(
"%.2f"
,
totalBytes
*
1.0
/
1024
/(
l
*
1.0
/
1000
)));
System
.
out
.
println
(
JSONObject
.
toJSONString
(
sceneResult
));
System
.
out
.
println
();
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录