提交 fd900b68 authored 作者: 孙洁清's avatar 孙洁清

路由规则

上级 c6c7234c
......@@ -2,9 +2,15 @@ package com.zjty.autotest.mq;
import com.alibaba.fastjson.JSON;
import com.zjty.autotest.dao.AutoResultSetDao;
import com.zjty.autotest.pojo.report.ElementDetail;
import com.zjty.autotest.pojo.report.Measure;
import com.zjty.autotest.pojo.report.Report;
import com.zjty.autotest.pojo.sjq.*;
import com.zjty.autotest.pojo.test.Input;
import com.zjty.autotest.pojo.test.Project;
import com.zjty.autotest.service.AutoResultSetService;
import com.zjty.autotest.service.TestReportService;
import com.zjty.autotest.service.impl.SeleniumExecutor;
import com.zjty.autotest.util.FileHtmlUtil;
import com.zjty.autotest.util.IdWorker;
import com.zjty.autotest.util.UnZipRarUtil;
......@@ -28,15 +34,18 @@ public class TestTask {
private AutoResultSetService autoResultSetService;
@Autowired
private TestReportService testReportService;
@Scheduled(cron = "0/1 * * * * ?")
@Autowired
private SeleniumExecutor seleniumExecutor;
private static Object o=new Object();
@Scheduled(cron = "0/5 * * * * ?")
@Async("asyncServiceExecutor")
public void getMessage() {
String take = QueueManager.take();
log.info("获取到消息:{}", take);
if (!StringUtils.isEmpty(take)) {
doBusiness(take);
synchronized (o) {
String take = QueueManager.take();
log.info("获取到消息:{}", take);
if (!StringUtils.isEmpty(take)) {
doBusiness(take);
}
}
}
......@@ -47,107 +56,169 @@ public class TestTask {
if (testChannel != null) {
log.info("testChannel不为空:{}", testChannel);
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);
Project project=new Project();
project.setBrowser(testChannel.getBrowser());
project.setName(testChannel.getName());
project.setUrl(testChannel.getUrl());
List<RuleSet> ruleSets = testChannel.getRuleSets();
List<Input> inputs=new ArrayList<>();
project.setInputs(null);
if(ruleSets!=null) {
for (RuleSet ruleSet : ruleSets) {
Input input=new Input();
input.setKey(ruleSet.getDes());
input.setAttrName(ruleSet.getCommand());
input.setAttrValue(ruleSet.getTarget());
input.setValue(ruleSet.getValue());
inputs.add(input);
}
project.setInputs(inputs);
}
//调用黄承天代码
Report report = seleniumExecutor.execute(project);
System.out.println(report);
List<Measure> measures = report.getMeasures();
if(measures!=null) {
long count = measures.stream().filter(m -> !m.getSuccess()).count();
System.out.println(report);
EvaReport evaReport = new EvaReport();
evaReport.setBrowser(report.getBrowser());
if (count > 0) {
evaReport.setFailCount(testChannel.getName() + "系统未通过测试," + "未通过测试点共" + count + "个");
}
evaReport.setFailCount(testChannel.getName() + "系统通过测试," + "未通过测试点共0个");
evaReport.setProjectName(report.getProjectName());
evaReport.setCreateTime(new Date());
evaReport.setSystem("中标麒麟v7龙芯版");
evaReport.setUrl(testChannel.getUrl());
List<FailMessage> failMessages = new ArrayList<>();
List<Measure> measureList = measures.stream().filter(m -> !m.getSuccess()).collect(Collectors.toList());
for (Measure measure : measureList) {
FailMessage failMessage = new FailMessage();
failMessage.setUrl(measure.getUrl());
failMessage.setMessage(measure.getMessage());
failMessage.setPicture(measure.getScreenshot());
failMessages.add(failMessage);
}
evaReport.setFailMessages(failMessages);
evaReport.setPageRoutes(null);
HashMap<String, Measure> map = new HashMap<>();
Thread.sleep(600);
if (testChannel.getCodeUrl() != null) {
//解压上传得代码
FileHtmlUtil.getFiles(testChannel.getCodeUrl(), null);
Map<String, List<FileType>> alls = FileHtmlUtil.getAlls();
//获取项目类型
FileHtmlUtil.getFileRoutes(testChannel.getCodeUrl());
int jspcount=FileHtmlUtil.jspNum;
int jscount=FileHtmlUtil.jsNum;
int vuecount=FileHtmlUtil.vueNum;
int angularcount=FileHtmlUtil.angularNum;
int htmlcount=FileHtmlUtil.count;
String fileRoutes=null;
if(jspcount>0){
fileRoutes="jsp";
}else if(vuecount>0){
fileRoutes="vue";
}else if(jscount>0){
fileRoutes="react";
}else if(angularcount>0){
fileRoutes="angular";
List<PageContentTest> pageContents = new ArrayList<>();
for (Measure measure : measures) {
PageContentTest pageContentTest = new PageContentTest();
pageContentTest.setUrl(measure.getUrl());
pageContentTest.setMessage(measure.getMessage());
pageContentTest.setResponseTime(measure.getResponseTime());
pageContentTest.setScreenshot(measure.getScreenshot());
pageContentTest.setSuccess(0);
if(measure.getSuccess()) {
pageContentTest.setSuccess(1);
}
List<ElementDetail> elementDetails = measure.getElementDetails();
if(elementDetails!=null) {
List<PageContent> contents = new ArrayList<>();
for (ElementDetail elementDetail : elementDetails) {
PageContent pageContent = new PageContent();
pageContent.setParms(elementDetail.getType());
pageContent.setMessage(elementDetail.getMessage());
pageContent.setResponseTime(elementDetail.getResponseTime());
pageContent.setSuccess(0);
if (elementDetail.getSuccess()) {
pageContent.setSuccess(1);
}
contents.add(pageContent);
}
pageContentTest.setContents(contents);
}
pageContents.add(pageContentTest);
}
if (fileRoutes != null) {
List<String> routerList = getRouterList(alls, fileRoutes);
List<String> collect = routerList.stream().map(String::toLowerCase).distinct().collect(Collectors.toList());
System.out.println(collect.toString());
evaReport.setPageContents(pageContents);
if (testChannel.getCodeUrl() != null) {
//解压上传得代码
FileHtmlUtil.getFiles(testChannel.getCodeUrl(), null);
Map<String, List<FileType>> alls = FileHtmlUtil.getAlls();
//获取项目类型
FileHtmlUtil.getFileRoutes(testChannel.getCodeUrl());
int jspcount = FileHtmlUtil.jspNum;
int jscount = FileHtmlUtil.jsNum;
int vuecount = FileHtmlUtil.vueNum;
int angularcount = FileHtmlUtil.angularNum;
int htmlcount = FileHtmlUtil.count;
String fileRoutes = null;
if (jspcount > 0) {
fileRoutes = "jsp";
} else if (vuecount > 0) {
fileRoutes = "vue";
} else if (jscount > 0) {
fileRoutes = "react";
} else if (angularcount > 0) {
fileRoutes = "angular";
}
if (fileRoutes != null) {
Map<String,List<PageRoute>> routemap=new HashMap<>();
List<String> routerList = getRouterList(alls, fileRoutes);
List<String> collect = routerList.stream().map(String::toLowerCase).distinct().collect(Collectors.toList());
System.out.println(collect.toString());
if(collect!=null) {
if(pageContents!=null) {
for (String s : collect) {
if(routemap.get(s)==null) {
routemap.put(s, null);
}
for (PageContentTest pageContent : pageContents) {
if(pageContent.getUrl().contains(s)){
List<PageRoute> pageRoutes=new ArrayList<>();
PageRoute route=new PageRoute();
route.setAddress(s);
route.setPageName(pageContent.getUrl());
route.setSuccess(pageContent.getSuccess());
route.setResponseTime(pageContent.getResponseTime());
route.setPicture(pageContent.getScreenshot());
route.setMessage(pageContent.getMessage());
pageRoutes.add(route);
List<PageRoute> ps = routemap.get(s);
if(ps!=null){
routemap.put(s,pageRoutes);
}else{
ps.add(route);
routemap.put(s,ps);
}
}
}
}
}
}
}
FileHtmlUtil.clearAll();
//获取前端代码中得网页路由地址
//比对黄承天代码中访问得地址和路由地址,黄承天是否访问全了。
}
System.out.println("修改状态");
//改变报告状态
String out = JSON.toJSONString(evaReport);
System.out.println(id);
TestReport testReport = new TestReport();
testReport.setResultId(id);
testReport.setOutReport(out);
FileHtmlUtil.clearAll();
//获取前端代码中得网页路由地址
//比对黄承天代码中访问得地址和路由地址,黄承天是否访问全了。
testReportService.update(testReport);
autoResultSetService.updateByid(id);
}
System.out.println("修改状态");
//改变报告状态
String out = JSON.toJSONString(evaReport);
System.out.println(id);
TestReport testReport = new TestReport();
testReport.setResultId(id);
testReport.setOutReport(out);
testReportService.update(testReport);
autoResultSetService.updateByid(id);
} catch (InterruptedException e) {
} catch (Exception e) {
e.printStackTrace();
}
......@@ -155,6 +226,7 @@ public class TestTask {
}
private List<String> getRouterList(Map<String, List<FileType>> alls, String fileRoutes) {
String pattern="(\\/:*[a-zA-Z0-9]+)+";
List<String> allRouters = new ArrayList<>();
Set<String> all = alls.keySet();
//所有的路由
......@@ -164,7 +236,7 @@ public class TestTask {
if (fileRoutes != null) {
if (s1.contains("router")) {
for (FileType fileBean : fileBeans) {
allRouters.addAll(FileHtmlUtil.readTxtFile(fileBean.getAddress(), "(\\/:*[a-zA-Z0-9]*)+"));
allRouters.addAll(FileHtmlUtil.readTxtFile(fileBean.getAddress(), pattern));
}
}
}
......@@ -173,9 +245,9 @@ public class TestTask {
for (String s1 : all) {
List<FileType> fileBeans = alls.get(s1);
if (fileRoutes != null) {
if (s1.contains("router")||s1.contains("js")) {
for (FileType fileBean : fileBeans) {
allRouters.addAll(FileHtmlUtil.readTxtFile(fileBean.getAddress(), "(\\/:*[a-zA-Z0-9]*)+"));
for (FileType fileBean : fileBeans) {
if(fileBean.getSuffix().equals("js")) {
allRouters.addAll(FileHtmlUtil.readTxtFile(fileBean.getAddress(), pattern));
}
}
}
......@@ -186,7 +258,7 @@ public class TestTask {
if (fileRoutes != null) {
for (FileType fileBean : fileBeans) {
if(fileBean.getSuffix().equals("jsp")) {
allRouters.addAll(FileHtmlUtil.readTxtFile(fileBean.getAddress(), "(\\/:*[a-zA-Z0-9]*)+"));
allRouters.addAll(FileHtmlUtil.readTxtFile(fileBean.getAddress(), pattern));
}
}
}
......
......@@ -12,5 +12,24 @@ import java.util.List;
@ApiModel(description = "网页内容测试类")
public class PageContentTest {
private String url;
/**
* 是否通过 0不成功 1成功
*/
private Integer success;
/**
* 响应时间
*/
private Integer responseTime;
/**
* 相关信息(未通过理由)
*/
private String message;
/**
* 截图的url
*/
private String screenshot;
private List<PageContent> contents;
}
......@@ -10,6 +10,7 @@ import com.zjty.autotest.pojo.test.Project;
import com.zjty.autotest.service.AsyncService;
import com.zjty.autotest.service.AutoResultSetService;
import com.zjty.autotest.service.TestReportService;
import com.zjty.autotest.util.FileHtmlUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.scheduling.annotation.Async;
......@@ -140,8 +141,40 @@ public class AsyncServiceImpl implements AsyncService {
if (testChannel.getCodeUrl() != null) {
//解压上传得代码
//获取前端代码中得网页路由地址
if (testChannel.getCodeUrl() != null) {
//解压上传得代码
FileHtmlUtil.getFiles(testChannel.getCodeUrl(), null);
Map<String, List<FileType>> alls = FileHtmlUtil.getAlls();
//获取项目类型
FileHtmlUtil.getFileRoutes(testChannel.getCodeUrl());
int jspcount=FileHtmlUtil.jspNum;
int jscount=FileHtmlUtil.jsNum;
int vuecount=FileHtmlUtil.vueNum;
int angularcount=FileHtmlUtil.angularNum;
int htmlcount=FileHtmlUtil.count;
String fileRoutes=null;
if(jspcount>0){
fileRoutes="jsp";
}else if(vuecount>0){
fileRoutes="vue";
}else if(jscount>0){
fileRoutes="react";
}else if(angularcount>0){
fileRoutes="angular";
}
if (fileRoutes != null) {
// List<String> routerList = getRouterList(alls, fileRoutes);
// List<String> collect = routerList.stream().map(String::toLowerCase).distinct().collect(Collectors.toList());
// System.out.println(collect.toString());
}
FileHtmlUtil.clearAll();
//获取前端代码中得网页路由地址
//比对黄承天代码中访问得地址和路由地址,黄承天是否访问全了。
}
//比对黄承天代码中访问得地址和路由地址,黄承天是否访问全了。
}
System.out.println("修改状态");
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论