Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
kt-keystone
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Matrix
kt-keystone
Commits
65d8366c
提交
65d8366c
authored
1月 24, 2022
作者:
黄夏豪
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(base): 修改了checkpoint的返回结构
上级
4d9fd87f
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
123 行增加
和
29 行删除
+123
-29
CheckPointActuator.java
...a/org/matrix/actuators/checkpoint/CheckPointActuator.java
+61
-21
CheckPointResultDetail.java
...g/matrix/actuators/checkpoint/CheckPointResultDetail.java
+6
-0
CheckPointType.java
.../java/org/matrix/actuators/checkpoint/CheckPointType.java
+43
-0
HttpClientActuator.java
...a/org/matrix/actuators/httpclient/HttpClientActuator.java
+9
-1
HttpResponseDetail.java
...a/org/matrix/actuators/httpclient/HttpResponseDetail.java
+1
-1
CaseActuatorTest.java
.../test/java/org/matrix/actuators/sql/CaseActuatorTest.java
+3
-6
没有找到文件。
kt-base/src/main/java/org/matrix/actuators/checkpoint/CheckPointActuator.java
浏览文件 @
65d8366c
...
@@ -79,6 +79,7 @@ public class CheckPointActuator implements Actuator {
...
@@ -79,6 +79,7 @@ public class CheckPointActuator implements Actuator {
}
}
public
CheckPointResultDetail
jsonPathCheck
(
String
jsonPathCheckPoint
,
Object
jsonObject
)
{
public
CheckPointResultDetail
jsonPathCheck
(
String
jsonPathCheckPoint
,
Object
jsonObject
)
{
String
beforeExpression
=
jsonPathCheckPoint
;
String
expression
=
jsonPathCheckPoint
;
String
expression
=
jsonPathCheckPoint
;
try
{
try
{
expression
=
CompleteExpressionUtil
.
completeDynamicVariable
(
expression
=
CompleteExpressionUtil
.
completeDynamicVariable
(
...
@@ -94,12 +95,18 @@ public class CheckPointActuator implements Actuator {
...
@@ -94,12 +95,18 @@ public class CheckPointActuator implements Actuator {
}
catch
(
IllegalArgumentException
e
)
{
}
catch
(
IllegalArgumentException
e
)
{
return
new
CheckPointResultDetail
(
return
new
CheckPointResultDetail
(
false
,
false
,
CheckPointType
.
JSONPATH_CHECK
,
expression
,
"解析失败"
,
String
.
format
(
"JsonPath检查点,检查未通过,不能填写空的JsonPath,错误的jsonpath为:%s"
,
jsonPathCheckPoint
)
String
.
format
(
"JsonPath检查点,检查未通过,不能填写空的JsonPath,错误的jsonpath为:%s"
,
jsonPathCheckPoint
)
);
);
}
catch
(
PathNotFoundException
e
)
{
}
catch
(
PathNotFoundException
e
)
{
return
new
CheckPointResultDetail
(
return
new
CheckPointResultDetail
(
false
,
false
,
String
.
format
(
"JsonPath检查点,检查未通过,jsonpath取不到任何值,错误的path为:%s,http返回值为: %s"
,
e
.
getMessage
().
substring
(
e
.
getMessage
().
indexOf
(
":"
)),
jsonObject
.
toString
())
CheckPointType
.
JSONPATH_CHECK
,
expression
,
"解析失败"
,
String
.
format
(
"JsonPath检查点,检查未通过,jsonpath取不到任何值,错误的jsonpath为:%s"
,
e
.
getMessage
().
substring
(
e
.
getMessage
().
indexOf
(
":"
)))
);
);
}
}
try
{
try
{
...
@@ -109,18 +116,27 @@ public class CheckPointActuator implements Actuator {
...
@@ -109,18 +116,27 @@ public class CheckPointActuator implements Actuator {
if
((
Boolean
)
eval
)
{
if
((
Boolean
)
eval
)
{
return
new
CheckPointResultDetail
(
return
new
CheckPointResultDetail
(
true
,
true
,
String
.
format
(
"JsonPath检查点,检查通过,表达式为:%s"
,
expression
)
CheckPointType
.
JSONPATH_CHECK
,
beforeExpression
,
expression
,
String
.
format
(
"JsonPath检查点,检查通过"
)
);
);
}
else
{
}
else
{
return
new
CheckPointResultDetail
(
return
new
CheckPointResultDetail
(
false
,
false
,
String
.
format
(
"JsonPath检查点,检查未通过,计算结果为false,错误的表达式为:%s"
,
expression
)
CheckPointType
.
JSONPATH_CHECK
,
beforeExpression
,
expression
,
String
.
format
(
"JsonPath检查点,检查未通过,计算结果为false"
)
);
);
}
}
}
else
{
}
else
{
return
new
CheckPointResultDetail
(
return
new
CheckPointResultDetail
(
false
,
false
,
String
.
format
(
"JsonPath检查点,检查未通过,JsonPath的返回值不是一个布尔类型,错误的表达式为:%s"
,
expression
)
CheckPointType
.
JSONPATH_CHECK
,
beforeExpression
,
expression
,
String
.
format
(
"JsonPath检查点,检查未通过,JsonPath的返回值不是一个布尔类型"
)
);
);
}
}
}
catch
(
ScriptException
e
)
{
}
catch
(
ScriptException
e
)
{
...
@@ -137,22 +153,28 @@ public class CheckPointActuator implements Actuator {
...
@@ -137,22 +153,28 @@ public class CheckPointActuator implements Actuator {
public
List
<
CheckPointResultDetail
>
containCheck
(
String
containCheckPoint
,
String
responseBody
)
{
public
List
<
CheckPointResultDetail
>
containCheck
(
String
containCheckPoint
,
String
responseBody
)
{
List
<
CheckPointResultDetail
>
resultDetails
=
new
ArrayList
<>();
List
<
CheckPointResultDetail
>
resultDetails
=
new
ArrayList
<>();
containCheckPoint
=
CompleteExpressionUtil
.
completeDynamicVariable
(
containCheckPoint
,
envId
,
projectId
)
;
String
[]
split
=
containCheckPoint
.
split
(
","
);
String
[]
split
=
containCheckPoint
.
split
(
","
);
for
(
String
containExpression
:
split
)
{
for
(
String
containExpression
:
split
)
{
if
(
responseBody
.
contains
(
containExpression
))
{
String
parseContainExpression
=
CompleteExpressionUtil
.
completeDynamicVariable
(
containExpression
,
envId
,
projectId
)
;
if
(!
StringUtils
.
isEmpty
(
responseBody
)&&
responseBody
.
contains
(
parseContainExpression
))
{
resultDetails
.
add
(
new
CheckPointResultDetail
(
resultDetails
.
add
(
new
CheckPointResultDetail
(
true
,
true
,
CheckPointType
.
CONTAIN_CHECK
,
containExpression
,
parseContainExpression
,
"包含检查点,检查通过"
"包含检查点,检查通过"
));
));
}
else
{
}
else
{
resultDetails
.
add
(
new
CheckPointResultDetail
(
resultDetails
.
add
(
new
CheckPointResultDetail
(
false
,
false
,
String
.
format
(
"包含检查点,检查未通过,结果:%s 中,不包含值:%s"
,
responseBody
,
containExpression
)
CheckPointType
.
CONTAIN_CHECK
,
containExpression
,
parseContainExpression
,
String
.
format
(
"包含检查点,检查未通过,不包含目标值"
)
));
));
}
}
}
}
...
@@ -161,21 +183,27 @@ public class CheckPointActuator implements Actuator {
...
@@ -161,21 +183,27 @@ public class CheckPointActuator implements Actuator {
public
List
<
CheckPointResultDetail
>
noContainCheck
(
String
noContainCheckPoint
,
String
responseBody
)
{
public
List
<
CheckPointResultDetail
>
noContainCheck
(
String
noContainCheckPoint
,
String
responseBody
)
{
List
<
CheckPointResultDetail
>
resultDetails
=
new
ArrayList
<>();
List
<
CheckPointResultDetail
>
resultDetails
=
new
ArrayList
<>();
noContainCheckPoint
=
CompleteExpressionUtil
.
completeDynamicVariable
(
noContainCheckPoint
,
envId
,
projectId
)
;
String
[]
split
=
noContainCheckPoint
.
split
(
","
);
String
[]
split
=
noContainCheckPoint
.
split
(
","
);
for
(
String
containExpression
:
split
)
{
for
(
String
noContainExpression
:
split
)
{
if
(
responseBody
.
contains
(
noContainCheckPoint
))
{
String
parseNoContainExpression
=
CompleteExpressionUtil
.
completeDynamicVariable
(
noContainExpression
,
envId
,
projectId
)
;
if
(!
StringUtils
.
isEmpty
(
responseBody
)&&
responseBody
.
contains
(
parseNoContainExpression
))
{
resultDetails
.
add
(
new
CheckPointResultDetail
(
resultDetails
.
add
(
new
CheckPointResultDetail
(
false
,
false
,
String
.
format
(
"不包含检查点,检查未通过,结果:%s 中,包含值:%s"
,
responseBody
,
noContainCheckPoint
)
CheckPointType
.
NO_CONTAIN_CHECK
,
noContainExpression
,
parseNoContainExpression
,
String
.
format
(
"不包含检查点,检查未通过"
)
));
));
}
else
{
}
else
{
resultDetails
.
add
(
new
CheckPointResultDetail
(
resultDetails
.
add
(
new
CheckPointResultDetail
(
true
,
true
,
CheckPointType
.
NO_CONTAIN_CHECK
,
noContainExpression
,
parseNoContainExpression
,
"不包含检查点,检查通过"
"不包含检查点,检查通过"
));
));
}
}
...
@@ -203,11 +231,17 @@ public class CheckPointActuator implements Actuator {
...
@@ -203,11 +231,17 @@ public class CheckPointActuator implements Actuator {
if
(
isNull
)
{
if
(
isNull
)
{
return
new
CheckPointResultDetail
(
return
new
CheckPointResultDetail
(
false
,
false
,
CheckPointType
.
NULL_CHECK
,
""
,
""
,
String
.
format
(
"不为空检查点,检查未通过,请求结果:%s"
,
responseBody
)
String
.
format
(
"不为空检查点,检查未通过,请求结果:%s"
,
responseBody
)
);
);
}
else
{
}
else
{
return
new
CheckPointResultDetail
(
return
new
CheckPointResultDetail
(
true
,
true
,
CheckPointType
.
NULL_CHECK
,
""
,
""
,
"不为空检查点,检查通过"
"不为空检查点,检查通过"
);
);
}
}
...
@@ -215,15 +249,21 @@ public class CheckPointActuator implements Actuator {
...
@@ -215,15 +249,21 @@ public class CheckPointActuator implements Actuator {
public
CheckPointResultDetail
exceptionCheck
(
HttpResponseDetail
httpResponseDetail
)
{
public
CheckPointResultDetail
exceptionCheck
(
HttpResponseDetail
httpResponseDetail
)
{
if
(
httpResponseDetail
.
getStatusCode
().
value
()
==
HttpStatus
.
OK
.
value
())
{
if
(
httpResponseDetail
.
getStatusCode
()
!=
null
&&
httpResponseDetail
.
getStatusCode
()
.
value
()
==
HttpStatus
.
OK
.
value
())
{
return
new
CheckPointResultDetail
(
return
new
CheckPointResultDetail
(
true
,
true
,
CheckPointType
.
EXCEPTION_CHECK
,
""
,
""
,
"异常检查点,检查通过"
"异常检查点,检查通过"
);
);
}
else
{
}
else
{
return
new
CheckPointResultDetail
(
return
new
CheckPointResultDetail
(
true
,
true
,
String
.
format
(
"异常检查点,检查未通过,Http请求错误,错误码:%d,请求结果:%s"
,
httpResponseDetail
.
getStatusCode
().
value
(),
httpResponseDetail
.
getResponseBody
())
CheckPointType
.
EXCEPTION_CHECK
,
""
,
""
,
String
.
format
(
"异常检查点,检查未通过,Http请求错误,错误码:%d,请求结果:%s"
,
httpResponseDetail
.
getStatusCode
()==
null
?
0
:
httpResponseDetail
.
getStatusCode
().
value
(),
httpResponseDetail
.
getResponseBody
())
);
);
}
}
}
}
...
...
kt-base/src/main/java/org/matrix/actuators/checkpoint/CheckPointResultDetail.java
浏览文件 @
65d8366c
...
@@ -15,6 +15,12 @@ public class CheckPointResultDetail {
...
@@ -15,6 +15,12 @@ public class CheckPointResultDetail {
private
Boolean
isSuccess
;
private
Boolean
isSuccess
;
private
CheckPointType
type
;
private
String
matchExpression
;
private
String
parseExpression
;
private
String
message
;
private
String
message
;
...
...
kt-base/src/main/java/org/matrix/actuators/checkpoint/CheckPointType.java
0 → 100644
浏览文件 @
65d8366c
package
org
.
matrix
.
actuators
.
checkpoint
;
/**
* @author huangxiahao
*/
public
enum
CheckPointType
{
/**
* 异常检查点
*/
EXCEPTION_CHECK
(
1
,
"异常检查点"
),
NULL_CHECK
(
2
,
"空值检查点"
),
CONTAIN_CHECK
(
3
,
"包含检查点"
),
NO_CONTAIN_CHECK
(
4
,
"不包含检查点"
),
JSONPATH_CHECK
(
5
,
"Jsonpath检查点"
)
;
private
int
typeCode
;
private
String
name
;
CheckPointType
(
int
typeCode
,
String
name
)
{
this
.
typeCode
=
typeCode
;
this
.
name
=
name
;
}
public
Integer
getTypeCode
()
{
return
typeCode
;
}
public
void
setTypeCode
(
Integer
typeCode
)
{
this
.
typeCode
=
typeCode
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
}
kt-base/src/main/java/org/matrix/actuators/httpclient/HttpClientActuator.java
浏览文件 @
65d8366c
...
@@ -2,6 +2,7 @@ package org.matrix.actuators.httpclient;
...
@@ -2,6 +2,7 @@ package org.matrix.actuators.httpclient;
import
io.netty.handler.codec.http.HttpHeaderValues
;
import
io.netty.handler.codec.http.HttpHeaderValues
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.http.conn.HttpHostConnectException
;
import
org.matrix.actuators.Actuator
;
import
org.matrix.actuators.Actuator
;
import
org.matrix.actuators.util.CompleteExpressionUtil
;
import
org.matrix.actuators.util.CompleteExpressionUtil
;
import
org.matrix.config.HttpRequestConfig
;
import
org.matrix.config.HttpRequestConfig
;
...
@@ -147,8 +148,15 @@ public class HttpClientActuator implements Actuator {
...
@@ -147,8 +148,15 @@ public class HttpClientActuator implements Actuator {
HttpStatus
.
valueOf
(
response
.
getStatusLine
().
getStatusCode
()),
HttpStatus
.
valueOf
(
response
.
getStatusLine
().
getStatusCode
()),
endTime
.
getTime
()
-
startTime
.
getTime
()
endTime
.
getTime
()
-
startTime
.
getTime
()
);
);
}
catch
(
HttpHostConnectException
e
){
Date
endTime
=
new
Date
();
return
new
HttpResponseDetail
(
response
,
String
.
format
(
"目标主机拒绝连接,本次请求URL: %s "
,
httpRequestDetail
.
getUrl
()),
null
,
endTime
.
getTime
()
-
startTime
.
getTime
()
);
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
throw
new
HttpRequestException
(
String
.
format
(
"解析返回值失败,本次请求详细参数如下: %s "
,
httpRequestDetail
));
throw
new
HttpRequestException
(
String
.
format
(
"解析返回值失败,本次请求详细参数如下: %s "
,
httpRequestDetail
));
}
finally
{
}
finally
{
//关闭请求request
//关闭请求request
...
...
kt-base/src/main/java/org/matrix/actuators/httpclient/HttpResponseDetail.java
浏览文件 @
65d8366c
...
@@ -26,7 +26,7 @@ public class HttpResponseDetail extends BaseTestCaseResponseDetail {
...
@@ -26,7 +26,7 @@ public class HttpResponseDetail extends BaseTestCaseResponseDetail {
private
HttpStatus
statusCode
=
HttpStatus
.
INTERNAL_SERVER_ERROR
;
private
HttpStatus
statusCode
=
HttpStatus
.
INTERNAL_SERVER_ERROR
;
@ApiModelProperty
(
"响应时间,单位为 ms "
)
@ApiModelProperty
(
"响应时间,单位为 ms "
)
private
Long
responseTime
=
0
l
;
private
Long
responseTime
=
0
L
;
}
}
kt-base/src/test/java/org/matrix/actuators/sql/CaseActuatorTest.java
浏览文件 @
65d8366c
...
@@ -2,14 +2,10 @@ package org.matrix.actuators.sql;
...
@@ -2,14 +2,10 @@ package org.matrix.actuators.sql;
import
org.junit.jupiter.api.Test
;
import
org.junit.jupiter.api.Test
;
import
org.junit.runner.RunWith
;
import
org.junit.runner.RunWith
;
import
org.matrix.actuators.httpclient.HttpClientActuator
;
import
org.matrix.actuators.httpclient.HttpRequestDetail
;
import
org.matrix.actuators.httpclient.HttpResponseDetail
;
import
org.matrix.actuators.usecase.CaseActuator
;
import
org.matrix.actuators.usecase.CaseActuator
;
import
org.matrix.actuators.usecase.TestCaseExecuteResult
;
import
org.matrix.actuators.usecase.TestCaseExecuteResult
;
import
org.matrix.config.HttpRequestConfig
;
import
org.matrix.database.entity.TestCase
;
import
org.matrix.database.entity.TestCase
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
org.springframework.test.context.junit4.SpringRunner
;
...
@@ -36,6 +32,7 @@ class CaseActuatorTest {
...
@@ -36,6 +32,7 @@ class CaseActuatorTest {
" }\n"
+
" }\n"
+
" ]\n"
+
" ]\n"
+
"}"
;
"}"
;
System
.
out
.
println
(
json
);
TestCase
testCase
=
new
TestCase
();
TestCase
testCase
=
new
TestCase
();
testCase
.
setName
(
"name"
);
testCase
.
setName
(
"name"
);
testCase
.
setType
(
1
);
testCase
.
setType
(
1
);
...
@@ -43,7 +40,7 @@ class CaseActuatorTest {
...
@@ -43,7 +40,7 @@ class CaseActuatorTest {
testCase
.
setAbnormalCheckpoint
(
1
);
testCase
.
setAbnormalCheckpoint
(
1
);
testCase
.
setContainCheckpoint
(
"张三,李四"
);
testCase
.
setContainCheckpoint
(
"张三,李四"
);
testCase
.
setNoContainCheckpoint
(
"张三,李四"
);
testCase
.
setNoContainCheckpoint
(
"张三,李四"
);
testCase
.
setJsonpathCheckpoint
(
"contains({$..category},
${componentName}[0]
)"
);
testCase
.
setJsonpathCheckpoint
(
"contains({$..category},
'${componentName}[0]'
)"
);
TestCaseExecuteResult
testCaseExecuteResult
=
httpClientActuator
.
executeTestCase
(
testCase
);
TestCaseExecuteResult
testCaseExecuteResult
=
httpClientActuator
.
executeTestCase
(
testCase
);
System
.
out
.
println
(
testCaseExecuteResult
);
System
.
out
.
println
(
testCaseExecuteResult
);
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论