提交 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,17 +34,20 @@ public class TestTask { ...@@ -28,17 +34,20 @@ 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() {
synchronized (o) {
String take = QueueManager.take(); String take = QueueManager.take();
log.info("获取到消息:{}", take); log.info("获取到消息:{}", take);
if (!StringUtils.isEmpty(take)) { if (!StringUtils.isEmpty(take)) {
doBusiness(take); doBusiness(take);
} }
} }
}
private void doBusiness(String id) { private void doBusiness(String id) {
...@@ -47,61 +56,89 @@ public class TestTask { ...@@ -47,61 +56,89 @@ public class TestTask {
if (testChannel != null) { if (testChannel != null) {
log.info("testChannel不为空:{}", testChannel); log.info("testChannel不为空:{}", testChannel);
try { try {
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 evaReport = new EvaReport();
evaReport.setBrowser(testChannel.getBrowser()); evaReport.setBrowser(report.getBrowser());
evaReport.setFailCount(testChannel.getName() + "系统未通过测试," + "未通过测试点共" + "10" + "个"); if (count > 0) {
evaReport.setProjectName(testChannel.getName()); evaReport.setFailCount(testChannel.getName() + "系统未通过测试," + "未通过测试点共" + count + "个");
}
evaReport.setFailCount(testChannel.getName() + "系统通过测试," + "未通过测试点共0个");
evaReport.setProjectName(report.getProjectName());
evaReport.setCreateTime(new Date()); evaReport.setCreateTime(new Date());
evaReport.setSystem("中标麒麟v7龙芯版"); evaReport.setSystem("中标麒麟v7龙芯版");
evaReport.setUrl(testChannel.getUrl()); evaReport.setUrl(testChannel.getUrl());
List<FailMessage> failMessages = new ArrayList<>(); 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 failMessage = new FailMessage();
failMessage.setUrl("https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_pc_1"); failMessage.setUrl(measure.getUrl());
failMessage.setMessage("抗击疫情打不开响应超时"); failMessage.setMessage(measure.getMessage());
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"); failMessage.setPicture(measure.getScreenshot());
failMessages.add(failMessage); failMessages.add(failMessage);
}
evaReport.setFailMessages(failMessages); evaReport.setFailMessages(failMessages);
List<PageRoute> pageRoutes = new ArrayList<>(); evaReport.setPageRoutes(null);
PageRoute pageRoute = new PageRoute(); HashMap<String, Measure> map = new HashMap<>();
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<>(); List<PageContentTest> pageContents = new ArrayList<>();
for (Measure measure : measures) {
PageContentTest pageContentTest = new PageContentTest(); PageContentTest pageContentTest = new PageContentTest();
pageContentTest.setUrl("http://news.baidu.com/"); 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<>(); List<PageContent> contents = new ArrayList<>();
for (ElementDetail elementDetail : elementDetails) {
PageContent pageContent = new PageContent(); PageContent pageContent = new PageContent();
pageContent.setParms("国内"); pageContent.setParms(elementDetail.getType());
pageContent.setMessage(""); pageContent.setMessage(elementDetail.getMessage());
pageContent.setResponseTime(300); pageContent.setResponseTime(elementDetail.getResponseTime());
pageContent.setSuccess(0); pageContent.setSuccess(0);
PageContent pageContent1 = new PageContent(); if (elementDetail.getSuccess()) {
pageContent1.setParms("国外"); pageContent.setSuccess(1);
pageContent1.setMessage("响应时间过长"); }
pageContent1.setResponseTime(30000);
pageContent1.setSuccess(1);
contents.add(pageContent); contents.add(pageContent);
contents.add(pageContent1); }
pageContentTest.setContents(contents); pageContentTest.setContents(contents);
}
pageContents.add(pageContentTest); pageContents.add(pageContentTest);
}
evaReport.setPageContents(pageContents); evaReport.setPageContents(pageContents);
//调用黄承天代码
Thread.sleep(600);
if (testChannel.getCodeUrl() != null) { if (testChannel.getCodeUrl() != null) {
//解压上传得代码 //解压上传得代码
...@@ -110,25 +147,58 @@ public class TestTask { ...@@ -110,25 +147,58 @@ public class TestTask {
//获取项目类型 //获取项目类型
FileHtmlUtil.getFileRoutes(testChannel.getCodeUrl()); FileHtmlUtil.getFileRoutes(testChannel.getCodeUrl());
int jspcount=FileHtmlUtil.jspNum; int jspcount = FileHtmlUtil.jspNum;
int jscount=FileHtmlUtil.jsNum; int jscount = FileHtmlUtil.jsNum;
int vuecount=FileHtmlUtil.vueNum; int vuecount = FileHtmlUtil.vueNum;
int angularcount=FileHtmlUtil.angularNum; int angularcount = FileHtmlUtil.angularNum;
int htmlcount=FileHtmlUtil.count; int htmlcount = FileHtmlUtil.count;
String fileRoutes=null; String fileRoutes = null;
if(jspcount>0){ if (jspcount > 0) {
fileRoutes="jsp"; fileRoutes = "jsp";
}else if(vuecount>0){ } else if (vuecount > 0) {
fileRoutes="vue"; fileRoutes = "vue";
}else if(jscount>0){ } else if (jscount > 0) {
fileRoutes="react"; fileRoutes = "react";
}else if(angularcount>0){ } else if (angularcount > 0) {
fileRoutes="angular"; fileRoutes = "angular";
} }
if (fileRoutes != null) { if (fileRoutes != null) {
Map<String,List<PageRoute>> routemap=new HashMap<>();
List<String> routerList = getRouterList(alls, fileRoutes); List<String> routerList = getRouterList(alls, fileRoutes);
List<String> collect = routerList.stream().map(String::toLowerCase).distinct().collect(Collectors.toList()); List<String> collect = routerList.stream().map(String::toLowerCase).distinct().collect(Collectors.toList());
System.out.println(collect.toString()); 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);
}
}
}
}
}
}
} }
...@@ -147,7 +217,8 @@ public class TestTask { ...@@ -147,7 +217,8 @@ public class TestTask {
testReportService.update(testReport); testReportService.update(testReport);
autoResultSetService.updateByid(id); autoResultSetService.updateByid(id);
} catch (InterruptedException e) { }
} catch (Exception 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) {
allRouters.addAll(FileHtmlUtil.readTxtFile(fileBean.getAddress(), "(\\/:*[a-zA-Z0-9]*)+")); if(fileBean.getSuffix().equals("js")) {
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;
...@@ -139,11 +140,43 @@ public class AsyncServiceImpl implements AsyncService { ...@@ -139,11 +140,43 @@ public class AsyncServiceImpl implements AsyncService {
// evaReport.setPageRoutes(pageRoutes); // evaReport.setPageRoutes(pageRoutes);
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("修改状态");
//改变报告状态 //改变报告状态
String out = JSON.toJSONString(evaReport); String out = JSON.toJSONString(evaReport);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论