Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
kt-keystone
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Matrix
kt-keystone
Commits
5320067f
提交
5320067f
authored
3月 17, 2022
作者:
黄夏豪
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(base): 修复了一些执行器会异常终端的BUG
fix(base): 修改了执行器的返回值 fix(base): 修改了日志的发送格式
上级
a207f824
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
18 个修改的文件
包含
133 行增加
和
35 行删除
+133
-35
BaseTime.java
.../src/main/java/org/matrix/actuators/usecase/BaseTime.java
+37
-0
CaseActuator.java
.../main/java/org/matrix/actuators/usecase/CaseActuator.java
+0
-0
RunCaseResult.java
...main/java/org/matrix/actuators/usecase/RunCaseResult.java
+6
-4
TestCaseReport.java
...ain/java/org/matrix/actuators/usecase/TestCaseReport.java
+37
-0
TestDataExecuteResult.java
...a/org/matrix/actuators/usecase/TestDataExecuteResult.java
+16
-1
TestController.java
...n/java/org/matrix/database/controller/TestController.java
+3
-3
ExecutionHistory.java
...ain/java/org/matrix/database/entity/ExecutionHistory.java
+2
-0
ExecutionHistoryMapper.java
...va/org/matrix/database/mapper/ExecutionHistoryMapper.java
+2
-0
IExecutionRecordService.java
.../org/matrix/database/service/IExecutionRecordService.java
+2
-1
ExecutionRecordImpl.java
...org/matrix/database/service/impl/ExecutionRecordImpl.java
+2
-1
ExecutionHistoryVo.java
.../main/java/org/matrix/database/vo/ExecutionHistoryVo.java
+2
-0
ExecutionSocketHandler.java
...c/main/java/org/matrix/socket/ExecutionSocketHandler.java
+0
-1
LogQueueRuntime.java
...rc/main/java/org/matrix/socket/queue/LogQueueRuntime.java
+10
-7
CaseExecuteVo.java
...ase/src/main/java/org/matrix/socket/vo/CaseExecuteVo.java
+2
-0
ReporterData.java
...in/java/org/matrix/testNg/xml/reportXml/ReporterData.java
+6
-6
TestXml.java
.../src/main/java/org/matrix/testNg/xml/testXml/TestXml.java
+0
-5
ReporterUtils.java
kt-base/src/main/java/org/matrix/util/ReporterUtils.java
+3
-3
CaseActuatorTest.java
...test/java/org/matrix/actuators/http/CaseActuatorTest.java
+3
-3
没有找到文件。
kt-base/src/main/java/org/matrix/actuators/usecase/BaseTime.java
0 → 100644
浏览文件 @
5320067f
package
org
.
matrix
.
actuators
.
usecase
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.time.Duration
;
import
java.time.LocalDateTime
;
/**
* 为其他需要计算时间的类提供公共服务
*
* @author huangxiahao
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
BaseTime
{
LocalDateTime
startTime
;
LocalDateTime
endTime
;
public
Long
getDurationTimeMillis
()
{
Duration
duration
=
Duration
.
between
(
startTime
,
endTime
);
return
duration
.
toMillis
();
}
public
String
getDurationTimeStr
()
{
Duration
duration
=
Duration
.
between
(
startTime
,
endTime
);
long
days
=
duration
.
toDays
();
long
hours
=
duration
.
toHours
();
long
minutes
=
duration
.
toMinutes
();
long
millis
=
duration
.
toMillis
();
return
days
+
"天:"
+
hours
+
" 小时:"
+
minutes
+
" 分钟:"
+
millis
+
" 毫秒:"
;
}
}
kt-base/src/main/java/org/matrix/actuators/usecase/CaseActuator.java
浏览文件 @
5320067f
差异被折叠。
点击展开。
kt-base/src/main/java/org/matrix/actuators/usecase/RunCaseResult.java
浏览文件 @
5320067f
package
org
.
matrix
.
actuators
.
usecase
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.util.HashMap
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
/**
* 当用户执行了一组测试用例后,会返回这个对象
* @author huangxiahao
*/
@EqualsAndHashCode
(
callSuper
=
true
)
@Data
public
class
RunCaseResult
{
public
class
RunCaseResult
extends
BaseTime
{
private
Long
jobId
;
/**
* Key为caseId,List为case下的每一个执行结果
*/
private
Map
<
Long
,
List
<
TestCaseExecuteResult
>>
executionMap
=
new
HashMap
<>();
private
List
<
TestCaseReport
>
caseReports
=
new
ArrayList
<>();
}
kt-base/src/main/java/org/matrix/actuators/usecase/TestCaseReport.java
0 → 100644
浏览文件 @
5320067f
package
org
.
matrix
.
actuators
.
usecase
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
/**
* 当用户执行了一组测试用例后,会返回这个对象
* @author huangxiahao
*/
@EqualsAndHashCode
(
callSuper
=
true
)
@Data
public
class
TestCaseReport
extends
BaseTime
{
private
Long
caseId
;
/**
* 执行状态
*/
private
Boolean
status
;
/**
* case下的每一个执行结果
*/
private
List
<
TestDataExecuteResult
>
dataExecuteResults
=
new
ArrayList
<>();
public
TestCaseReport
(
LocalDateTime
startTime
,
LocalDateTime
endTime
,
Long
caseId
,
Boolean
status
,
List
<
TestDataExecuteResult
>
dataExecuteResults
)
{
super
(
startTime
,
endTime
);
this
.
caseId
=
caseId
;
this
.
status
=
status
;
this
.
dataExecuteResults
=
dataExecuteResults
;
}
}
kt-base/src/main/java/org/matrix/actuators/usecase/Test
Case
ExecuteResult.java
→
kt-base/src/main/java/org/matrix/actuators/usecase/Test
Data
ExecuteResult.java
浏览文件 @
5320067f
...
...
@@ -2,16 +2,22 @@ package org.matrix.actuators.usecase;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.NoArgsConstructor
;
import
org.matrix.actuators.checkpoint.CheckPointResult
;
import
java.time.LocalDateTime
;
/**
* @author huangxiahao
*/
@EqualsAndHashCode
(
callSuper
=
true
)
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
TestCaseExecuteResult
{
public
class
TestDataExecuteResult
extends
BaseTime
{
private
Boolean
executionStatus
;
private
Long
caseId
;
...
...
@@ -21,4 +27,13 @@ public class TestCaseExecuteResult {
private
CheckPointResult
checkPointResult
;
public
TestDataExecuteResult
(
LocalDateTime
startTime
,
LocalDateTime
endTime
,
Boolean
executionStatus
,
Long
caseId
,
Long
dataId
,
BaseTestCaseResponseDetail
baseTestCaseRequestDetail
,
CheckPointResult
checkPointResult
)
{
super
(
startTime
,
endTime
);
this
.
executionStatus
=
executionStatus
;
this
.
caseId
=
caseId
;
this
.
dataId
=
dataId
;
this
.
baseTestCaseRequestDetail
=
baseTestCaseRequestDetail
;
this
.
checkPointResult
=
checkPointResult
;
}
}
kt-base/src/main/java/org/matrix/database/controller/TestController.java
浏览文件 @
5320067f
...
...
@@ -2,7 +2,7 @@ package org.matrix.database.controller;
import
com.alibaba.fastjson.JSONObject
;
import
org.matrix.actuators.usecase.CaseActuator
;
import
org.matrix.actuators.usecase.Test
Case
ExecuteResult
;
import
org.matrix.actuators.usecase.Test
Data
ExecuteResult
;
import
org.matrix.database.entity.ExecutionRecord
;
import
org.matrix.database.entity.TestCase
;
import
org.matrix.database.entity.TestCaseBTO
;
...
...
@@ -133,7 +133,7 @@ public class TestController {
TestCaseBTO
testCaseBTO
=
new
TestCaseBTO
();
testCaseBTO
.
setTestCase
(
testCase
);
testCaseBTO
.
setTestData
(
testData
);
Test
CaseExecuteResult
testCase
ExecuteResult
=
caseActuator
.
executeTestCase
(
testCaseBTO
,
1L
,
1L
);
System
.
out
.
println
(
test
Case
ExecuteResult
);
Test
DataExecuteResult
testData
ExecuteResult
=
caseActuator
.
executeTestCase
(
testCaseBTO
,
1L
,
1L
);
System
.
out
.
println
(
test
Data
ExecuteResult
);
}
}
kt-base/src/main/java/org/matrix/database/entity/ExecutionHistory.java
浏览文件 @
5320067f
...
...
@@ -40,6 +40,8 @@ public class ExecutionHistory extends BaseEntity {
private
Long
executionKey
;
private
String
url
;
private
ExecutionHistoryStatus
status
=
ExecutionHistoryStatus
.
READY
;
/**
...
...
kt-base/src/main/java/org/matrix/database/mapper/ExecutionHistoryMapper.java
浏览文件 @
5320067f
...
...
@@ -38,6 +38,7 @@ public interface ExecutionHistoryMapper extends BaseMapper<ExecutionHistory> {
"\tkeh.data_id dataId,\n"
+
"\tkeh.job_id jobId,\n"
+
"\tkeh.execution_key executionKey,\n"
+
"\tkeh.url url,\n"
+
"\tIF(MIN( keh.`status` )= 0 or MIN( keh.`status` ) = 1,1,MAX(keh.`status`)) `status`,\n"
+
"\tktc.`name` caseName,\n"
+
"\tktd.`name` dataName,"
+
...
...
@@ -79,6 +80,7 @@ public interface ExecutionHistoryMapper extends BaseMapper<ExecutionHistory> {
"\tkeh.case_id caseId,\n"
+
"\tkeh.data_id dataId,\n"
+
"\tkeh.job_id jobId,\n"
+
"\tkeh.url url,\n"
+
"\tkeh.execution_key executionKey,\n"
+
"IF\n"
+
"\t(\n"
+
...
...
kt-base/src/main/java/org/matrix/database/service/IExecutionRecordService.java
浏览文件 @
5320067f
...
...
@@ -29,8 +29,9 @@ public interface IExecutionRecordService extends IService<ExecutionRecord> {
* 新增执行记录日志
* @param testExecuteLog 用例日志临时存储对象
* @param log 日志内容
* @return 刚才新增的东西
*/
voi
d
addExecutionRecord
(
TestExecuteLog
testExecuteLog
,
String
log
);
ExecutionRecor
d
addExecutionRecord
(
TestExecuteLog
testExecuteLog
,
String
log
);
/**
* 根据uniqueKey将对应的执行记录修改为目标状态
...
...
kt-base/src/main/java/org/matrix/database/service/impl/ExecutionRecordImpl.java
浏览文件 @
5320067f
...
...
@@ -25,11 +25,12 @@ public class ExecutionRecordImpl extends ServiceImpl<ExecutionRecordMapper, Exec
IDataSourceService
iDataSourceService
;
@Override
public
voi
d
addExecutionRecord
(
TestExecuteLog
testExecuteLog
,
String
log
)
{
public
ExecutionRecor
d
addExecutionRecord
(
TestExecuteLog
testExecuteLog
,
String
log
)
{
ExecutionRecord
executionRecord
=
new
ExecutionRecord
();
BeanUtils
.
copyProperties
(
testExecuteLog
,
executionRecord
);
executionRecord
.
setLog
(
log
);
this
.
save
(
executionRecord
);
return
executionRecord
;
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
...
...
kt-base/src/main/java/org/matrix/database/vo/ExecutionHistoryVo.java
浏览文件 @
5320067f
...
...
@@ -27,4 +27,6 @@ public class ExecutionHistoryVo extends ExecutionHistory {
private
LocalDateTime
endTime
;
private
String
url
;
}
kt-base/src/main/java/org/matrix/socket/ExecutionSocketHandler.java
浏览文件 @
5320067f
...
...
@@ -94,7 +94,6 @@ public class ExecutionSocketHandler extends TextWebSocketHandler {
if
(
testCaseList
.
size
()>
0
){
caseExecuteVo
.
setProjectId
(
testCaseList
.
get
(
0
).
getProjectId
());
}
session
.
sendMessage
(
new
TextMessage
(
JSONObject
.
toJSONString
(
caseExecuteVo
)));
caseActuator
.
runTestCase
(
session
,
caseExecuteVo
);
}
else
if
(
SocketType
.
TEST_CASE_MONITOR
.
equals
(
socketVo
.
getSocketType
()))
{
ExecuteMonitorVo
caseExecuteVo
=
JSON
.
parseObject
(
payload
,
ExecuteMonitorVo
.
class
);
...
...
kt-base/src/main/java/org/matrix/socket/queue/LogQueueRuntime.java
浏览文件 @
5320067f
...
...
@@ -5,6 +5,7 @@ import cn.hutool.log.level.Level;
import
com.alibaba.fastjson.JSONObject
;
import
org.matrix.actuators.sql.SqlExpActuator
;
import
org.matrix.actuators.util.ThreadUtil
;
import
org.matrix.database.entity.ExecutionRecord
;
import
org.matrix.database.service.IExecutionRecordService
;
import
org.matrix.enums.ModuleType
;
import
org.matrix.exception.GlobalException
;
...
...
@@ -41,8 +42,8 @@ public class LogQueueRuntime {
return
EXECUTION_RECORD_SERVICE
;
}
public
static
voi
d
addExecutionRecord
(
TestExecuteLog
testExecuteLog
,
String
log
){
getExecutionRecordService
().
addExecutionRecord
(
testExecuteLog
,
log
);
public
static
ExecutionRecor
d
addExecutionRecord
(
TestExecuteLog
testExecuteLog
,
String
log
){
return
getExecutionRecordService
().
addExecutionRecord
(
testExecuteLog
,
log
);
}
...
...
@@ -71,8 +72,9 @@ public class LogQueueRuntime {
TestExecuteLog
testExecuteLog
=
LOG_MAP
.
get
(
currentThreadId
);
if
(
testExecuteLog
!=
null
){
testExecuteLog
.
addLog
(
logMsg
);
sendMessage
(
currentThreadId
,
testExecuteLog
.
getUniqueKey
(),
logMsg
);
addExecutionRecord
(
testExecuteLog
,
logString
);
String
messageToDb
=
JSONObject
.
toJSONString
(
logMsg
);
ExecutionRecord
executionRecord
=
addExecutionRecord
(
testExecuteLog
,
messageToDb
);
sendMessage
(
currentThreadId
,
testExecuteLog
.
getUniqueKey
(),
executionRecord
.
getId
(),
messageToDb
);
}
else
{
throw
new
GlobalException
(
"该线程中的TestCaseLog对象未初始化,请先调用put方法初始化对象"
);
}
...
...
@@ -82,18 +84,19 @@ public class LogQueueRuntime {
LOG_MAP
.
remove
(
threadId
);
}
public
static
void
sendMessage
(
Long
threadId
,
String
uniqueKey
,
Object
log
)
{
public
static
void
sendMessage
(
Long
threadId
,
String
uniqueKey
,
Long
logId
,
String
log
)
{
try
{
TestExecuteLog
testExecuteLog
=
LOG_MAP
.
get
(
threadId
);
// 测试任务ID.测试用例ID.测试数据ID
String
message
=
JSONObject
.
toJSONString
(
log
);
String
logMessage
=
String
.
format
(
"%s.%s.%s.%s"
"%s.%s.%s.%s
.%s
"
,
testExecuteLog
.
getTestJobId
()
,
testExecuteLog
.
getTestCaseId
()
,
testExecuteLog
.
getTestDataId
()
,
message
.
substring
(
1
,
message
.
length
()-
1
)
,
logId
,
message
);
//如果uniqueKey中存在监听的socket则向该socket发送消息
List
<
WebSocketSession
>
webSocketSessions
=
ExecutionSocketHandler
.
EXECUTE_MONITOR_SOCKET_POOL
.
get
(
uniqueKey
);
...
...
kt-base/src/main/java/org/matrix/socket/vo/CaseExecuteVo.java
浏览文件 @
5320067f
...
...
@@ -25,5 +25,7 @@ public class CaseExecuteVo extends SocketVo {
private
Long
jobId
=
-
1L
;
private
String
uniqueKey
;
private
List
<
TestCaseListDataBto
>
testCaseListDataBtoList
=
new
ArrayList
<>();
}
kt-base/src/main/java/org/matrix/testNg/xml/reportXml/ReporterData.java
浏览文件 @
5320067f
...
...
@@ -2,7 +2,7 @@ package org.matrix.testNg.xml.reportXml;
import
lombok.extern.slf4j.Slf4j
;
import
org.matrix.actuators.checkpoint.CheckPointResult
;
import
org.matrix.actuators.usecase.Test
Case
ExecuteResult
;
import
org.matrix.actuators.usecase.Test
Data
ExecuteResult
;
import
org.matrix.database.entity.TestCase
;
import
org.matrix.database.service.ITestCaseService
;
import
org.matrix.exception.GlobalException
;
...
...
@@ -71,18 +71,18 @@ public class ReporterData {
//工具类
ReportUnits
units
=
new
ReportUnits
();
for
(
ITestResult
result
:
sortByTime
(
map
.
getAllResults
()))
{
List
<
Test
CaseExecuteResult
>
testCase
ExecuteResults
;
Map
<
Long
,
List
<
Test
Case
ExecuteResult
>>
longListMap
=
ReporterUtils
.
userResultMap
.
get
(
1L
);
List
<
Test
DataExecuteResult
>
testData
ExecuteResults
;
Map
<
Long
,
List
<
Test
Data
ExecuteResult
>>
longListMap
=
ReporterUtils
.
userResultMap
.
get
(
1L
);
Set
<
Long
>
longs
=
longListMap
.
keySet
();
for
(
Long
caseId
:
longs
)
{
TestCase
testCase
=
java
.
util
.
Optional
.
of
(
testCaseService
.
getById
(
caseId
))
.
orElseThrow
(()
->
new
GlobalException
(
String
.
format
(
"没有找到id = %d 的TestCase"
,
caseId
)));
test
Case
ExecuteResults
=
ReporterUtils
.
resultMap
.
get
(
caseId
);
for
(
Test
CaseExecuteResult
testCaseExecuteResult
:
testCase
ExecuteResults
)
{
test
Data
ExecuteResults
=
ReporterUtils
.
resultMap
.
get
(
caseId
);
for
(
Test
DataExecuteResult
testDataExecuteResult
:
testData
ExecuteResults
)
{
data
.
setDuration
(
units
.
formatDuration
(
result
.
getEndMillis
()
-
result
.
getStartMillis
()));
data
.
setParams
(
units
.
getParams
(
result
));
CheckPointResult
checkPointResult
=
test
Case
ExecuteResult
.
getCheckPointResult
();
CheckPointResult
checkPointResult
=
test
Data
ExecuteResult
.
getCheckPointResult
();
data
.
setTestCaseName
(
testCase
.
getName
());
data
.
setOutput
(
Reporter
.
getOutput
(
result
));
data
.
setDependMethod
(
units
.
getDependMethods
(
result
));
...
...
kt-base/src/main/java/org/matrix/testNg/xml/testXml/TestXml.java
浏览文件 @
5320067f
...
...
@@ -6,8 +6,6 @@ import org.matrix.BaseBootApplication;
import
org.matrix.actuators.checkpoint.CheckPointActuator
;
import
org.matrix.actuators.httpclient.HttpClientActuator
;
import
org.matrix.actuators.usecase.CaseActuator
;
import
org.matrix.actuators.usecase.RunCaseResult
;
import
org.matrix.actuators.usecase.TestCaseExecuteResult
;
import
org.matrix.database.entity.TestCase
;
import
org.matrix.database.entity.TestCaseListDataBto
;
import
org.matrix.database.entity.TestData
;
...
...
@@ -15,7 +13,6 @@ import org.matrix.database.service.ITestCaseService;
import
org.matrix.database.service.ITestDataService
;
import
org.matrix.exception.GlobalException
;
import
org.matrix.socket.vo.CaseExecuteVo
;
import
org.matrix.util.ReporterUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.test.context.SpringBootTest
;
...
...
@@ -30,8 +27,6 @@ import java.util.Iterator;
import
java.util.List
;
import
java.util.Map
;
import
static
org
.
matrix
.
util
.
ReporterUtils
.
resultMap
;
/**
* 执行xml测试
...
...
kt-base/src/main/java/org/matrix/util/ReporterUtils.java
浏览文件 @
5320067f
package
org
.
matrix
.
util
;
import
org.matrix.actuators.usecase.Test
Case
ExecuteResult
;
import
org.matrix.actuators.usecase.Test
Data
ExecuteResult
;
import
org.matrix.testNg.web.entity.DataBeansJobVo
;
import
org.matrix.testNg.web.entity.DataBeansVo
;
...
...
@@ -13,9 +13,9 @@ import java.util.Map;
*/
public
class
ReporterUtils
{
public
static
Map
<
Long
,
Map
<
Long
,
List
<
Test
Case
ExecuteResult
>>>
userResultMap
=
new
HashMap
<>();
public
static
Map
<
Long
,
Map
<
Long
,
List
<
Test
Data
ExecuteResult
>>>
userResultMap
=
new
HashMap
<>();
public
static
Map
<
Long
,
List
<
Test
Case
ExecuteResult
>>
resultMap
=
new
HashMap
<>();
public
static
Map
<
Long
,
List
<
Test
Data
ExecuteResult
>>
resultMap
=
new
HashMap
<>();
public
static
Map
<
String
,
DataBeansVo
>
map
=
new
HashMap
<>();
...
...
kt-base/src/test/java/org/matrix/actuators/http/CaseActuatorTest.java
浏览文件 @
5320067f
...
...
@@ -6,7 +6,7 @@ import org.junit.jupiter.api.Test;
import
org.junit.runner.RunWith
;
import
org.matrix.actuators.usecase.CaseActuator
;
import
org.matrix.actuators.usecase.Test
Case
ExecuteResult
;
import
org.matrix.actuators.usecase.Test
Data
ExecuteResult
;
import
org.matrix.database.entity.TestCase
;
import
org.matrix.database.entity.TestCaseBTO
;
import
org.matrix.database.entity.TestData
;
...
...
@@ -103,8 +103,8 @@ class CaseActuatorTest {
TestCaseBTO
testCaseBTO
=
new
TestCaseBTO
();
testCaseBTO
.
setTestCase
(
testCase
);
testCaseBTO
.
setTestData
(
testData
);
Test
CaseExecuteResult
testCase
ExecuteResult
=
caseActuator
.
executeTestCase
(
testCaseBTO
,
1L
,
1L
);
System
.
out
.
println
(
test
Case
ExecuteResult
);
Test
DataExecuteResult
testData
ExecuteResult
=
caseActuator
.
executeTestCase
(
testCaseBTO
,
1L
,
1L
);
System
.
out
.
println
(
test
Data
ExecuteResult
);
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论