fix(接口测试): 修复同名数据源执行过程产生大量错误日志问题

--bug=1016451 --user=赵勇 [接口测试]github#17539我把metersphere的接口自动化中的50个场景导入到一个新场景中运行时控制台报错。这些场景单独运行都是没问题的,就是导入到一个新的场景中控制台就报这个错了,并且运行时也有大量报错了 https://www.tapd.cn/55049933/s/1306709
This commit is contained in:
fit2-zhao 2022-11-28 17:22:16 +08:00 committed by fit2-zhao
parent d42023a732
commit 0793e08946
4 changed files with 30 additions and 20 deletions

View File

@ -801,9 +801,11 @@ public class ElementUtil {
} }
} }
List<String> finalDataName = dataName; List<String> finalDataName = dataName;
List<DatabaseConfig> collect = envConfig.getDatabaseConfigs().stream().filter(DatabaseConfig -> DatabaseConfig.getName().equals(finalDataName.get(0))).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(dataName)) {
if (CollectionUtils.isNotEmpty(collect)) { List<DatabaseConfig> collect = envConfig.getDatabaseConfigs().stream().filter(DatabaseConfig -> DatabaseConfig.getName().equals(finalDataName.get(0))).collect(Collectors.toList());
return collect.get(0); if (CollectionUtils.isNotEmpty(collect)) {
return collect.get(0);
}
} }
} catch (Exception e) { } catch (Exception e) {
LogUtil.error(e); LogUtil.error(e);
@ -811,4 +813,7 @@ public class ElementUtil {
return null; return null;
} }
public static String getDataSourceName(String name) {
return StringUtils.join(name, "-", UUID.randomUUID().toString());
}
} }

View File

