diff --git a/src/main/java/yi/master/business/message/bean/SceneValidateRule.hbm.xml b/src/main/java/yi/master/business/message/bean/SceneValidateRule.hbm.xml
index 02b5da78150563ae6bada294a265cc1237f0fd0a..d519a5ea28cb8d7a91fc95f8af6167fbc604ee4c 100644
--- a/src/main/java/yi/master/business/message/bean/SceneValidateRule.hbm.xml
+++ b/src/main/java/yi/master/business/message/bean/SceneValidateRule.hbm.xml
@@ -17,7 +17,7 @@
-
+
@@ -25,6 +25,9 @@
+
+
+
diff --git a/src/main/java/yi/master/business/message/bean/SceneValidateRule.java b/src/main/java/yi/master/business/message/bean/SceneValidateRule.java
index 5f2e83ae2c3562b1fb79492bd3a6b2552f472f33..1ba83e899fccbf0f06feea9f86d144eb7c26d4e3 100644
--- a/src/main/java/yi/master/business/message/bean/SceneValidateRule.java
+++ b/src/main/java/yi/master/business/message/bean/SceneValidateRule.java
@@ -39,15 +39,20 @@ public class SceneValidateRule implements Serializable {
/**
* 获取validate_value的方式
*/
- @FieldRealSearch(names = {"常量", "入参节点值", "SQL语句", "全局变量", "正则表达式"}, values = {"0", "1", "2", "3", "4"})
+ @FieldRealSearch(names = {"常量", "入参节点值", "SQL语句", "全局变量", "正则表达式"}, values = {"0", "1", "999999", "3", "4"})
private String getValueMethod;
/**
* 0-左右边界取关键字验证
* 1-节点参数验证
*/
- @FieldRealSearch(names = {"关联验证", "节点验证"}, values = {"0", "1"})
+ @FieldRealSearch(names = {"关联验证", "节点验证", "自定义验证"}, values = {"0", "1", "2"})
private String validateMethodFlag;
+
+ /**
+ * 比对条件
+ */
+ private String validateCondition;
/**
* 当validate_method_flag为1时有效:
@@ -89,11 +94,17 @@ public class SceneValidateRule implements Serializable {
super();
}
-
-
-
-
- public String getGetValueMethod() {
+
+
+ public void setValidateCondition(String validateCondition) {
+ this.validateCondition = validateCondition;
+ }
+
+ public String getValidateCondition() {
+ return validateCondition;
+ }
+
+ public String getGetValueMethod() {
return getValueMethod;
}
public void setGetValueMethod(String getValueMethod) {
diff --git a/src/main/java/yi/master/business/message/enums/SceneValidateCondition.java b/src/main/java/yi/master/business/message/enums/SceneValidateCondition.java
new file mode 100644
index 0000000000000000000000000000000000000000..ec662b2afb5f8712d374ae98c0fb20ecbf116530
--- /dev/null
+++ b/src/main/java/yi/master/business/message/enums/SceneValidateCondition.java
@@ -0,0 +1,43 @@
+package yi.master.business.message.enums;
+
+/**
+ * 验证条件
+ * @author xuwangcheng
+ * @version 1.0.0
+ * @description
+ * @date 2019/12/26 17:27
+ */
+public enum SceneValidateCondition {
+ /**
+ * 大于
+ */
+ gt,
+ /**
+ * 等于
+ */
+ eq,
+ /**
+ * 小于
+ */
+ lt,
+ /**
+ * 包含
+ */
+ contain,
+ /**
+ * 不包含
+ */
+ notcontain,
+ /**
+ * 存在值即可
+ */
+ exist,
+ /**
+ * 匹配正则
+ */
+ reg,
+ /**
+ * 不做任何验证
+ */
+ nothing
+}
diff --git a/src/main/java/yi/master/business/message/enums/SceneValidateType.java b/src/main/java/yi/master/business/message/enums/SceneValidateType.java
index 0ccab269e9d242e979e2b567886d78b7b29d3eb6..52bfcf35ae36b1f86ab5c440f51e205187275fac 100644
--- a/src/main/java/yi/master/business/message/enums/SceneValidateType.java
+++ b/src/main/java/yi/master/business/message/enums/SceneValidateType.java
@@ -13,7 +13,11 @@ public enum SceneValidateType {
/**
* 1 - 节点验证
*/
- NODE_VALIDATION("1");
+ NODE_VALIDATION("1"),
+ /**
+ * 2 - 自定义验证
+ */
+ CUSTOM_VALIDATION("2");
private String type;
diff --git a/src/main/java/yi/master/business/message/enums/SceneValidateValueGetMethod.java b/src/main/java/yi/master/business/message/enums/SceneValidateValueGetMethod.java
index 320f350554c31803631bbeec6e2161b662f4c255..8d1c20f3ebae779c8c627c9b9319830abe3ac1a8 100644
--- a/src/main/java/yi/master/business/message/enums/SceneValidateValueGetMethod.java
+++ b/src/main/java/yi/master/business/message/enums/SceneValidateValueGetMethod.java
@@ -25,7 +25,19 @@ public enum SceneValidateValueGetMethod {
/**
* 正则表达式
*/
- REGULAR_EXPRESSION("4");
+ REGULAR_EXPRESSION("4"),
+ /**
+ * 响应时间
+ */
+ RESPONSE_TIME("5"),
+ /**
+ * 状态码
+ */
+ STATUS_CODE("6"),
+ /**
+ * 响应头
+ */
+ RESPONSE_HEADER("7");
private String method;
diff --git a/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java b/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java
index ed3945977abc25db1566a630e611328668f1d955..2fd180273b7588b941d405af206b5999d38a07f5 100644
--- a/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java
+++ b/src/main/java/yi/master/coretest/message/test/MessageAutoTest.java
@@ -188,7 +188,7 @@ public class MessageAutoTest {
}
- Map map = validateUtil.validate(result.getResponseMessage(), testScene.getRequestMessage(), scene, msg.getMessageType(), testScene.getConfig().getConfigId());
+ Map map = validateUtil.validate(result, msg.getMessageType(), testScene.getConfig().getConfigId());
//变更数据状态
if (MessageValidateResponse.VALIDATE_SUCCESS_FLAG.equals(map.get(MessageValidateResponse.VALIDATE_MAP_STATUS_KEY))) {
@@ -538,7 +538,7 @@ public class MessageAutoTest {
testReportService.edit(report);
//提前生成静态报告
- String createReportUrl = CacheUtil.getSettingValue(SystemConsts.GLOBAL_SETTING_HOME) + "/"
+ String createReportUrl = CacheUtil.getHomeUrl() + "/"
+ SystemConsts.CREATE_STATIC_REPORT_HTML_RMI_URL + "?reportId=" + report.getReportId()
+ "&token=" + SystemConsts.REQUEST_ALLOW_TOKEN;
PracticalUtils.doGetHttpRequest(createReportUrl);
diff --git a/src/main/java/yi/master/coretest/message/test/MessageValidateResponse.java b/src/main/java/yi/master/coretest/message/test/MessageValidateResponse.java
index 1ecdfba945965c5b88043979486f047ef9801f1c..16d9f3ccb25135f8b6e5996b53815e83efa0f366 100644
--- a/src/main/java/yi/master/coretest/message/test/MessageValidateResponse.java
+++ b/src/main/java/yi/master/coretest/message/test/MessageValidateResponse.java
@@ -1,24 +1,30 @@
package yi.master.coretest.message.test;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ReUtil;
+import net.sf.json.JSONObject;
import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.math.NumberUtils;
import org.apache.log4j.Logger;
import org.codehaus.jackson.map.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import yi.master.business.message.bean.MessageScene;
import yi.master.business.message.bean.SceneValidateRule;
+import yi.master.business.message.bean.TestResult;
import yi.master.business.message.enums.CommonStatus;
+import yi.master.business.message.enums.SceneValidateCondition;
import yi.master.business.message.enums.SceneValidateType;
import yi.master.business.message.enums.SceneValidateValueGetMethod;
import yi.master.business.message.service.SceneValidateRuleService;
import yi.master.business.testconfig.bean.DataDB;
import yi.master.business.testconfig.service.GlobalVariableService;
+import yi.master.constant.SystemConsts;
import yi.master.coretest.message.parse.MessageParse;
import yi.master.util.DBUtil;
import yi.master.util.PracticalUtils;
import yi.master.util.cache.CacheUtil;
+import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -53,16 +59,14 @@ public class MessageValidateResponse {
private GlobalVariableService globalVariableService;
/**
- *
- * @param responseMessage
- * @param requestMessage
- * @param scene
+ * 验证方法
+ * @param result
* @return Map<String, String>
* status 验证结果 0-成功 1-不成功
* msg 备注信息
*/
- public Map validate(String responseMessage, String requestMessage, MessageScene scene, String messageType, Integer configId) {
- List rules = validateRuleService.getParameterValidate(scene.getMessageSceneId());
+ public Map validate(TestResult result, String messageType, Integer configId) {
+ List rules = validateRuleService.getParameterValidate(result.getMessageScene().getMessageSceneId());
List configRules = validateRuleService.getConfigRules(configId);
CollUtil.addAll(rules, configRules);
@@ -93,11 +97,13 @@ public class MessageValidateResponse {
Map resultMap = null;
//关键字匹配验证,通过左右边界
if (SceneValidateType.ASSOCIATED_VALIDATION.getType().equals(rule.getValidateMethodFlag())) {
- resultMap = relateKeyValidate(responseMessage, requestMessage, rule, parseUtil);
+ resultMap = relateKeyValidate(result, rule, parseUtil);
//节点参数验证,复杂验证
} else if (SceneValidateType.NODE_VALIDATION.getType().equals(rule.getValidateMethodFlag())) {
- resultMap = nodeParameterValidate(responseMessage, requestMessage, rule, parseUtil);
- }
+ resultMap = nodeParameterValidate(result, rule, parseUtil);
+ } else if (SceneValidateType.CUSTOM_VALIDATION.getType().equals(rule.getValidateMethodFlag())) {
+ resultMap = customValidate(result, rule, parseUtil);
+ }
msg.append(resultMap.get(VALIDATE_MAP_MSG_KEY) + "\n");
if (!VALIDATE_SUCCESS_FLAG.equals(resultMap.get(VALIDATE_MAP_STATUS_KEY))) {
@@ -112,16 +118,181 @@ public class MessageValidateResponse {
+ successCount + "条,失败" + failCount + "条。");
return validateMap;
}
-
+
+
+ /**
+ * 自定义验证
+ * @author xuwangcheng
+ * @date 2019/12/27 9:38
+ * @param result result
+ * @param rule rule
+ * @param parseUtil parseUtil
+ * @return {@link Map}
+ */
+ private Map customValidate (TestResult result, SceneValidateRule rule, MessageParse parseUtil) {
+ Map map = new HashMap();
+ map.put(VALIDATE_MAP_STATUS_KEY, VALIDATE_FAIL_FLAG);
+ StringBuilder msg = new StringBuilder("【自定义验证】");
+
+ String verifyVal = null;
+ String compareVal = rule.getValidateValue();
+
+ //响应时间
+ if (SceneValidateValueGetMethod.RESPONSE_TIME.getMethod().equals(rule.getGetValueMethod())) {
+ verifyVal = result.getUseTime().toString();
+ msg.append("验证响应时间,响应时间为" + verifyVal + "ms,");
+
+ }
+
+ //状态码
+ if (SceneValidateValueGetMethod.STATUS_CODE.getMethod().equals(rule.getGetValueMethod())) {
+ verifyVal = result.getStatusCode();
+ msg.append("验证状态码,状态码为" + verifyVal + ",");
+ }
+
+ //响应头
+ if (SceneValidateValueGetMethod.RESPONSE_HEADER.getMethod().equals(rule.getGetValueMethod())) {
+ JSONObject headerObject = JSONObject.fromObject(result.getHeaders()).getJSONObject("ResponseHeader");
+ msg.append("验证响应头,");
+
+ for (Object key:headerObject.keySet()) {
+ if (key != null && key.toString().equalsIgnoreCase(rule.getParameterName())) {
+ verifyVal = headerObject.getString(key.toString());
+ }
+ }
+
+ if (StringUtils.isBlank(verifyVal)) {
+ map.put(VALIDATE_MAP_MSG_KEY, msg.append("没有获取key为" + rule.getParameterName() + "的响应头信息。").toString());
+ return map;
+ }
+ msg.append("key为" + rule.getParameterName() + "的响应头值为" + verifyVal + ",");
+ }
+
+ //数据库取值
+ if (rule.getGetValueMethod().startsWith(SceneValidateValueGetMethod.QUERY_SQL.getMethod())) {
+ msg.append("验证数据库变动,");
+ DataDB db = CacheUtil.getQueryDBById(rule.getGetValueMethod());
+
+ if (db == null) {
+ map.put(VALIDATE_MAP_MSG_KEY, msg.append("没有找到dbId为 " + rule.getGetValueMethod() + " 的数据源信息!").toString());
+ return map;
+ }
+
+ String querySql = PracticalUtils.replaceGlobalVariable(
+ parseUtil.parameterReplaceByNodePath(result.getRequestMessage(), rule.getParameterName()), globalVariableService);
+
+ verifyVal = DBUtil.getDBData(db, querySql);
+
+ if (StringUtils.isBlank(verifyVal)) {
+ map.put(VALIDATE_MAP_MSG_KEY, msg.append("从数据源 " + db.getDbName() + " 中查询数据出错[" + querySql + "]").toString());
+ return map;
+ }
+
+ msg.append("数据源" + db.getDbName() + ",执行SQL[" + querySql + "],获取校验值为" + verifyVal + ",");
+ }
+
+ String verifyResult = customCompareValue(verifyVal, compareVal, rule.getValidateCondition());
+ if (SystemConsts.DefaultBooleanIdentify.TRUE.getString().equalsIgnoreCase(verifyResult)) {
+ map.put(VALIDATE_MAP_STATUS_KEY, VALIDATE_SUCCESS_FLAG);
+ map.put(VALIDATE_MAP_MSG_KEY, msg.append("与比对值" + compareVal + "比对正确,验证成功!").toString());
+ return map;
+ }
+
+ map.put(VALIDATE_MAP_MSG_KEY, msg.append("与比对值" + compareVal + "比对失败:[" + verifyResult + "],验证失败!").toString());
+ return map;
+ }
+
+
+ /**
+ * 按照配置对校验值和比对值进行正确比对
+ * @author xuwangcheng
+ * @date 2019/12/27 11:02
+ * @param val1 val1 校验值
+ * @param val2 val2 比对值
+ * @param compareCondition compareCondition
+ * @return {@link String} 正确返回true,否则返回错误信息
+ */
+ private String customCompareValue (String val1, String val2, String compareCondition) {
+ String result = "true";
+ if (StringUtils.isBlank(val1) || StringUtils.isBlank(compareCondition)) {
+ return "校验值、比对条件不能为空";
+ }
+
+ if (SceneValidateCondition.eq.name().equalsIgnoreCase(compareCondition)) {
+ if (!StringUtils.equals(val1, val2)) {
+ return val1 + "不等于" + val2;
+ }
+
+ return result;
+ }
+
+ if (SceneValidateCondition.nothing.name().equalsIgnoreCase(compareCondition)) {
+ return result;
+ }
+
+ if (SceneValidateCondition.contain.name().equalsIgnoreCase(compareCondition)) {
+ if (!StringUtils.contains(val1, val2)) {
+ return val1 + "不包含" + val2;
+ }
+
+ return result;
+ }
+
+ if (SceneValidateCondition.notcontain.name().equalsIgnoreCase(compareCondition)) {
+ if (StringUtils.contains(val1, val2)) {
+ return val1 + "包含" + val2;
+ }
+
+ return result;
+ }
+
+ if (SceneValidateCondition.exist.name().equalsIgnoreCase(compareCondition)) {
+ if (StringUtils.isBlank(val1)) {
+ return "校验值不存在";
+ }
+
+ return result;
+ }
+
+ if (SceneValidateCondition.reg.name().equalsIgnoreCase(compareCondition)) {
+ if (!ReUtil.isMatch(val2, val1)) {
+ return val1 + "无法正确匹配正则表达式" + val2;
+ }
+
+ return result;
+ }
+
+ if (!NumberUtils.isDigits(val1)) {
+ return val1 + "不是数字类型,无法比对";
+ }
+
+ if (!NumberUtils.isDigits(val2)) {
+ return val2 + "不是数字类型,无法比对";
+ }
+
+ if (SceneValidateCondition.gt.name().equalsIgnoreCase(compareCondition)) {
+ if ((new BigDecimal(val1).compareTo(new BigDecimal(val2))) <= 0) {
+ return val1 + "小于等于" + val2;
+ }
+ }
+
+ if (SceneValidateCondition.lt.name().equalsIgnoreCase(compareCondition)) {
+ if ((new BigDecimal(val1).compareTo(new BigDecimal(val2))) >= 0) {
+ return val1 + "大于等于" + val2;
+ }
+ }
+
+ return result;
+ }
+
/**
* 关联左右边界取值
- * @param responseMessage
- * @param requestMessage
+ * @param result
* @param rule
* @return
*/
@SuppressWarnings("rawtypes")
- private Map relateKeyValidate(String responseMessage, String requestMessage, SceneValidateRule rule, MessageParse parseUtil) {
+ private Map relateKeyValidate(TestResult result, SceneValidateRule rule, MessageParse parseUtil) {
Map map = new HashMap();
Map maps = null;
try {
@@ -136,7 +307,7 @@ public class MessageValidateResponse {
return map;
}
- String getValue = PracticalUtils.getValueByRelationKeyWord(maps, responseMessage);
+ String getValue = PracticalUtils.getValueByRelationKeyWord(maps, result.getResponseMessage());
if (getValue == null) {
map.put(VALIDATE_MAP_STATUS_KEY, VALIDATE_FAIL_FLAG);
map.put(VALIDATE_MAP_MSG_KEY, "根据指定的左右边界等参数无法在出参报文中匹配到相应的内容,请检查!");
@@ -155,7 +326,7 @@ public class MessageValidateResponse {
//入参节点获取
if (SceneValidateValueGetMethod.REQUEST_PARAMS_NODE.getMethod().equals(rule.getGetValueMethod())) {
- validateValue = parseUtil.getObjectByPath(requestMessage, rule.getValidateValue());
+ validateValue = parseUtil.getObjectByPath(result.getRequestMessage(), rule.getValidateValue());
if (validateValue == null) {
map.put(VALIDATE_MAP_MSG_KEY, msg + "在入参报文中没有找到路径为 " + rule.getValidateValue() + " 的节点,请检查验证规则!");
@@ -190,23 +361,21 @@ public class MessageValidateResponse {
/**
* 针对返回报文中各个指定path的节点进行验证
* 出错则停止验证并返回失败标记
- * @param responseMessage
- * @param requestMessage
+ * @param result
* @param rule
* @param parseUtil
* @return
*/
- private Map nodeParameterValidate(String responseMessage, String requestMessage, SceneValidateRule rule, MessageParse parseUtil) {
+ private Map nodeParameterValidate(TestResult result, SceneValidateRule rule, MessageParse parseUtil) {
Map map = new HashMap();
map.put(VALIDATE_MAP_STATUS_KEY, VALIDATE_FAIL_FLAG);
StringBuilder msg = new StringBuilder();
//不是指定的格式,不能用此方式验证
- MessageParse responseMessageParseUtil = MessageParse.judgeMessageType(responseMessage);
+ MessageParse responseMessageParseUtil = MessageParse.judgeMessageType(result.getResponseMessage());
-
msg.append("【节点验证】在验证出参节点路径为 " + rule.getParameterName() + " 时: ");
- String vaildateStr = responseMessageParseUtil.getObjectByPath(responseMessage, rule.getParameterName());
+ String vaildateStr = responseMessageParseUtil.getObjectByPath(result.getResponseMessage(), rule.getParameterName());
if (vaildateStr == null) {
map.put(VALIDATE_MAP_MSG_KEY, msg + "返回报文中没有找到该路径节点,请检查验证规则!");
@@ -222,7 +391,7 @@ public class MessageValidateResponse {
//入参节点获取
if (rule.getGetValueMethod().equals(SceneValidateValueGetMethod.REQUEST_PARAMS_NODE.getMethod())) {
- validateValue = parseUtil.getObjectByPath(requestMessage, rule.getValidateValue());
+ validateValue = parseUtil.getObjectByPath(result.getRequestMessage(), rule.getValidateValue());
if (validateValue == null) {
map.put(VALIDATE_MAP_MSG_KEY, msg + "在入参报文中没有找到路径为 " + rule.getValidateValue() + " 的节点,请检查验证规则!");
@@ -245,7 +414,7 @@ public class MessageValidateResponse {
}
String querySql = PracticalUtils.replaceGlobalVariable(
- parseUtil.parameterReplaceByNodePath(requestMessage, rule.getValidateValue()), globalVariableService);
+ parseUtil.parameterReplaceByNodePath(result.getRequestMessage(), rule.getValidateValue()), globalVariableService);
validateValue = DBUtil.getDBData(db, querySql);
diff --git a/src/main/java/yi/master/coretest/task/probe/ProbeTaskJobAction.java b/src/main/java/yi/master/coretest/task/probe/ProbeTaskJobAction.java
index 1cb3bfc2cac516bd6ca446960ce9cef6e407e772..5ecfca4d974886b91b1f7fc857de6aad4cba7210 100644
--- a/src/main/java/yi/master/coretest/task/probe/ProbeTaskJobAction.java
+++ b/src/main/java/yi/master/coretest/task/probe/ProbeTaskJobAction.java
@@ -1,14 +1,5 @@
package yi.master.coretest.task.probe;
-import java.sql.Timestamp;
-import java.util.Map;
-
-import javax.mail.Address;
-import javax.mail.Session;
-import javax.mail.internet.InternetAddress;
-import javax.mail.internet.MimeMessage;
-import javax.mail.internet.MimeMessage.RecipientType;
-
import org.apache.log4j.Logger;
import org.codehaus.jackson.map.ObjectMapper;
import org.quartz.Job;
@@ -16,7 +7,6 @@ import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
-
import yi.master.business.advanced.bean.InterfaceProbe;
import yi.master.business.advanced.enums.InterfaceProbeNotifyType;
import yi.master.business.advanced.enums.InterfaceProbeStatus;
@@ -29,10 +19,12 @@ import yi.master.constant.ReturnCodeConsts;
import yi.master.constant.SystemConsts;
import yi.master.util.PracticalUtils;
import yi.master.util.cache.CacheUtil;
-import yi.master.util.notify.EmailCreator;
import yi.master.util.notify.NotifyMail;
import yi.master.util.notify.ProbeEmailCreator;
+import java.sql.Timestamp;
+import java.util.Map;
+
/**
* 探测任务执行工作类
* @author xuwangcheng
@@ -58,7 +50,7 @@ public class ProbeTaskJobAction implements Job {
InterfaceProbe task = (InterfaceProbe) dataMap.get(context.getJobDetail().getKey().getName());
//获取请求地址
- String testUrl = CacheUtil.getSettingValue(SystemConsts.GLOBAL_SETTING_HOME) + "/" + SystemConsts.PROBE_TASK_TEST_RMI_URL
+ String testUrl = CacheUtil.getHomeUrl() + "/" + SystemConsts.PROBE_TASK_TEST_RMI_URL
+ "?probeId=" + task.getProbeId() + "&token=" + SystemConsts.REQUEST_ALLOW_TOKEN;
LOGGER.info("[接口探测任务]执行探测任务:url=" + testUrl);
diff --git a/src/main/java/yi/master/coretest/task/probe/ProbeTaskJobListener.java b/src/main/java/yi/master/coretest/task/probe/ProbeTaskJobListener.java
index 8aa3c1c92bc20a26aaf7ccd521350a015eefbf7b..4f10610a14471a76d29e0833710dac79185a2718 100644
--- a/src/main/java/yi/master/coretest/task/probe/ProbeTaskJobListener.java
+++ b/src/main/java/yi/master/coretest/task/probe/ProbeTaskJobListener.java
@@ -18,7 +18,6 @@ public class ProbeTaskJobListener implements JobListener {
@Override
public String getName() {
-
return LISTENER_NAME;
}
diff --git a/src/main/java/yi/master/coretest/task/time/TimeTaskJobAction.java b/src/main/java/yi/master/coretest/task/time/TimeTaskJobAction.java
index 17c4952674d3ae3b9c48088a7492dbe1df7f3826..b56d4c6ff29c4ce774f90b9b5435105e216462c3 100644
--- a/src/main/java/yi/master/coretest/task/time/TimeTaskJobAction.java
+++ b/src/main/java/yi/master/coretest/task/time/TimeTaskJobAction.java
@@ -34,7 +34,7 @@ public class TimeTaskJobAction implements Job {
String[] result = new String[2];
//获取请求地址
- String testUrl = CacheUtil.getSettingValue(SystemConsts.GLOBAL_SETTING_HOME) + "/" + SystemConsts.AUTO_TASK_TEST_RMI_URL
+ String testUrl = CacheUtil.getHomeUrl() + "/" + SystemConsts.AUTO_TASK_TEST_RMI_URL
+ "?setId=" + task.getRelatedId() + "&autoTestFlag=true" + "&token=" + SystemConsts.REQUEST_ALLOW_TOKEN + "&userId=" + task.getUser().getUserId();
LOGGER.info("[自动化定时任务]执行自动化测试任务:url=" + testUrl);
diff --git a/src/main/java/yi/master/coretest/task/time/TimeTaskJobListener.java b/src/main/java/yi/master/coretest/task/time/TimeTaskJobListener.java
index 9a29be1ea15f74481e732800a8610bf7f85b2b87..60a02dfae53609cba5871a5484d29c3a3d6a1bc9 100644
--- a/src/main/java/yi/master/coretest/task/time/TimeTaskJobListener.java
+++ b/src/main/java/yi/master/coretest/task/time/TimeTaskJobListener.java
@@ -1,9 +1,5 @@
package yi.master.coretest.task.time;
-import java.sql.Timestamp;
-import java.util.HashSet;
-import java.util.Map;
-
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.codehaus.jackson.map.ObjectMapper;
@@ -12,7 +8,6 @@ import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobListener;
import org.springframework.beans.factory.annotation.Autowired;
-
import yi.master.business.message.bean.AutoTask;
import yi.master.business.message.bean.TestReport;
import yi.master.business.message.bean.TestResult;
@@ -31,6 +26,10 @@ import yi.master.util.cache.CacheUtil;
import yi.master.util.notify.NotifyMail;
import yi.master.util.notify.ReportEmailCreator;
+import java.sql.Timestamp;
+import java.util.HashSet;
+import java.util.Map;
+
/**
* 定时任务监听器
* @author xuwangcheng
@@ -114,7 +113,7 @@ public class TimeTaskJobListener implements JobListener {
//发送推送邮件
if (CommonStatus.ENABLED.getStatus().equals(CacheUtil.getSettingValue(SystemConsts.GLOBAL_SETTING_IF_SEND_REPORT_MAIL))
&& SystemConsts.DefaultBooleanIdentify.TRUE.getNumber().equals(task.getMailNotify())) {
- String createReportUrl = CacheUtil.getSettingValue(SystemConsts.GLOBAL_SETTING_HOME) + "/"
+ String createReportUrl = CacheUtil.getHomeUrl() + "/"
+ SystemConsts.CREATE_STATIC_REPORT_HTML_RMI_URL + "?reportId=" + result[0]
+ "&token=" + SystemConsts.REQUEST_ALLOW_TOKEN;
String returnJson = PracticalUtils.doGetHttpRequest(createReportUrl);
diff --git a/src/main/java/yi/master/util/DBUtil.java b/src/main/java/yi/master/util/DBUtil.java
index 7d2a6ac200743969d9f4e122c020050650df1560..c7009ec8b70eafef7b3906ef80873e5fd5e55189 100644
--- a/src/main/java/yi/master/util/DBUtil.java
+++ b/src/main/java/yi/master/util/DBUtil.java
@@ -1,15 +1,10 @@
package yi.master.util;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
import org.apache.log4j.Logger;
-
import yi.master.business.testconfig.bean.DataDB;
+import java.sql.*;
+
/**
* 仅用于测试过程中查询数据的数据库连接工具类
* @author xuwangcheng
@@ -55,7 +50,7 @@ public class DBUtil {
if (dbType.equals("mysql")) {
Class.forName("com.mysql.jdbc.Driver");
- con = DriverManager.getConnection("jdbc:mysql://" + dbUrl + "/" + dbName + "?characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true", dbUserName, dbPasswd);
+ con = DriverManager.getConnection("jdbc:mysql://" + dbUrl + "/" + dbName + "?characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&useSSL=false", dbUserName, dbPasswd);
}
} catch (ClassNotFoundException e) {
@@ -65,10 +60,6 @@ public class DBUtil {
} catch (SQLException e1) {
LOGGER.error("创建数据库连接出错!", e1);
throw new SQLException();
- } finally {
- if (con != null) {
- con.close();
- }
}
if (!dbType.equals("oracle") && !dbType.equals("mysql")) {
diff --git a/src/main/java/yi/master/util/cache/CacheUtil.java b/src/main/java/yi/master/util/cache/CacheUtil.java
index 5fb7adca7ab1cf91b01590e27b6c011d479c1850..d857e0064015fbdb5b57f49ca82b42b7489dd7a8 100644
--- a/src/main/java/yi/master/util/cache/CacheUtil.java
+++ b/src/main/java/yi/master/util/cache/CacheUtil.java
@@ -5,10 +5,8 @@ import yi.master.business.log.bean.LogRecord;
import yi.master.business.log.service.LogRecordService;
import yi.master.business.system.bean.GlobalSetting;
import yi.master.business.system.bean.OperationInterface;
-import yi.master.business.system.service.GlobalSettingService;
import yi.master.business.system.service.OperationInterfaceService;
import yi.master.business.testconfig.bean.DataDB;
-import yi.master.constant.SystemConsts;
import yi.master.coretest.message.test.mock.MockServer;
import yi.master.coretest.message.test.performance.PerformanceTestObject;
import yi.master.util.FrameworkUtil;
@@ -298,15 +296,10 @@ public class CacheUtil {
if (StringUtils.isNotBlank(homeUrl)) {
return;
}
- if (request != null) {
- homeUrl = request.getRequestURL().toString().replace(request.getServletPath(), "");
- //更新数据库中内容
- if (!homeUrl.equals(getSettingValue(SystemConsts.GLOBAL_SETTING_HOME))) {
- //如果不相同则更新
- GlobalSettingService globalSettingService = (GlobalSettingService) FrameworkUtil.getSpringBean(GlobalSettingService.class);
- globalSettingService.updateSetting(SystemConsts.GLOBAL_SETTING_HOME, homeUrl);
- updateGlobalSettingValue(SystemConsts.GLOBAL_SETTING_HOME, homeUrl);
- }
- }
+ homeUrl = request.getRequestURL().toString().replace(request.getServletPath(), "");
+ }
+
+ public static String getHomeUrl() {
+ return homeUrl;
}
}
diff --git a/src/main/resources/update/1.0.1 b/src/main/resources/update/1.0.1
new file mode 100644
index 0000000000000000000000000000000000000000..06af0fd3129490f2332568ef28c69db447c66f6c
--- /dev/null
+++ b/src/main/resources/update/1.0.1
@@ -0,0 +1,4 @@
+ALTER TABLE `at_scene_validate_rule` ADD COLUMN `validate_condition` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '验证条件,例如大于小于等于等' AFTER `get_value_method`;
+ALTER TABLE `at_scene_validate_rule` MODIFY COLUMN `parameter_name` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '根据validate_method_flag的值有不同的含义:validate_method_flag=0时,其为取值的json串,例如:{\"LB\":\"ss\",\"RB\":\"vv\",\"ORDER\":1},分别表示左边界、右边界、取值顺序,validate_method_flag=1时,该值表示节点路径' AFTER `message_scene_id`;
+ALTER TABLE `at_scene_validate_rule` MODIFY COLUMN `validate_method_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '验证方式0-左右边界取关键字验证,1-节点参数验证' AFTER `parameter_name`;
+ALTER TABLE `at_scene_validate_rule` MODIFY COLUMN `get_value_method` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '获取validate_value的方式,0 - 常量,1 - 入参节点值,2 - SQL语句,3 - 全局变量,4 - 正则表达式' AFTER `validate_method_flag`;
diff --git a/src/main/webapp/resource/message/validateParameters.html b/src/main/webapp/resource/message/validateParameters.html
index 25b8d0d0f8f532a1dbe9a5afd83cb7b7302d205a..561c1883e0dfbbda1115c96da69f82b8edce4b1b 100644
--- a/src/main/webapp/resource/message/validateParameters.html
+++ b/src/main/webapp/resource/message/validateParameters.html
@@ -15,9 +15,9 @@
-
+
+
-