提交 8e20e1f0 authored 作者: Matrix's avatar Matrix

feat(日志): 增加了行为执行器与SQL执行器的初始化日志

上级 f38e0b2e
......@@ -19,6 +19,7 @@ import org.matrix.database.service.ITestDataService;
import org.matrix.database.service.impl.ActionServiceImpl;
import org.matrix.enums.ActionType;
import org.matrix.exception.GlobalException;
import org.matrix.socket.LogQueueRuntime;
import org.matrix.util.BeanFlattener;
import org.springframework.stereotype.Component;
......@@ -31,7 +32,7 @@ import static org.matrix.actuators.move.MoveStrategy.*;
import static org.matrix.enums.ActionType.*;
/**
* MoveActuator.
* MoveActuator. 行为执行器
*
* @author Matrix <xhyrzldf@gmail.com>
* @since 2022/2/25 at 3:32 PM
......@@ -144,6 +145,7 @@ public class MoveActuator implements Actuator {
public void runMove(Long moveId, Long envId, Long projectId, Object caseResultData, MoveStrategy strategy) {
Action action = actionService.findByMoveAndEnv(moveId, envId)
.orElseThrow(() -> new GlobalException(String.format("没有找到指定的action动作对象,提供查询的moveId = %d,envId = %d", moveId, envId)));
LogQueueRuntime.addNewLog(String.format("准备执行行为动作,动作策略: %s,行为Id =%d ,动作id = %d", strategy, moveId, action.getId()));
// 如果是 mid 或者 aft 动作,则需要进行结果集的语法替换 与 空值判断
if (strategy != PRE_MOVE) {
......@@ -165,6 +167,7 @@ public class MoveActuator implements Actuator {
// 分类处理 + 结果集处理(如果不存在则put数据,如果存在则替换数据)
log.info("[动作执行器] 正在执行动作 actionId = {},动作类型 = {},动作策略 = {},动作参数 = {}", action.getId(), action, strategy, runtimeDetail);
LogQueueRuntime.addNewLog(String.format("[动作执行器] 正在执行动作 actionId = %d,动作类型 = %sΩ,动作策略 = %s,动作参数 = %s", action.getId(), action, strategy, runtimeDetail));
if (actionType == SQL_ACTION) {
List<Map<String, Object>> resultMap = sqlActionHandler(envId, projectId, runtimeDetail);
res.put(key, resultMap);
......@@ -209,6 +212,7 @@ public class MoveActuator implements Actuator {
throw new GlobalException("行为语法里定位部分的语法没有提供合适的actionId!例如需要提供pre1,pre2,您提供的部分是: " + col);
}
String key = strategy + "_" + actionId;
LogQueueRuntime.addNewLog("行为执行器KEY值拼接完成,KEY值 = " + key);
return new MoveRegularObject(key, colArray[1]);
}
......
......@@ -16,10 +16,10 @@ import org.matrix.database.entity.DynamicVariable;
import org.matrix.database.entity.TestCaseBTO;
import org.matrix.database.service.IConnectService;
import org.matrix.database.service.IDynamicVariableService;
import org.matrix.database.service.ITestCaseService;
import org.matrix.database.service.ITestDataService;
import org.matrix.enums.DynamicVarType;
import org.matrix.exception.GlobalException;
import org.matrix.socket.LogQueueRuntime;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
......@@ -66,12 +66,13 @@ public class SqlExpActuator implements Actuator {
/**
* 解析并运行SQL语句,可以包含别的SQL变量,例如 'select * from user where user.id = ${user_id} '
*
* @param sqlDetail sql的poolId与sql语句的对象
* @param envId 环境id
* @param envId 环境id
* @param projectId 项目id
* @return 运行SQL后取完数值的结果, 是一张数据表, 以LIST<MAP>的形式呈现
*/
public List<Map<String, Object>> parseSql(SqlExpDetail sqlDetail,Long envId,Long projectId){
public List<Map<String, Object>> parseSql(SqlExpDetail sqlDetail, Long envId, Long projectId) {
// 找到第一层的SQL变量,递归替换
String sqlExp = sqlDetail.getSqlExp();
Long connectId = sqlDetail.getPoolId();
......@@ -111,6 +112,7 @@ public class SqlExpActuator implements Actuator {
* @return 变量递归解析后的值
*/
public String parseVarByName(String varNameString, Long envId, Long projectId) {
LogQueueRuntime.addNewLog(String.format("初始化即系变量,变量名=%s,环境id=%d,项目id=%d", varNameString, envId, projectId));
List<SqlRegularObject> varList = findDynamicVarList(varNameString);
if (varList.size() == 1) {
SqlRegularObject sqlReg = varList.get(0);
......@@ -152,6 +154,7 @@ public class SqlExpActuator implements Actuator {
private String parseVar(Long envId, Integer takenIndex, Long projectId, DynamicVariable dynamicVar) {
DynamicVarType varType = dynamicVar.getType();
log.info("[变量解析器] 当前解析的动态变量是: {}", JSON.toJSONString(dynamicVar));
LogQueueRuntime.addNewLog("[变量解析器] 当前解析的动态变量是: " + JSON.toJSONString(dynamicVar));
// 依据变量类型的不同调用不同的Handler
if (varType == CONSTANT_VARIABLE) {
return dynamicVar.getDetail();
......@@ -220,6 +223,7 @@ public class SqlExpActuator implements Actuator {
String.format("没有找到项目id = %d 下,name = %s的变量", projectId, sqlRegular.getVarName())));
String calculatedValue = parseVar(envId, sqlRegular.getIndex(), projectId, recVar);
log.info("[SQL执行器] 正在进行SQL变量计算 变量名: {} 计算后的替换值: {}", sqlRegular.getVarName(), calculatedValue);
LogQueueRuntime.addNewLog(String.format("[SQL执行器] 正在进行SQL变量计算 变量名: %s 计算后的替换值: %s", sqlRegular.getVarName(), calculatedValue));
sqlExp = sqlExp.replaceAll(String.format(REPLACE_VAR_EXP, sqlRegular.getVarName()), calculatedValue);
dynamicVar.getSqlExpDetail().setSqlExp(sqlExp);
}
......@@ -269,6 +273,7 @@ public class SqlExpActuator implements Actuator {
if (dynamicVar.getType() == SQL_VARIABLE && findDynamicVarList(sqlExp).size() == 0) {
// 切换数据源,执行SQL,获取数值
Set<String> dataSources = dataSourceService.switchDataSource(dataSourceDTO);
LogQueueRuntime.addNewLog(String.format("当前执行的SQL语句: %s, 使用的数据源: %s", sqlExp, dataSourceDTO));
log.info("当前存在的数据源 {}", dataSources);
List<Map<String, Object>> resultMap = jdbcTemplate.queryForList(sqlExp);
dataSourceService.switchMainDataSource();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论