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

路由规则

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