fix(接口定义): 修复本地执行不显示资源池的缺陷

This commit is contained in:
wxg0103 2023-01-10 10:34:48 +08:00 committed by wxg0103
parent 2faa8533a2
commit 26936d760d
5 changed files with 23 additions and 12 deletions

View File

@ -5,7 +5,7 @@ import lombok.Setter;
@Setter @Setter
@Getter @Getter
public class ApiReportEnvConfigUtil { public class ApiReportEnvConfigDTO {
private String envName; private String envName;

View File

@ -11,7 +11,10 @@ import io.metersphere.commons.config.KafkaConfig;
import io.metersphere.commons.constants.ApiRunMode; import io.metersphere.commons.constants.ApiRunMode;
import io.metersphere.commons.constants.ExtendedParameter; import io.metersphere.commons.constants.ExtendedParameter;
import io.metersphere.commons.exception.MSException; import io.metersphere.commons.exception.MSException;
import io.metersphere.commons.utils.*; import io.metersphere.commons.utils.FixedCapacityUtil;
import io.metersphere.commons.utils.GenerateHashTreeUtil;
import io.metersphere.commons.utils.HashTreeUtil;
import io.metersphere.commons.utils.JSON;
import io.metersphere.config.JmeterProperties; import io.metersphere.config.JmeterProperties;
import io.metersphere.constants.BackendListenerConstants; import io.metersphere.constants.BackendListenerConstants;
import io.metersphere.constants.RunModeConstants; import io.metersphere.constants.RunModeConstants;
@ -21,9 +24,9 @@ import io.metersphere.dto.RunModeConfigDTO;
import io.metersphere.engine.Engine; import io.metersphere.engine.Engine;
import io.metersphere.jmeter.JMeterBase; import io.metersphere.jmeter.JMeterBase;
import io.metersphere.jmeter.LocalRunner; import io.metersphere.jmeter.LocalRunner;
import io.metersphere.service.ApiPoolDebugService;
import io.metersphere.service.RemakeReportService; import io.metersphere.service.RemakeReportService;
import io.metersphere.utils.LoggerUtil; import io.metersphere.utils.LoggerUtil;
import io.metersphere.service.ApiPoolDebugService;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils; import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
@ -91,12 +94,13 @@ public class JMeterService {
* @param testId * @param testId
* @param testPlan * @param testPlan
*/ */
private void addDebugListener(String testId, HashTree testPlan) { private void addDebugListener(String testId, HashTree testPlan, String runMode) {
MsDebugListener resultCollector = new MsDebugListener(); MsDebugListener resultCollector = new MsDebugListener();
resultCollector.setName(testId); resultCollector.setName(testId);
resultCollector.setProperty(TestElement.TEST_CLASS, MsDebugListener.class.getName()); resultCollector.setProperty(TestElement.TEST_CLASS, MsDebugListener.class.getName());
resultCollector.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("ViewResultsFullVisualizer")); resultCollector.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("ViewResultsFullVisualizer"));
resultCollector.setEnabled(true); resultCollector.setEnabled(true);
resultCollector.setRunMode(runMode);
// 添加DEBUG标示 // 添加DEBUG标示
HashTree test = ArrayUtils.isNotEmpty(testPlan.getArray()) ? testPlan.getTree(testPlan.getArray()[0]) : null; HashTree test = ArrayUtils.isNotEmpty(testPlan.getArray()) ? testPlan.getTree(testPlan.getArray()[0]) : null;
@ -127,12 +131,12 @@ public class JMeterService {
&& request.getExtendedParameters().containsKey(ExtendedParameter.SYNC_STATUS) && request.getExtendedParameters().containsKey(ExtendedParameter.SYNC_STATUS)
&& (Boolean) request.getExtendedParameters().get(ExtendedParameter.SYNC_STATUS)) { && (Boolean) request.getExtendedParameters().get(ExtendedParameter.SYNC_STATUS)) {
LoggerUtil.debug("为请求 [ " + request.getReportId() + " ] 添加Debug Listener"); LoggerUtil.debug("为请求 [ " + request.getReportId() + " ] 添加Debug Listener");
addDebugListener(request.getReportId(), request.getHashTree()); addDebugListener(request.getReportId(), request.getHashTree(), request.getRunMode());
} }
if (request.isDebug()) { if (request.isDebug()) {
LoggerUtil.debug("为请求 [ " + request.getReportId() + " ] 添加Debug Listener"); LoggerUtil.debug("为请求 [ " + request.getReportId() + " ] 添加Debug Listener");
addDebugListener(request.getReportId(), request.getHashTree()); addDebugListener(request.getReportId(), request.getHashTree(), request.getRunMode());
} else { } else {
LoggerUtil.debug("为请求 [ " + request.getReportId() + " ] 添加同步接收结果 Listener"); LoggerUtil.debug("为请求 [ " + request.getReportId() + " ] 添加同步接收结果 Listener");
JMeterBase.addBackendListener(request, request.getHashTree(), MsApiBackendListener.class.getCanonicalName()); JMeterBase.addBackendListener(request, request.getHashTree(), MsApiBackendListener.class.getCanonicalName());

View File

@ -54,6 +54,8 @@ public class MsDebugListener extends AbstractListenerElement implements SampleLi
public static final String TEST_END = "MS_TEST_END"; public static final String TEST_END = "MS_TEST_END";
private String runMode;
@Override @Override
public Object clone() { public Object clone() {
MsDebugListener clone = (MsDebugListener) super.clone(); MsDebugListener clone = (MsDebugListener) super.clone();
@ -64,6 +66,10 @@ public class MsDebugListener extends AbstractListenerElement implements SampleLi
return getPropertyAsBoolean(ERROR_LOGGING); return getPropertyAsBoolean(ERROR_LOGGING);
} }
public void setRunMode(String runMode) {
this.runMode = runMode;
}
public final void setSuccessOnlyLogging(boolean value) { public final void setSuccessOnlyLogging(boolean value) {
if (value) { if (value) {
setProperty(new BooleanProperty(SUCCESS_ONLY_LOGGING, true)); setProperty(new BooleanProperty(SUCCESS_ONLY_LOGGING, true));
@ -151,6 +157,7 @@ public class MsDebugListener extends AbstractListenerElement implements SampleLi
dto.setExecEnd(false); dto.setExecEnd(false);
dto.setReportId("send." + this.getName()); dto.setReportId("send." + this.getName());
dto.setToReport(this.getName()); dto.setToReport(this.getName());
dto.setRunMode(runMode);
String console = FixedCapacityUtil.getJmeterLogger(this.getName(), false); String console = FixedCapacityUtil.getJmeterLogger(this.getName(), false);
ApiDefinitionEnvService apiDefinitionEnvService = CommonBeanFactory.getBean(ApiDefinitionEnvService.class); ApiDefinitionEnvService apiDefinitionEnvService = CommonBeanFactory.getBean(ApiDefinitionEnvService.class);

View File

@ -1,6 +1,6 @@
package io.metersphere.service.definition; package io.metersphere.service.definition;
import io.metersphere.api.dto.ApiReportEnvConfigUtil; import io.metersphere.api.dto.ApiReportEnvConfigDTO;
import io.metersphere.api.dto.MsgDTO; import io.metersphere.api.dto.MsgDTO;
import io.metersphere.api.dto.RequestResultExpandDTO; import io.metersphere.api.dto.RequestResultExpandDTO;
import io.metersphere.base.domain.ApiDefinitionEnv; import io.metersphere.base.domain.ApiDefinitionEnv;
@ -80,7 +80,7 @@ public class ApiDefinitionEnvService {
if (StringUtils.isNotBlank(baseResult.getThreadName())) { if (StringUtils.isNotBlank(baseResult.getThreadName())) {
ApiDefinitionExecResultWithBLOBs result = apiDefinitionExecResultMapper.selectByPrimaryKey(baseResult.getThreadName()); ApiDefinitionExecResultWithBLOBs result = apiDefinitionExecResultMapper.selectByPrimaryKey(baseResult.getThreadName());
if (result != null && StringUtils.isNotEmpty(result.getEnvConfig())) { if (result != null && StringUtils.isNotEmpty(result.getEnvConfig())) {
ApiReportEnvConfigUtil envConfig = apiDefinitionService.getEnvNameByEnvConfig(result.getProjectId(), result.getEnvConfig()); ApiReportEnvConfigDTO envConfig = apiDefinitionService.getEnvNameByEnvConfig(result.getProjectId(), result.getEnvConfig());
if (envConfig != null) { if (envConfig != null) {
expandDTO.setEnvName(envConfig.getEnvName()); expandDTO.setEnvName(envConfig.getEnvName());
expandDTO.setPoolName(envConfig.getResourcePoolName()); expandDTO.setPoolName(envConfig.getResourcePoolName());
@ -93,7 +93,7 @@ public class ApiDefinitionEnvService {
if (StringUtils.isNotBlank(dto.getToReport())) { if (StringUtils.isNotBlank(dto.getToReport())) {
ApiDefinitionExecResultWithBLOBs result = apiDefinitionExecResultMapper.selectByPrimaryKey(dto.getToReport()); ApiDefinitionExecResultWithBLOBs result = apiDefinitionExecResultMapper.selectByPrimaryKey(dto.getToReport());
if (result != null && StringUtils.isNotEmpty(result.getEnvConfig())) { if (result != null && StringUtils.isNotEmpty(result.getEnvConfig())) {
ApiReportEnvConfigUtil envConfig = apiDefinitionService.getEnvNameByEnvConfig(result.getProjectId(), result.getEnvConfig()); ApiReportEnvConfigDTO envConfig = apiDefinitionService.getEnvNameByEnvConfig(result.getProjectId(), result.getEnvConfig());
if (envConfig != null) { if (envConfig != null) {
Map map = JSON.parseObject(dto.getContent().substring(7), Map.class); Map map = JSON.parseObject(dto.getContent().substring(7), Map.class);
map.put("envName", envConfig.getEnvName()); map.put("envName", envConfig.getEnvName());

View File

@ -960,7 +960,7 @@ public class ApiDefinitionService {
if (StringUtils.isNotBlank(contentStr)) { if (StringUtils.isNotBlank(contentStr)) {
JSONObject content = JSONUtil.parseObject(contentStr); JSONObject content = JSONUtil.parseObject(contentStr);
if (StringUtils.isNotEmpty(result.getEnvConfig())) { if (StringUtils.isNotEmpty(result.getEnvConfig())) {
ApiReportEnvConfigUtil envNameByEnvConfig = this.getEnvNameByEnvConfig(result.getProjectId(), result.getEnvConfig()); ApiReportEnvConfigDTO envNameByEnvConfig = this.getEnvNameByEnvConfig(result.getProjectId(), result.getEnvConfig());
if (envNameByEnvConfig != null) { if (envNameByEnvConfig != null) {
content.put("envName", envNameByEnvConfig.getEnvName()); content.put("envName", envNameByEnvConfig.getEnvName());
content.put("poolName", envNameByEnvConfig.getResourcePoolName()); content.put("poolName", envNameByEnvConfig.getResourcePoolName());
@ -975,8 +975,8 @@ public class ApiDefinitionService {
return reportResult; return reportResult;
} }
public ApiReportEnvConfigUtil getEnvNameByEnvConfig(String projectId, String envConfig) { public ApiReportEnvConfigDTO getEnvNameByEnvConfig(String projectId, String envConfig) {
ApiReportEnvConfigUtil apiReportEnvConfig = new ApiReportEnvConfigUtil(); ApiReportEnvConfigDTO apiReportEnvConfig = new ApiReportEnvConfigDTO();
RunModeConfigDTO runModeConfigDTO = null; RunModeConfigDTO runModeConfigDTO = null;
try { try {
runModeConfigDTO = JSON.parseObject(envConfig, RunModeConfigDTO.class); runModeConfigDTO = JSON.parseObject(envConfig, RunModeConfigDTO.class);