Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
kt-keystone
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Matrix
kt-keystone
Commits
ed8ae56e
提交
ed8ae56e
authored
3月 22, 2022
作者:
黄夏豪
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(base): 修复了jsonPath无法正确替换的问题
fix(base): 修改了HttpClient执行器的作用域
上级
45ab62d4
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
64 行增加
和
30 行删除
+64
-30
HttpClientActuator.java
...a/org/matrix/actuators/httpclient/HttpClientActuator.java
+25
-4
CaseActuator.java
.../main/java/org/matrix/actuators/usecase/CaseActuator.java
+12
-12
CompleteExpressionUtil.java
...ava/org/matrix/actuators/util/CompleteExpressionUtil.java
+4
-2
HttpRequestConfig.java
...se/src/main/java/org/matrix/config/HttpRequestConfig.java
+18
-11
TestController.java
...n/java/org/matrix/database/controller/TestController.java
+1
-1
FileSysController.java
...main/java/org/matrix/fs/controller/FileSysController.java
+4
-0
没有找到文件。
kt-base/src/main/java/org/matrix/actuators/httpclient/HttpClientActuator.java
浏览文件 @
ed8ae56e
...
...
@@ -3,7 +3,22 @@ package org.matrix.actuators.httpclient;
import
com.alibaba.fastjson.JSONObject
;
import
io.netty.handler.codec.http.HttpHeaderValues
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.http.client.CookieStore
;
import
org.apache.http.client.config.RequestConfig
;
import
org.apache.http.config.Registry
;
import
org.apache.http.config.RegistryBuilder
;
import
org.apache.http.config.SocketConfig
;
import
org.apache.http.conn.HttpHostConnectException
;
import
org.apache.http.conn.socket.ConnectionSocketFactory
;
import
org.apache.http.conn.socket.PlainConnectionSocketFactory
;
import
org.apache.http.conn.ssl.NoopHostnameVerifier
;
import
org.apache.http.conn.ssl.SSLConnectionSocketFactory
;
import
org.apache.http.conn.ssl.TrustStrategy
;
import
org.apache.http.impl.NoConnectionReuseStrategy
;
import
org.apache.http.impl.client.BasicCookieStore
;
import
org.apache.http.impl.client.DefaultHttpRequestRetryHandler
;
import
org.apache.http.impl.client.HttpClients
;
import
org.apache.http.impl.conn.PoolingHttpClientConnectionManager
;
import
org.matrix.actuators.Actuator
;
import
org.matrix.actuators.util.CompleteExpressionUtil
;
import
org.apache.http.Consts
;
...
...
@@ -20,6 +35,7 @@ import org.apache.http.entity.mime.MultipartEntityBuilder;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.message.BasicNameValuePair
;
import
org.apache.http.util.EntityUtils
;
import
org.matrix.config.HttpRequestConfig
;
import
org.matrix.database.entity.Environment
;
import
org.matrix.database.service.IEnvironmentService
;
import
org.matrix.exception.GlobalException
;
...
...
@@ -29,16 +45,19 @@ import org.springframework.http.HttpMethod;
import
org.springframework.http.HttpStatus
;
import
org.springframework.stereotype.Component
;
import
javax.net.ssl.SSLContext
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.IOException
;
import
java.net.URISyntaxException
;
import
java.nio.charset.StandardCharsets
;
import
java.security.cert.X509Certificate
;
import
java.time.LocalDateTime
;
import
java.time.ZoneOffset
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.TimeUnit
;
import
java.util.regex.Pattern
;
import
java.util.stream.Collectors
;
...
...
@@ -55,7 +74,7 @@ public class HttpClientActuator implements Actuator {
private
static
final
String
PATTERN_URL
=
"(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]"
;
final
CloseableHttpClient
client
;
HttpRequestConfig
httpRequestConfig
;
final
CompleteExpressionUtil
completeExpressionUtil
;
...
...
@@ -63,10 +82,10 @@ public class HttpClientActuator implements Actuator {
final
IEnvironmentService
environmentService
;
public
HttpClientActuator
(
CloseableHttpClient
client
,
CompleteExpressionUtil
completeExpressionUtil
,
IEnvironmentService
environmentService
)
{
this
.
client
=
client
;
public
HttpClientActuator
(
CompleteExpressionUtil
completeExpressionUtil
,
IEnvironmentService
environmentService
,
HttpRequestConfig
httpRequestConfig
)
{
this
.
completeExpressionUtil
=
completeExpressionUtil
;
this
.
environmentService
=
environmentService
;
this
.
httpRequestConfig
=
httpRequestConfig
;
}
/**
...
...
@@ -144,7 +163,7 @@ public class HttpClientActuator implements Actuator {
}
requestBase
.
setHeaders
(
httpRequestDetail
.
getHeadersArray
());
try
{
response
=
client
.
execute
(
requestBase
);
response
=
httpRequestConfig
.
getClient
()
.
execute
(
requestBase
);
Long
endTime
=
LocalDateTime
.
now
().
toInstant
(
ZoneOffset
.
of
(
"+8"
)).
toEpochMilli
();
return
new
HttpResponseDetail
(
url
,
...
...
@@ -348,4 +367,6 @@ public class HttpClientActuator implements Actuator {
}
}
kt-base/src/main/java/org/matrix/actuators/usecase/CaseActuator.java
浏览文件 @
ed8ae56e
...
...
@@ -14,6 +14,7 @@ import org.matrix.actuators.httpclient.HttpClientActuator;
import
org.matrix.actuators.move.MoveActuator
;
import
org.matrix.actuators.move.MoveStrategy
;
import
org.matrix.actuators.util.ThreadUtil
;
import
org.matrix.config.HttpRequestConfig
;
import
org.matrix.database.entity.*
;
import
org.matrix.actuators.checkpoint.CheckPoint
;
import
org.matrix.actuators.checkpoint.CheckPointResult
;
...
...
@@ -48,6 +49,9 @@ import static org.matrix.enums.ModuleType.CASE_ACTUATOR;
@Component
public
class
CaseActuator
implements
Actuator
{
@Autowired
HttpRequestConfig
httpRequestConfig
;
final
IDataSourceService
dataSourceService
;
...
...
@@ -76,7 +80,6 @@ public class CaseActuator implements Actuator {
* 执行测试用例,这个方法对内使用,由其他执行器调用
*/
public
TestDataExecuteResult
executeTestCase
(
TestCaseBTO
testCaseBto
,
Long
envId
,
Long
projectId
)
{
try
{
LogQueueRuntime
.
addNewLog
(
this
.
getClass
(),
CASE_ACTUATOR
,
"开始执行用例!!"
);
LogQueueRuntime
.
addNewLog
(
this
.
getClass
(),
CASE_ACTUATOR
,
String
.
format
(
"当前正在执行用例ID: %s 用例名: %s"
,
testCaseBto
.
getTestCase
().
getId
(),
testCaseBto
.
getTestCase
().
getName
()));
//执行前置动作
...
...
@@ -116,9 +119,6 @@ public class CaseActuator implements Actuator {
//将线程中正在执行的DataId清除
LogQueueRuntime
.
clearTestData
();
return
testDataExecuteResult
;
}
finally
{
LogQueueRuntime
.
remove
(
ThreadUtil
.
currentThreadId
());
}
}
...
...
@@ -128,7 +128,6 @@ public class CaseActuator implements Actuator {
public
List
<
TestDataExecuteResult
>
executeTestCases
(
TestCaseListDataBto
testCaseBto
,
Long
envId
,
Long
projectId
)
{
LogQueueRuntime
.
addNewLog
(
this
.
getClass
(),
CASE_ACTUATOR
,
"[用例执行器] 开始执行用例!!"
);
List
<
TestDataExecuteResult
>
resultList
=
new
ArrayList
<>();
try
{
LogQueueRuntime
.
addNewLog
(
this
.
getClass
(),
CASE_ACTUATOR
,
String
.
format
(
"[用例执行器] 当前正在执行用例ID: %s 用例名: %s"
,
testCaseBto
.
getTestCase
().
getId
(),
testCaseBto
.
getTestCase
().
getName
()));
//执行前置动作
LogQueueRuntime
.
addNewLog
(
this
.
getClass
(),
CASE_ACTUATOR
,
"[用例执行器] 开始执行前置动作!!"
);
...
...
@@ -160,7 +159,7 @@ public class CaseActuator implements Actuator {
TestDataExecuteResult
testDataExecuteResult
=
new
TestDataExecuteResult
(
dataStartTime
,
LocalDateTime
.
now
(),
checkPointResult
.
getFailNum
()
>
0
?
false
:
true
,
checkPointResult
.
getFailNum
()
==
null
||
checkPointResult
.
getFailNum
()
<=
0
,
testCaseBto
.
getTestCase
().
getId
(),
testData
.
getId
(),
baseTestCaseResponseDetail
,
...
...
@@ -187,13 +186,14 @@ public class CaseActuator implements Actuator {
resultList
.
add
(
testDataExecuteResult
);
changeExecutionHistoryStatus
(
ExecutionHistoryStatus
.
ERROR
);
LogQueueRuntime
.
addNewLog
(
this
.
getClass
(),
CASE_ACTUATOR
,
String
.
format
(
"[用例执行器] 执行数据组ID:%s 数据组名称:%s 产生错误:%s"
,
testData
.
getId
(),
testData
.
getName
(),
e
.
getMessage
()));
}
finally
{
clearMoveData
();
//将线程中正在执行的DataId清除
LogQueueRuntime
.
clearTestData
();
//将线程中的浏览器清除掉
httpRequestConfig
.
clear
();
}
}
}
finally
{
clearMoveData
();
//将线程中正在执行的DataId清除
LogQueueRuntime
.
clearTestData
();
}
return
resultList
;
}
...
...
@@ -243,7 +243,7 @@ public class CaseActuator implements Actuator {
projectId
);
}
return
n
ull
;
return
n
ew
CheckPointResult
()
;
}
private
HttpResponseDetail
getHttpResponseDetail
(
...
...
kt-base/src/main/java/org/matrix/actuators/util/CompleteExpressionUtil.java
浏览文件 @
ed8ae56e
...
...
@@ -76,12 +76,14 @@ public class CompleteExpressionUtil {
String
result
=
expression
;
Pattern
pattern
=
Pattern
.
compile
(
regex
);
Matcher
mat
=
pattern
.
matcher
(
result
);
StringBuffer
sBuffer
=
new
StringBuffer
();
while
(
mat
.
find
())
{
String
group
=
mat
.
group
();
String
read
=
biFunction
.
apply
(
sourceContent
,
group
);
result
=
mat
.
replaceAll
(
read
);
mat
.
appendReplacement
(
sBuffer
,
read
);
}
return
result
;
mat
.
appendTail
(
sBuffer
);
return
sBuffer
.
toString
();
}
private
static
SqlExpActuator
getSqlExpActuator
(){
...
...
kt-base/src/main/java/org/matrix/config/HttpRequestConfig.java
浏览文件 @
ed8ae56e
...
...
@@ -35,12 +35,18 @@ import java.util.concurrent.TimeUnit;
@Component
public
class
HttpRequestConfig
{
/**
* HttpClient的Cookie管理器,可在其他类中调用该Bean清空Cookie缓存。
* 主要针对某些网站Cookie多次使用会造成Cookie失效的问题
*/
public
CookieStore
cookieStore
(){
return
new
BasicCookieStore
();
ThreadLocal
<
CloseableHttpClient
>
threadLocal
=
new
ThreadLocal
<>();
public
CloseableHttpClient
getClient
(){
CloseableHttpClient
closeableHttpClient
=
threadLocal
.
get
();
if
(
closeableHttpClient
==
null
){
threadLocal
.
set
(
client
());
}
return
threadLocal
.
get
();
}
public
void
clear
(){
threadLocal
.
remove
();
}
/**
...
...
@@ -89,10 +95,11 @@ public class HttpRequestConfig {
}
}
@Bean
CloseableHttpClient
getHttpClient
()
{
return
client
();
/**
* HttpClient的Cookie管理器,可在其他类中调用该Bean清空Cookie缓存。
* 主要针对某些网站Cookie多次使用会造成Cookie失效的问题
*/
public
CookieStore
cookieStore
(){
return
new
BasicCookieStore
();
}
}
kt-base/src/main/java/org/matrix/database/controller/TestController.java
浏览文件 @
ed8ae56e
...
...
@@ -93,7 +93,7 @@ public class TestController {
"}"
,
hello
.
getName
());
}
@
Ge
tMapping
(
"/sendMessage"
)
@
Pos
tMapping
(
"/sendMessage"
)
public
ResponseEntity
sendMessage
(
String
tableName
)
{
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"message"
,
String
.
format
(
"你好: %s"
,
tableName
));
...
...
kt-web/src/main/java/org/matrix/fs/controller/FileSysController.java
浏览文件 @
ed8ae56e
package
org
.
matrix
.
fs
.
controller
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.core.io.InputStreamResource
;
import
org.springframework.core.io.UrlResource
;
...
...
@@ -21,8 +23,10 @@ import java.io.IOException;
@Slf4j
@RestController
@RequestMapping
@Api
(
tags
=
"文件系统获取测试URL"
)
public
class
FileSysController
{
@ApiOperation
(
value
=
"获取页面"
)
@GetMapping
(
"/report"
)
public
ResponseEntity
downloadAlertWeb
(
HttpServletRequest
request
,
@RequestParam
String
fileName
)
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论