Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
A
auto-test
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
黄承天
auto-test
Commits
27b2f03b
提交
27b2f03b
authored
3月 24, 2020
作者:
孙洁清
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
输入输出查询接口
测评报告分页条件接口 删除报告接口 新增接口todo...
上级
da9becd6
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
218 行增加
和
43 行删除
+218
-43
ProjectInitRun.java
src/main/java/com/zjty/autotest/config/ProjectInitRun.java
+8
-2
TestReportController.java
...va/com/zjty/autotest/controller/TestReportController.java
+11
-2
AutoResultSetDao.java
src/main/java/com/zjty/autotest/dao/AutoResultSetDao.java
+1
-1
PushBlockQueue.java
src/main/java/com/zjty/autotest/mq/PushBlockQueue.java
+48
-34
PushBlockThread.java
src/main/java/com/zjty/autotest/mq/PushBlockThread.java
+117
-0
QueueManager.java
src/main/java/com/zjty/autotest/mq/QueueManager.java
+25
-0
TestReport.java
src/main/java/com/zjty/autotest/pojo/sjq/TestReport.java
+2
-0
AsyncServiceImpl.java
...java/com/zjty/autotest/service/impl/AsyncServiceImpl.java
+0
-0
AutoResultSetServiceImpl.java
.../zjty/autotest/service/impl/AutoResultSetServiceImpl.java
+6
-4
没有找到文件。
src/main/java/com/zjty/autotest/config/ProjectInitRun.java
浏览文件 @
27b2f03b
package
com
.
zjty
.
autotest
.
config
;
package
com
.
zjty
.
autotest
.
config
;
import
com.zjty.autotest.dao.AutoResultSetDao
;
import
com.zjty.autotest.mq.PushBlockQueue
;
import
com.zjty.autotest.mq.PushBlockQueue
;
import
com.zjty.autotest.service.TestReportService
;
import
org.checkerframework.checker.units.qual.A
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.CommandLineRunner
;
import
org.springframework.boot.CommandLineRunner
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
...
@@ -8,9 +11,12 @@ import org.springframework.stereotype.Component;
...
@@ -8,9 +11,12 @@ import org.springframework.stereotype.Component;
@Component
@Component
public
class
ProjectInitRun
implements
CommandLineRunner
{
public
class
ProjectInitRun
implements
CommandLineRunner
{
@Autowired
@Autowired
private
PushBlockQueue
pushBlockQueue
;
private
AutoResultSetDao
autoResultSetDao
;
@Autowired
private
TestReportService
testReportService
;
@Override
@Override
public
void
run
(
String
...
args
)
throws
Exception
{
public
void
run
(
String
...
args
)
throws
Exception
{
pushBlockQueue
.
start
();
PushBlockQueue
queue
=
new
PushBlockQueue
(
autoResultSetDao
,
testReportService
);
queue
.
start
();
}
}
}
}
src/main/java/com/zjty/autotest/controller/TestReportController.java
浏览文件 @
27b2f03b
package
com
.
zjty
.
autotest
.
controller
;
package
com
.
zjty
.
autotest
.
controller
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.TypeReference
;
import
com.zjty.autotest.pojo.sjq.EvaReport
;
import
com.zjty.autotest.pojo.sjq.TestChannel
;
import
com.zjty.autotest.pojo.sjq.TestReport
;
import
com.zjty.autotest.pojo.sjq.TestReport
;
import
com.zjty.autotest.pojo.sjq.common.AppHttpCodeEnum
;
import
com.zjty.autotest.pojo.sjq.common.AppHttpCodeEnum
;
import
com.zjty.autotest.pojo.sjq.common.ResponseResult
;
import
com.zjty.autotest.pojo.sjq.common.ResponseResult
;
...
@@ -33,7 +38,9 @@ public class TestReportController {
...
@@ -33,7 +38,9 @@ public class TestReportController {
public
ResponseResult
findByIdInData
(
@PathVariable
String
id
){
public
ResponseResult
findByIdInData
(
@PathVariable
String
id
){
TestReport
testReport
=
testReportService
.
findByResultId
(
id
);
TestReport
testReport
=
testReportService
.
findByResultId
(
id
);
if
(
testReport
!=
null
)
{
if
(
testReport
!=
null
)
{
return
ResponseResult
.
okResult
(
testReport
.
getInputReport
());
String
inputReport
=
testReport
.
getInputReport
();
TestChannel
t
=
JSON
.
parseObject
(
inputReport
,
TestChannel
.
class
);
return
ResponseResult
.
okResult
(
t
);
}
}
return
ResponseResult
.
errorResult
(
AppHttpCodeEnum
.
ERROR
);
return
ResponseResult
.
errorResult
(
AppHttpCodeEnum
.
ERROR
);
}
}
...
@@ -47,7 +54,9 @@ public class TestReportController {
...
@@ -47,7 +54,9 @@ public class TestReportController {
public
ResponseResult
findByIdOutData
(
@PathVariable
String
id
){
public
ResponseResult
findByIdOutData
(
@PathVariable
String
id
){
TestReport
testReport
=
testReportService
.
findByResultId
(
id
);
TestReport
testReport
=
testReportService
.
findByResultId
(
id
);
if
(
testReport
!=
null
)
{
if
(
testReport
!=
null
)
{
return
ResponseResult
.
okResult
(
testReport
.
getOutReport
());
String
outReport
=
testReport
.
getOutReport
();
EvaReport
evaReport
=
JSON
.
parseObject
(
outReport
,
EvaReport
.
class
);
return
ResponseResult
.
okResult
(
evaReport
);
}
}
return
ResponseResult
.
errorResult
(
AppHttpCodeEnum
.
ERROR
);
return
ResponseResult
.
errorResult
(
AppHttpCodeEnum
.
ERROR
);
}
}
...
...
src/main/java/com/zjty/autotest/dao/AutoResultSetDao.java
浏览文件 @
27b2f03b
...
@@ -8,6 +8,6 @@ import org.springframework.data.jpa.repository.Query;
...
@@ -8,6 +8,6 @@ import org.springframework.data.jpa.repository.Query;
public
interface
AutoResultSetDao
extends
JpaRepository
<
AutoResultSet
,
String
>,
JpaSpecificationExecutor
<
AutoResultSet
>
{
public
interface
AutoResultSetDao
extends
JpaRepository
<
AutoResultSet
,
String
>,
JpaSpecificationExecutor
<
AutoResultSet
>
{
@Modifying
@Modifying
@Query
(
"update AutoResultSet set status=1 where id=:id"
)
@Query
(
value
=
"update auto_result_set set status=1 where id=:id"
,
nativeQuery
=
true
)
int
updateStatus
(
String
id
);
int
updateStatus
(
String
id
);
}
}
src/main/java/com/zjty/autotest/mq/PushBlockQueue.java
浏览文件 @
27b2f03b
package
com
.
zjty
.
autotest
.
mq
;
package
com
.
zjty
.
autotest
.
mq
;
import
com.zjty.autotest.dao.AutoResultSetDao
;
import
com.zjty.autotest.service.AsyncService
;
import
com.zjty.autotest.service.AsyncService
;
import
com.zjty.autotest.service.TestReportService
;
import
org.springframework.beans.factory.InitializingBean
;
import
org.springframework.beans.factory.InitializingBean
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.StringUtils
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.LinkedBlockingQueue
;
import
java.util.concurrent.LinkedBlockingQueue
;
@Component
public
class
PushBlockQueue
extends
LinkedBlockingQueue
<
Object
>
{
public
class
PushBlockQueue
extends
LinkedBlockingQueue
<
Object
>
{
@Autowired
private
AutoResultSetDao
autoResultSetDao
;
private
AsyncService
asyncService
;
private
TestReportService
testReportService
;
//多线程执行,采用线程池
private
static
ExecutorService
es
=
Executors
.
newFixedThreadPool
(
10
);
//状态标识位
private
boolean
flag
=
false
;
//状态标识位
public
PushBlockQueue
(
AutoResultSetDao
autoResultSetDao
,
TestReportService
testReportService
)
{
private
boolean
flag
=
false
;
this
.
autoResultSetDao
=
autoResultSetDao
;
@Async
(
"asyncServiceExecutor"
)
this
.
testReportService
=
testReportService
;
public
void
zx
(){
try
{
while
(
flag
)
{
//从队列中取消息
Object
obj
=
take
();
//线程池派出线程来消费取出的消息
asyncService
.
executeAsync
((
String
)
obj
);
// es.execute(new PushBlockQueueHandler(obj));
}
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
}
}
/**
/**
* 队列监听启动
* 队列监听启动
*/
*/
public
void
start
()
{
public
void
start
()
{
if
(!
this
.
flag
)
{
if
(!
this
.
flag
)
{
flag
=
true
;
flag
=
true
;
}
else
{
}
else
{
throw
new
IllegalArgumentException
(
"队列已启动,不可重复启动!"
);
throw
new
IllegalArgumentException
(
"队列已启动,不可重复启动!"
);
}
new
Thread
(
new
Runnable
()
{
@Override
public
void
run
()
{
try
{
while
(
flag
)
{
//从队列中取消息
// Object obj = take();
String
take
=
QueueManager
.
take
();
//线程池派出线程来消费取出的消息
System
.
out
.
println
(
"取出消息:"
+
take
);
if
(!
StringUtils
.
isEmpty
(
take
))
{
es
.
execute
(
new
PushBlockThread
(
autoResultSetDao
,
testReportService
,
take
));
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}).
start
();
}
}
zx
();
}
/**
/**
* 停止队列监听
* 停止队列监听
*/
*/
public
void
stop
(){
public
void
stop
(){
this
.
flag
=
false
;
this
.
flag
=
false
;
}
}
}
}
src/main/java/com/zjty/autotest/mq/PushBlockThread.java
0 → 100644
浏览文件 @
27b2f03b
package
com
.
zjty
.
autotest
.
mq
;
import
com.alibaba.fastjson.JSON
;
import
com.zjty.autotest.dao.AutoResultSetDao
;
import
com.zjty.autotest.pojo.sjq.*
;
import
com.zjty.autotest.service.AutoResultSetService
;
import
com.zjty.autotest.service.TestReportService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
public
class
PushBlockThread
implements
Runnable
{
private
TestReportService
testReportService
;
private
AutoResultSetDao
autoResultSetDao
;
private
Object
obj
;
public
PushBlockThread
(
AutoResultSetDao
autoResultSetDao
,
TestReportService
testReportService
,
Object
obj
){
this
.
testReportService
=
testReportService
;
this
.
autoResultSetDao
=
autoResultSetDao
;
this
.
obj
=
obj
;
}
@Override
public
void
run
()
{
doBusiness
();
}
private
void
doBusiness
()
{
String
id
=
(
String
)
obj
;
System
.
out
.
println
(
"doBusiness id:"
+
id
);
TestChannel
testChannel
=
(
TestChannel
)
CacheManager
.
getCache
(
id
);
if
(
testChannel
!=
null
)
{
try
{
EvaReport
evaReport
=
new
EvaReport
();
evaReport
.
setBrowser
(
testChannel
.
getBrowser
());
evaReport
.
setFailCount
(
testChannel
.
getName
()
+
"系统未通过测试,"
+
"未通过测试点共"
+
"10"
+
"个"
);
evaReport
.
setProjectName
(
testChannel
.
getName
());
evaReport
.
setCreateTime
(
new
Date
());
evaReport
.
setSystem
(
"中标麒麟v7龙芯版"
);
evaReport
.
setUrl
(
testChannel
.
getUrl
());
List
<
FailMessage
>
failMessages
=
new
ArrayList
<>();
FailMessage
failMessage
=
new
FailMessage
();
failMessage
.
setUrl
(
"https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_pc_1"
);
failMessage
.
setMessage
(
"抗击疫情打不开响应超时"
);
failMessage
.
setPicture
(
"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1584955247760&di=f073d6fd65cf71798843c6e4634358dd&imgtype=0&src=http%3A%2F%2Fa0.att.hudong.com%2F78%2F52%2F01200000123847134434529793168.jpg"
);
failMessages
.
add
(
failMessage
);
evaReport
.
setFailMessages
(
failMessages
);
List
<
PageRoute
>
pageRoutes
=
new
ArrayList
<>();
PageRoute
pageRoute
=
new
PageRoute
();
pageRoute
.
setPageName
(
"https://www.baidu.com/"
);
pageRoute
.
setAddress
(
"/baidu"
);
pageRoute
.
setMessage
(
""
);
pageRoute
.
setResponseTime
(
300
);
pageRoute
.
setSuccess
(
0
);
pageRoute
.
setPicture
(
"https://pics4.baidu.com/feed/500fd9f9d72a6059aecf87d92406529d013bbaca.jpeg?token=53433060d4d120e00d8ac6612d2303fd"
);
PageRoute
pageRoute1
=
new
PageRoute
();
pageRoute1
.
setPageName
(
"https://www.baidu.com/"
);
pageRoute1
.
setAddress
(
"/baidu"
);
pageRoute1
.
setMessage
(
"不能访问"
);
pageRoute1
.
setResponseTime
(
300
);
pageRoute1
.
setSuccess
(
1
);
pageRoute1
.
setPicture
(
"https://pics4.baidu.com/feed/500fd9f9d72a6059aecf87d92406529d013bbaca.jpeg?token=53433060d4d120e00d8ac6612d2303fd"
);
pageRoutes
.
add
(
pageRoute
);
pageRoutes
.
add
(
pageRoute1
);
evaReport
.
setPageRoutes
(
pageRoutes
);
List
<
PageContentTest
>
pageContents
=
new
ArrayList
<>();
PageContentTest
pageContentTest
=
new
PageContentTest
();
pageContentTest
.
setUrl
(
"http://news.baidu.com/"
);
List
<
PageContent
>
contents
=
new
ArrayList
<>();
PageContent
pageContent
=
new
PageContent
();
pageContent
.
setParms
(
"国内"
);
pageContent
.
setMessage
(
""
);
pageContent
.
setResponseTime
(
300
);
pageContent
.
setSuccess
(
0
);
PageContent
pageContent1
=
new
PageContent
();
pageContent1
.
setParms
(
"国外"
);
pageContent1
.
setMessage
(
"响应时间过长"
);
pageContent1
.
setResponseTime
(
30000
);
pageContent1
.
setSuccess
(
1
);
contents
.
add
(
pageContent
);
contents
.
add
(
pageContent1
);
pageContentTest
.
setContents
(
contents
);
pageContents
.
add
(
pageContentTest
);
evaReport
.
setPageContents
(
pageContents
);
//调用黄承天代码
Thread
.
sleep
(
6000
);
if
(
testChannel
.
getCodeUrl
()
!=
null
)
{
//解压上传得代码
//获取前端代码中得网页路由地址
//比对黄承天代码中访问得地址和路由地址,黄承天是否访问全了。
}
System
.
out
.
println
(
"修改状态"
);
//改变报告状态
String
out
=
JSON
.
toJSONString
(
evaReport
);
String
in
=
JSON
.
toJSONString
(
testChannel
);
System
.
out
.
println
(
id
);
TestReport
testReport
=
new
TestReport
();
testReport
.
setResultId
(
id
);
testReport
.
setOutReport
(
out
);
testReport
.
setInputReport
(
in
);
testReport
.
setStatus
(
1
);
testReportService
.
save
(
testReport
);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
}
System
.
out
.
println
(
Thread
.
currentThread
().
getName
()
+
"-收到消息:"
+
obj
);
}
}
src/main/java/com/zjty/autotest/mq/QueueManager.java
0 → 100644
浏览文件 @
27b2f03b
package
com
.
zjty
.
autotest
.
mq
;
import
java.util.concurrent.ArrayBlockingQueue
;
public
class
QueueManager
{
private
static
ArrayBlockingQueue
queue
=
new
ArrayBlockingQueue
(
10
);
public
static
void
put
(
String
msg
){
try
{
queue
.
put
(
msg
);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
}
public
static
String
take
(){
try
{
String
take
=
(
String
)
queue
.
take
();
return
take
;
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
}
src/main/java/com/zjty/autotest/pojo/sjq/TestReport.java
浏览文件 @
27b2f03b
...
@@ -18,6 +18,8 @@ import javax.persistence.Id;
...
@@ -18,6 +18,8 @@ import javax.persistence.Id;
public
class
TestReport
{
public
class
TestReport
{
@Id
@Id
private
String
id
;
private
String
id
;
@ApiModelProperty
(
value
=
"状态 0正在生成 1上传成功"
)
private
Integer
status
;
@ApiModelProperty
(
value
=
"AutoResultSetId"
)
@ApiModelProperty
(
value
=
"AutoResultSetId"
)
private
String
resultId
;
private
String
resultId
;
@ApiModelProperty
(
value
=
"输入内容"
)
@ApiModelProperty
(
value
=
"输入内容"
)
...
...
src/main/java/com/zjty/autotest/service/impl/AsyncServiceImpl.java
浏览文件 @
27b2f03b
差异被折叠。
点击展开。
src/main/java/com/zjty/autotest/service/impl/AutoResultSetServiceImpl.java
浏览文件 @
27b2f03b
...
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
...
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import
com.zjty.autotest.dao.AutoResultSetDao
;
import
com.zjty.autotest.dao.AutoResultSetDao
;
import
com.zjty.autotest.mq.CacheManager
;
import
com.zjty.autotest.mq.CacheManager
;
import
com.zjty.autotest.mq.PushBlockQueue
;
import
com.zjty.autotest.mq.PushBlockQueue
;
import
com.zjty.autotest.mq.QueueManager
;
import
com.zjty.autotest.pojo.sjq.AutoResultSet
;
import
com.zjty.autotest.pojo.sjq.AutoResultSet
;
import
com.zjty.autotest.pojo.sjq.TestChannel
;
import
com.zjty.autotest.pojo.sjq.TestChannel
;
import
com.zjty.autotest.pojo.sjq.TestReport
;
import
com.zjty.autotest.pojo.sjq.TestReport
;
...
@@ -36,11 +37,11 @@ public class AutoResultSetServiceImpl implements AutoResultSetService {
...
@@ -36,11 +37,11 @@ public class AutoResultSetServiceImpl implements AutoResultSetService {
@Autowired
@Autowired
private
AutoResultSetDao
autoResultSetDao
;
private
AutoResultSetDao
autoResultSetDao
;
@Autowired
@Autowired
private
PushBlockQueue
pushBlockQueue
;
@Autowired
private
TestReportService
testReportService
;
private
TestReportService
testReportService
;
@Autowired
@Autowired
private
IdWorker
idWorker
;
private
IdWorker
idWorker
;
@Autowired
private
AsyncService
asyncService
;
@Override
@Override
public
Page
<
AutoResultSet
>
findSearch
(
Map
whereMap
,
int
page
,
int
size
)
{
public
Page
<
AutoResultSet
>
findSearch
(
Map
whereMap
,
int
page
,
int
size
)
{
Specification
<
AutoResultSet
>
specification
=
createSpecification
(
whereMap
);
Specification
<
AutoResultSet
>
specification
=
createSpecification
(
whereMap
);
...
@@ -106,8 +107,9 @@ public class AutoResultSetServiceImpl implements AutoResultSetService {
...
@@ -106,8 +107,9 @@ public class AutoResultSetServiceImpl implements AutoResultSetService {
CacheManager
.
putCache
(
tid
,
testChannel
);
CacheManager
.
putCache
(
tid
,
testChannel
);
//将数据保存到队列
//将数据保存到队列
try
{
try
{
pushBlockQueue
.
put
(
tid
);
asyncService
.
executeAsync
(
tid
);
// PushBlockQueue.getInstance().put(tid);
// PushBlockQueue pushBlockQueue=new PushBlockQueue(autoResultSetDao,testReportService);
// QueueManager.put(tid);
return
ResponseResult
.
okResult
(
save
);
return
ResponseResult
.
okResult
(
save
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论