Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MeterSphere
metersphere
提交
492dca96
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,发现更多精彩内容 >>
提交
492dca96
编写于
7月 27, 2020
作者:
C
Captain.B
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 优化停止性能测试是否保留报告
上级
2522b83f
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
64 addition
and
23 deletion
+64
-23
backend/src/main/java/io/metersphere/performance/controller/PerformanceTestController.java
...ere/performance/controller/PerformanceTestController.java
+3
-3
backend/src/main/java/io/metersphere/performance/service/PerformanceTestService.java
...tersphere/performance/service/PerformanceTestService.java
+14
-2
backend/src/main/java/io/metersphere/performance/service/ReportService.java
...ava/io/metersphere/performance/service/ReportService.java
+8
-1
backend/src/main/java/io/metersphere/websocket/ReportWebSocket.java
...c/main/java/io/metersphere/websocket/ReportWebSocket.java
+3
-0
frontend/src/business/components/performance/report/PerformanceReportView.vue
...s/components/performance/report/PerformanceReportView.vue
+22
-13
frontend/src/business/components/performance/test/EditPerformanceTestPlan.vue
...s/components/performance/test/EditPerformanceTestPlan.vue
+0
-1
frontend/src/i18n/en-US.js
frontend/src/i18n/en-US.js
+5
-1
frontend/src/i18n/zh-CN.js
frontend/src/i18n/zh-CN.js
+4
-1
frontend/src/i18n/zh-TW.js
frontend/src/i18n/zh-TW.js
+5
-1
未找到文件。
backend/src/main/java/io/metersphere/performance/controller/PerformanceTestController.java
浏览文件 @
492dca96
...
...
@@ -102,9 +102,9 @@ public class PerformanceTestController {
return
performanceTestService
.
run
(
request
);
}
@GetMapping
(
"stop/{reportId}"
)
public
void
stopTest
(
@PathVariable
String
reportId
)
{
performanceTestService
.
stopTest
(
reportId
);
@GetMapping
(
"stop/{reportId}
/{forceStop}
"
)
public
void
stopTest
(
@PathVariable
String
reportId
,
@PathVariable
boolean
forceStop
)
{
performanceTestService
.
stopTest
(
reportId
,
forceStop
);
}
@GetMapping
(
"/file/metadata/{testId}"
)
...
...
backend/src/main/java/io/metersphere/performance/service/PerformanceTestService.java
浏览文件 @
492dca96
...
...
@@ -401,7 +401,19 @@ public class PerformanceTestService {
scheduleService
.
addOrUpdateCronJob
(
request
,
PerformanceTestJob
.
getJobKey
(
request
.
getResourceId
()),
PerformanceTestJob
.
getTriggerKey
(
request
.
getResourceId
()),
PerformanceTestJob
.
class
);
}
public
void
stopTest
(
String
reportId
)
{
reportService
.
deleteReport
(
reportId
);
public
void
stopTest
(
String
reportId
,
boolean
forceStop
)
{
if
(
forceStop
)
{
reportService
.
deleteReport
(
reportId
);
}
else
{
LoadTestReport
loadTestReport
=
loadTestReportMapper
.
selectByPrimaryKey
(
reportId
);
LoadTestWithBLOBs
loadTest
=
loadTestMapper
.
selectByPrimaryKey
(
loadTestReport
.
getTestId
());
final
Engine
engine
=
EngineFactory
.
createEngine
(
loadTest
);
if
(
engine
==
null
)
{
MSException
.
throwException
(
String
.
format
(
"Stop report fail. create engine fail,report ID:%s"
,
reportId
));
}
reportService
.
stopEngine
(
loadTest
,
engine
);
// 停止测试之后设置报告的状态
reportService
.
updateStatus
(
reportId
,
PerformanceTestStatus
.
Completed
.
name
());
}
}
}
backend/src/main/java/io/metersphere/performance/service/ReportService.java
浏览文件 @
492dca96
...
...
@@ -99,7 +99,7 @@ public class ReportService {
loadTestReportMapper
.
deleteByPrimaryKey
(
reportId
);
}
p
rivate
void
stopEngine
(
LoadTestWithBLOBs
loadTest
,
Engine
engine
)
{
p
ublic
void
stopEngine
(
LoadTestWithBLOBs
loadTest
,
Engine
engine
)
{
engine
.
stop
();
loadTest
.
setStatus
(
PerformanceTestStatus
.
Saved
.
name
());
loadTestMapper
.
updateByPrimaryKeySelective
(
loadTest
);
...
...
@@ -239,4 +239,11 @@ public class ReportService {
public
LoadTestReport
getReport
(
String
reportId
)
{
return
loadTestReportMapper
.
selectByPrimaryKey
(
reportId
);
}
public
void
updateStatus
(
String
reportId
,
String
status
)
{
LoadTestReport
report
=
new
LoadTestReport
();
report
.
setId
(
reportId
);
report
.
setStatus
(
status
);
loadTestReportMapper
.
updateByPrimaryKeySelective
(
report
);
}
}
backend/src/main/java/io/metersphere/websocket/ReportWebSocket.java
浏览文件 @
492dca96
...
...
@@ -84,6 +84,9 @@ public class ReportWebSocket {
session
.
close
();
break
;
}
if
(!
session
.
isOpen
())
{
return
;
}
if
(
PerformanceTestStatus
.
Running
.
name
().
equals
(
report
.
getStatus
()))
{
session
.
getBasicRemote
().
sendText
(
"refresh-"
+
this
.
refresh
++);
}
...
...
frontend/src/business/components/performance/report/PerformanceReportView.vue
浏览文件 @
492dca96
...
...
@@ -15,7 +15,7 @@
</el-row>
<el-row
class=
"ms-report-view-btns"
>
<el-button
:disabled=
"isReadOnly || report.status !== 'Running'"
type=
"primary"
plain
size=
"mini"
@
click=
"
stopTest(reportId)
"
>
@
click=
"
dialogFormVisible=true
"
>
{{
$t
(
'
report.test_stop_now
'
)
}}
</el-button>
<el-button
:disabled=
"isReadOnly || report.status !== 'Completed'"
type=
"success"
plain
size=
"mini"
...
...
@@ -62,6 +62,16 @@
</el-tabs>
</el-card>
<el-dialog
:title=
"$t('report.test_stop_now_confirm')"
:visible.sync=
"dialogFormVisible"
width=
"30%"
>
<p
v-html=
"$t('report.force_stop_tips')"
></p>
<p
v-html=
"$t('report.stop_tips')"
></p>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"danger"
size=
"small"
@
click=
"stopTest(true)"
>
{{
$t
(
'
report.force_stop_btn
'
)
}}
</el-button>
<el-button
type=
"primary"
size=
"small"
@
click=
"stopTest(false)"
>
{{
$t
(
'
report.stop_btn
'
)
}}
</el-button>
</div>
</el-dialog>
</ms-main-container>
</ms-container>
</
template
>
...
...
@@ -103,7 +113,8 @@
title
:
'
Logging
'
,
report
:
{},
isReadOnly
:
false
,
websocket
:
null
websocket
:
null
,
dialogFormVisible
:
false
,
}
},
methods
:
{
...
...
@@ -171,18 +182,16 @@
this
.
minutes
=
'
0
'
;
this
.
seconds
=
'
0
'
;
},
stopTest
(
reportId
)
{
this
.
$confirm
(
this
.
$t
(
'
report.test_stop_now_confirm
'
),
''
,
{
confirmButtonText
:
this
.
$t
(
'
commons.confirm
'
),
cancelButtonText
:
this
.
$t
(
'
commons.cancel
'
),
type
:
'
warning
'
}).
then
(()
=>
{
this
.
result
=
this
.
$get
(
'
/performance/stop/
'
+
reportId
,
()
=>
{
this
.
$success
(
this
.
$t
(
'
report.test_stop_success
'
));
stopTest
(
forceStop
)
{
this
.
result
=
this
.
$get
(
'
/performance/stop/
'
+
this
.
reportId
+
'
/
'
+
forceStop
,
()
=>
{
this
.
$success
(
this
.
$t
(
'
report.test_stop_success
'
));
this
.
$set
(
this
.
report
,
"
refresh
"
,
Math
.
random
());
// 触发刷新
this
.
$set
(
this
.
report
,
"
status
"
,
'
Completed
'
);
if
(
forceStop
)
{
this
.
$router
.
push
(
'
/performance/report/all
'
);
}
)
})
.
catch
(()
=>
{
})
;
}
})
this
.
dialogFormVisible
=
false
;
},
rerun
(
testId
)
{
this
.
$confirm
(
this
.
$t
(
'
report.test_rerun_confirm
'
),
''
,
{
...
...
frontend/src/business/components/performance/test/EditPerformanceTestPlan.vue
浏览文件 @
492dca96
...
...
@@ -184,7 +184,6 @@
this
.
testPlan
.
id
=
response
.
data
;
this
.
$success
(
this
.
$t
(
'
commons.save_success
'
));
this
.
result
=
this
.
$post
(
this
.
runPath
,
{
id
:
this
.
testPlan
.
id
,
triggerMode
:
'
MANUAL
'
},
(
response
)
=>
{
this
.
$success
(
this
.
$t
(
'
load_test.is_running
'
))
let
reportId
=
response
.
data
;
this
.
$router
.
push
({
path
:
'
/performance/report/view/
'
+
reportId
})
})
...
...
frontend/src/i18n/en-US.js
浏览文件 @
492dca96
...
...
@@ -261,7 +261,11 @@ export default {
start_status
:
'
The test is in the beginning state, we will automatically display it on the page after we generate the report!
'
,
run_status
:
'
The test is running, please check the report later!
'
,
user_name
:
'
Creator
'
,
project_name
:
'
Project Name
'
project_name
:
'
Project Name
'
,
force_stop_tips
:
'
<strong>Terminating</strong> the servers will immediately kill the servers and the JTL files will be lost.
'
,
stop_tips
:
'
A <strong>Graceful shutdown</strong> will archive the JTL files and then stop the servers.
'
,
force_stop_btn
:
'
Terminating
'
,
stop_btn
:
'
Graceful shutdown
'
,
},
load_test
:
{
operating
:
'
Operating
'
,
...
...
frontend/src/i18n/zh-CN.js
浏览文件 @
492dca96
...
...
@@ -260,7 +260,10 @@ export default {
run_status
:
'
测试处于运行状态,请稍后查看报告!
'
,
user_name
:
'
创建人
'
,
project_name
:
'
所属项目
'
,
force_stop_tips
:
'
<strong>强制停止</strong>测试会立刻结束当前测试并删除报告数据
'
,
stop_tips
:
'
<strong>停止</strong>测试会结束当前测试并保留报告数据
'
,
force_stop_btn
:
'
强制停止
'
,
stop_btn
:
'
停止
'
,
},
load_test
:
{
operating
:
'
操作
'
,
...
...
frontend/src/i18n/zh-TW.js
浏览文件 @
492dca96
...
...
@@ -259,7 +259,11 @@ export default {
start_status
:
'
測試處於開始狀態, 我們生成報告後會自動展示到頁面上!
'
,
run_status
:
'
測試處於運行狀態,請稍後查看報告!
'
,
user_name
:
'
創建人
'
,
project_name
:
'
所屬項目
'
project_name
:
'
所屬項目
'
,
force_stop_tips
:
'
<strong>強制停止</strong>測試會立刻結束當前測試並刪除報告數據
'
,
stop_tips
:
'
<strong>停止</strong>測試會結束當前測試並保留報告數據
'
,
force_stop_btn
:
'
強制停止
'
,
stop_btn
:
'
停止
'
,
},
load_test
:
{
operating
:
'
操作
'
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录