@ -146,8 +146,9 @@ public class MsJDBCPostProcessor extends MsTestElement {
MSException.throwException(StringUtils.isNotEmpty(this.getName()) ? this.getName() + "" + message : message); MSException.throwException(StringUtils.isNotEmpty(this.getName()) ? this.getName() + "" + message : message);
} }
} }
final HashTree samplerHashTree = tree.add(jdbcPostProcessor(config)); JDBCPostProcessor jdbcPostProcessor = jdbcPostProcessor(config);
tree.add(jdbcDataSource()); final HashTree samplerHashTree = tree.add(jdbcPostProcessor);
tree.add(jdbcDataSource(jdbcPostProcessor.getDataSource()));
Arguments arguments = arguments(StringUtils.isNotEmpty(this.getName()) ? this.getName() : "Arguments", this.getVariables()); Arguments arguments = arguments(StringUtils.isNotEmpty(this.getName()) ? this.getName() : "Arguments", this.getVariables());
if (arguments != null) { if (arguments != null) {
tree.add(arguments); tree.add(arguments);
@ -260,7 +261,8 @@ public class MsJDBCPostProcessor extends MsTestElement {
ElementUtil.setBaseParams(jdbcPostProcessor, this.getParent(), config, this.getId(), this.getIndex()); ElementUtil.setBaseParams(jdbcPostProcessor, this.getParent(), config, this.getId(), this.getIndex());
// request.getDataSource() 是ID需要转换为Name // request.getDataSource() 是ID需要转换为Name
jdbcPostProcessor.setProperty("dataSource", this.dataSource.getName()); jdbcPostProcessor.setDataSource(ElementUtil.getDataSourceName(this.dataSource.getName()));
jdbcPostProcessor.setProperty("dataSource", jdbcPostProcessor.getDataSource());
jdbcPostProcessor.setProperty("query", this.getQuery()); jdbcPostProcessor.setProperty("query", this.getQuery());
jdbcPostProcessor.setProperty("queryTimeout", String.valueOf(this.getQueryTimeout())); jdbcPostProcessor.setProperty("queryTimeout", String.valueOf(this.getQueryTimeout()));
jdbcPostProcessor.setProperty("resultVariable", this.getResultVariable()); jdbcPostProcessor.setProperty("resultVariable", this.getResultVariable());
@ -270,7 +272,7 @@ public class MsJDBCPostProcessor extends MsTestElement {
return jdbcPostProcessor; return jdbcPostProcessor;
} }
private DataSourceElement jdbcDataSource() { private DataSourceElement jdbcDataSource(String name) {
DataSourceElement dataSourceElement = new DataSourceElement(); DataSourceElement dataSourceElement = new DataSourceElement();
dataSourceElement.setEnabled(true); dataSourceElement.setEnabled(true);
dataSourceElement.setName(this.getName() + " JDBCDataSource"); dataSourceElement.setName(this.getName() + " JDBCDataSource");
@ -279,7 +281,7 @@ public class MsJDBCPostProcessor extends MsTestElement {
dataSourceElement.setProperty("autocommit", true); dataSourceElement.setProperty("autocommit", true);
dataSourceElement.setProperty("keepAlive", true); dataSourceElement.setProperty("keepAlive", true);
dataSourceElement.setProperty("preinit", false); dataSourceElement.setProperty("preinit", false);
dataSourceElement.setProperty("dataSource", dataSource.getName()); dataSourceElement.setProperty("dataSource", name);
dataSourceElement.setProperty("dbUrl", dataSource.getDbUrl()); dataSourceElement.setProperty("dbUrl", dataSource.getDbUrl());
dataSourceElement.setProperty("driver", dataSource.getDriver()); dataSourceElement.setProperty("driver", dataSource.getDriver());
dataSourceElement.setProperty("username", dataSource.getUsername()); dataSourceElement.setProperty("username", dataSource.getUsername());

View File

@ -146,8 +146,9 @@ public class MsJDBCPreProcessor extends MsTestElement {
MSException.throwException(StringUtils.isNotEmpty(this.getName()) ? this.getName() + "" + message : message); MSException.throwException(StringUtils.isNotEmpty(this.getName()) ? this.getName() + "" + message : message);
} }
} }
final HashTree samplerHashTree = tree.add(jdbcPreProcessor(config)); JDBCPreProcessor preProcessor = jdbcPreProcessor(config);
tree.add(jdbcDataSource()); final HashTree samplerHashTree = tree.add(preProcessor);
tree.add(jdbcDataSource(preProcessor.getDataSource()));
Arguments arguments = arguments(StringUtils.isNotEmpty(this.getName()) ? this.getName() : "Arguments", this.getVariables()); Arguments arguments = arguments(StringUtils.isNotEmpty(this.getName()) ? this.getName() : "Arguments", this.getVariables());
if (arguments != null) { if (arguments != null) {
tree.add(arguments); tree.add(arguments);
@ -259,8 +260,8 @@ public class MsJDBCPreProcessor extends MsTestElement {
jdbcPreProcessor.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("TestBeanGUI")); jdbcPreProcessor.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("TestBeanGUI"));
ElementUtil.setBaseParams(jdbcPreProcessor, this.getParent(), config, this.getId(), this.getIndex()); ElementUtil.setBaseParams(jdbcPreProcessor, this.getParent(), config, this.getId(), this.getIndex());
jdbcPreProcessor.setDataSource(ElementUtil.getDataSourceName(this.dataSource.getName()));
jdbcPreProcessor.setProperty("dataSource", this.dataSource.getName()); jdbcPreProcessor.setProperty("dataSource", jdbcPreProcessor.getDataSource());
jdbcPreProcessor.setProperty("query", this.getQuery()); jdbcPreProcessor.setProperty("query", this.getQuery());
jdbcPreProcessor.setProperty("queryTimeout", String.valueOf(this.getQueryTimeout())); jdbcPreProcessor.setProperty("queryTimeout", String.valueOf(this.getQueryTimeout()));
jdbcPreProcessor.setProperty("resultVariable", this.getResultVariable()); jdbcPreProcessor.setProperty("resultVariable", this.getResultVariable());
@ -270,7 +271,7 @@ public class MsJDBCPreProcessor extends MsTestElement {
return jdbcPreProcessor; return jdbcPreProcessor;
} }
private DataSourceElement jdbcDataSource() { private DataSourceElement jdbcDataSource(String sourceName) {
DataSourceElement dataSourceElement = new DataSourceElement(); DataSourceElement dataSourceElement = new DataSourceElement();
dataSourceElement.setEnabled(true); dataSourceElement.setEnabled(true);
dataSourceElement.setName(this.getName() + " JDBCDataSource"); dataSourceElement.setName(this.getName() + " JDBCDataSource");
@ -279,7 +280,7 @@ public class MsJDBCPreProcessor extends MsTestElement {
dataSourceElement.setProperty("autocommit", true); dataSourceElement.setProperty("autocommit", true);
dataSourceElement.setProperty("keepAlive", true); dataSourceElement.setProperty("keepAlive", true);
dataSourceElement.setProperty("preinit", false); dataSourceElement.setProperty("preinit", false);
dataSourceElement.setProperty("dataSource", dataSource.getName()); dataSourceElement.setProperty("dataSource", sourceName);
dataSourceElement.setProperty("dbUrl", dataSource.getDbUrl()); dataSourceElement.setProperty("dbUrl", dataSource.getDbUrl());
dataSourceElement.setProperty("driver", dataSource.getDriver()); dataSourceElement.setProperty("driver", dataSource.getDriver());
dataSourceElement.setProperty("username", dataSource.getUsername()); dataSourceElement.setProperty("username", dataSource.getUsername());

View File

@ -161,10 +161,11 @@ public class MsJDBCSampler extends MsTestElement {
String message = "数据源为空请选择数据源"; String message = "数据源为空请选择数据源";
MSException.throwException(StringUtils.isNotEmpty(this.getName()) ? this.getName() + "" + message : message); MSException.throwException(StringUtils.isNotEmpty(this.getName()) ? this.getName() + "" + message : message);
} }
final HashTree samplerHashTree = tree.add(jdbcSampler(config)); JDBCSampler jdbcSampler = jdbcSampler(config);
tree.add(jdbcDataSource()); final HashTree samplerHashTree = tree.add(jdbcSampler);
tree.add(jdbcDataSource(jdbcSampler.getDataSource()));
Arguments arguments = arguments(StringUtils.isNotEmpty(this.getName()) ? this.getName() : "Arguments", this.getVariables()); Arguments arguments = arguments(StringUtils.isNotEmpty(this.getName()) ? this.getName() : "Arguments", this.getVariables());
if (arguments != null) { if (arguments != null && !arguments.getArguments().isEmpty()) {
tree.add(arguments); tree.add(arguments);
} }
// 环境通用请求头 // 环境通用请求头
@ -332,7 +333,8 @@ public class MsJDBCSampler extends MsTestElement {
sampler.setProperty(TestElement.TEST_CLASS, JDBCSampler.class.getName()); sampler.setProperty(TestElement.TEST_CLASS, JDBCSampler.class.getName());
sampler.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("TestBeanGUI")); sampler.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("TestBeanGUI"));
ElementUtil.setBaseParams(sampler, this.getParent(), config, this.getId(), this.getIndex()); ElementUtil.setBaseParams(sampler, this.getParent(), config, this.getId(), this.getIndex());
sampler.setProperty("dataSource", this.dataSource.getName()); sampler.setDataSource(ElementUtil.getDataSourceName(this.dataSource.getName()));
sampler.setProperty("dataSource", sampler.getDataSource());
sampler.setProperty("query", this.getQuery()); sampler.setProperty("query", this.getQuery());
sampler.setProperty("queryTimeout", String.valueOf(this.getQueryTimeout())); sampler.setProperty("queryTimeout", String.valueOf(this.getQueryTimeout()));
sampler.setProperty("resultVariable", this.getResultVariable()); sampler.setProperty("resultVariable", this.getResultVariable());
@ -342,7 +344,7 @@ public class MsJDBCSampler extends MsTestElement {
return sampler; return sampler;
} }
private DataSourceElement jdbcDataSource() { private DataSourceElement jdbcDataSource(String dataSourceName) {
DataSourceElement dataSourceElement = new DataSourceElement(); DataSourceElement dataSourceElement = new DataSourceElement();
dataSourceElement.setEnabled(true); dataSourceElement.setEnabled(true);
dataSourceElement.setName(this.getName() + " JDBCDataSource"); dataSourceElement.setName(this.getName() + " JDBCDataSource");
@ -351,7 +353,7 @@ public class MsJDBCSampler extends MsTestElement {
dataSourceElement.setProperty("autocommit", true); dataSourceElement.setProperty("autocommit", true);
dataSourceElement.setProperty("keepAlive", true); dataSourceElement.setProperty("keepAlive", true);
dataSourceElement.setProperty("preinit", false); dataSourceElement.setProperty("preinit", false);
dataSourceElement.setProperty("dataSource", dataSource.getName()); dataSourceElement.setProperty("dataSource", dataSourceName);
dataSourceElement.setProperty("dbUrl", dataSource.getDbUrl()); dataSourceElement.setProperty("dbUrl", dataSource.getDbUrl());
dataSourceElement.setProperty("driver", dataSource.getDriver()); dataSourceElement.setProperty("driver", dataSource.getDriver());
dataSourceElement.setProperty("username", dataSource.getUsername()); dataSourceElement.setProperty("username", dataSource.getUsername());