feat(接口自动化): 完成 jmx 导出功能
This commit is contained in:
parent
cb1b9b1d67
commit
42a9c3b1de
|
@ -10,7 +10,6 @@ import io.metersphere.api.dto.automation.ImportPoolsDTO;
|
||||||
import io.metersphere.api.dto.definition.request.MsScenario;
|
import io.metersphere.api.dto.definition.request.MsScenario;
|
||||||
import io.metersphere.api.dto.definition.request.MsTestElement;
|
import io.metersphere.api.dto.definition.request.MsTestElement;
|
||||||
import io.metersphere.api.dto.definition.request.assertions.*;
|
import io.metersphere.api.dto.definition.request.assertions.*;
|
||||||
import io.metersphere.api.dto.definition.request.controller.MsIfController;
|
|
||||||
import io.metersphere.api.dto.definition.request.controller.MsLoopController;
|
import io.metersphere.api.dto.definition.request.controller.MsLoopController;
|
||||||
import io.metersphere.api.dto.definition.request.controller.loop.CountController;
|
import io.metersphere.api.dto.definition.request.controller.loop.CountController;
|
||||||
import io.metersphere.api.dto.definition.request.controller.loop.MsForEachController;
|
import io.metersphere.api.dto.definition.request.controller.loop.MsForEachController;
|
||||||
|
@ -51,7 +50,6 @@ import org.apache.commons.collections.CollectionUtils;
|
||||||
import org.apache.jmeter.assertions.*;
|
import org.apache.jmeter.assertions.*;
|
||||||
import org.apache.jmeter.config.ConfigTestElement;
|
import org.apache.jmeter.config.ConfigTestElement;
|
||||||
import org.apache.jmeter.control.ForeachController;
|
import org.apache.jmeter.control.ForeachController;
|
||||||
import org.apache.jmeter.control.IfController;
|
|
||||||
import org.apache.jmeter.control.LoopController;
|
import org.apache.jmeter.control.LoopController;
|
||||||
import org.apache.jmeter.control.WhileController;
|
import org.apache.jmeter.control.WhileController;
|
||||||
import org.apache.jmeter.extractor.JSR223PostProcessor;
|
import org.apache.jmeter.extractor.JSR223PostProcessor;
|
||||||
|
@ -568,12 +566,12 @@ public class MsJmeterParser extends ScenarioImportAbstractParser {
|
||||||
BeanUtils.copyBean(elementNode, key);
|
BeanUtils.copyBean(elementNode, key);
|
||||||
elementNode.setType("ConstantTimer");
|
elementNode.setType("ConstantTimer");
|
||||||
}
|
}
|
||||||
// IF条件控制器
|
// IF条件控制器,这里平台方式和jmeter 不同,暂时不处理
|
||||||
else if (key instanceof IfController) {
|
// else if (key instanceof IfController) {
|
||||||
elementNode = new MsIfController();
|
// elementNode = new MsIfController();
|
||||||
BeanUtils.copyBean(elementNode, key);
|
// BeanUtils.copyBean(elementNode, key);
|
||||||
elementNode.setType("IfController");
|
// elementNode.setType("IfController");
|
||||||
}
|
// }
|
||||||
// 次数循环控制器
|
// 次数循环控制器
|
||||||
else if (key instanceof LoopController) {
|
else if (key instanceof LoopController) {
|
||||||
elementNode = new MsLoopController();
|
elementNode = new MsLoopController();
|
||||||
|
|
|
@ -66,9 +66,6 @@ public class MsScenario extends MsTestElement {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
||||||
if (!this.isEnable()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (this.getReferenced() != null && this.getReferenced().equals("Deleted")) {
|
if (this.getReferenced() != null && this.getReferenced().equals("Deleted")) {
|
||||||
return;
|
return;
|
||||||
} else if (this.getReferenced() != null && this.getReferenced().equals("REF")) {
|
} else if (this.getReferenced() != null && this.getReferenced().equals("REF")) {
|
||||||
|
@ -103,6 +100,9 @@ public class MsScenario extends MsTestElement {
|
||||||
this.addCsvDataSet(tree, variables);
|
this.addCsvDataSet(tree, variables);
|
||||||
this.addCounter(tree, variables);
|
this.addCounter(tree, variables);
|
||||||
this.addRandom(tree, variables);
|
this.addRandom(tree, variables);
|
||||||
|
if (CollectionUtils.isNotEmpty(this.headers)) {
|
||||||
|
setHeader(tree, this.headers);
|
||||||
|
}
|
||||||
if (CollectionUtils.isNotEmpty(hashTree)) {
|
if (CollectionUtils.isNotEmpty(hashTree)) {
|
||||||
for (MsTestElement el : hashTree) {
|
for (MsTestElement el : hashTree) {
|
||||||
// 给所有孩子加一个父亲标志
|
// 给所有孩子加一个父亲标志
|
||||||
|
@ -110,9 +110,6 @@ public class MsScenario extends MsTestElement {
|
||||||
el.toHashTree(tree, el.getHashTree(), config);
|
el.toHashTree(tree, el.getHashTree(), config);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (CollectionUtils.isNotEmpty(this.headers)) {
|
|
||||||
setHeader(tree, this.headers);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setOldVariables(List<KeyValue> oldVariables) {
|
public void setOldVariables(List<KeyValue> oldVariables) {
|
||||||
|
|
|
@ -45,11 +45,11 @@ public class MsThreadGroup extends MsTestElement {
|
||||||
loopController.setName("LoopController");
|
loopController.setName("LoopController");
|
||||||
loopController.setProperty(TestElement.TEST_CLASS, LoopController.class.getName());
|
loopController.setProperty(TestElement.TEST_CLASS, LoopController.class.getName());
|
||||||
loopController.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("LoopControlPanel"));
|
loopController.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("LoopControlPanel"));
|
||||||
loopController.setEnabled(true);
|
loopController.setEnabled(this.isEnable());
|
||||||
loopController.setLoops(1);
|
loopController.setLoops(1);
|
||||||
|
|
||||||
ThreadGroup threadGroup = new ThreadGroup();
|
ThreadGroup threadGroup = new ThreadGroup();
|
||||||
threadGroup.setEnabled(true);
|
threadGroup.setEnabled(this.isEnable());
|
||||||
threadGroup.setName(this.getName());
|
threadGroup.setName(this.getName());
|
||||||
threadGroup.setProperty(TestElement.TEST_CLASS, ThreadGroup.class.getName());
|
threadGroup.setProperty(TestElement.TEST_CLASS, ThreadGroup.class.getName());
|
||||||
threadGroup.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("ThreadGroupGui"));
|
threadGroup.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("ThreadGroupGui"));
|
||||||
|
|
|
@ -8,15 +8,27 @@ import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class ParameterConfig {
|
public class ParameterConfig {
|
||||||
// 环境配置
|
/**
|
||||||
|
* 环境配置
|
||||||
|
*/
|
||||||
private EnvironmentConfig config;
|
private EnvironmentConfig config;
|
||||||
// 公共场景参数
|
/**
|
||||||
|
* 公共场景参数
|
||||||
|
*/
|
||||||
private List<ScenarioVariable> variables;
|
private List<ScenarioVariable> variables;
|
||||||
// 公共Cookie
|
/**
|
||||||
|
* 公共Cookie
|
||||||
|
*/
|
||||||
private boolean enableCookieShare;
|
private boolean enableCookieShare;
|
||||||
// 步骤
|
/**
|
||||||
|
* 步骤
|
||||||
|
*/
|
||||||
private String step;
|
private String step;
|
||||||
|
|
||||||
private String stepType;
|
private String stepType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否是导入/导出操作
|
||||||
|
*/
|
||||||
|
private boolean isOperating;
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,10 +27,8 @@ public class MsAssertions extends MsTestElement {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
||||||
if (this.isEnable()) {
|
|
||||||
addAssertions(tree);
|
addAssertions(tree);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private void addAssertions(HashTree hashTree) {
|
private void addAssertions(HashTree hashTree) {
|
||||||
if (CollectionUtils.isNotEmpty(this.getRegex())) {
|
if (CollectionUtils.isNotEmpty(this.getRegex())) {
|
||||||
|
@ -64,7 +62,7 @@ public class MsAssertions extends MsTestElement {
|
||||||
|
|
||||||
private ResponseAssertion responseAssertion(MsAssertionRegex assertionRegex) {
|
private ResponseAssertion responseAssertion(MsAssertionRegex assertionRegex) {
|
||||||
ResponseAssertion assertion = new ResponseAssertion();
|
ResponseAssertion assertion = new ResponseAssertion();
|
||||||
assertion.setEnabled(true);
|
assertion.setEnabled(this.isEnable());
|
||||||
assertion.setName(assertionRegex.getDescription());
|
assertion.setName(assertionRegex.getDescription());
|
||||||
assertion.setProperty(TestElement.TEST_CLASS, ResponseAssertion.class.getName());
|
assertion.setProperty(TestElement.TEST_CLASS, ResponseAssertion.class.getName());
|
||||||
assertion.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("AssertionGui"));
|
assertion.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("AssertionGui"));
|
||||||
|
@ -89,7 +87,7 @@ public class MsAssertions extends MsTestElement {
|
||||||
|
|
||||||
private JSONPathAssertion jsonPathAssertion(MsAssertionJsonPath assertionJsonPath) {
|
private JSONPathAssertion jsonPathAssertion(MsAssertionJsonPath assertionJsonPath) {
|
||||||
JSONPathAssertion assertion = new JSONPathAssertion();
|
JSONPathAssertion assertion = new JSONPathAssertion();
|
||||||
assertion.setEnabled(true);
|
assertion.setEnabled(this.isEnable());
|
||||||
assertion.setName(StringUtils.isEmpty(assertionJsonPath.getDescription()) ? "JSONPathAssertion" : assertionJsonPath.getDescription());
|
assertion.setName(StringUtils.isEmpty(assertionJsonPath.getDescription()) ? "JSONPathAssertion" : assertionJsonPath.getDescription());
|
||||||
assertion.setProperty(TestElement.TEST_CLASS, JSONPathAssertion.class.getName());
|
assertion.setProperty(TestElement.TEST_CLASS, JSONPathAssertion.class.getName());
|
||||||
assertion.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("JSONPathAssertionGui"));
|
assertion.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("JSONPathAssertionGui"));
|
||||||
|
@ -104,7 +102,7 @@ public class MsAssertions extends MsTestElement {
|
||||||
|
|
||||||
private XPath2Assertion xPath2Assertion(MsAssertionXPath2 assertionXPath2) {
|
private XPath2Assertion xPath2Assertion(MsAssertionXPath2 assertionXPath2) {
|
||||||
XPath2Assertion assertion = new XPath2Assertion();
|
XPath2Assertion assertion = new XPath2Assertion();
|
||||||
assertion.setEnabled(true);
|
assertion.setEnabled(this.isEnable());
|
||||||
assertion.setName(StringUtils.isEmpty(assertionXPath2.getExpression()) ? "XPath2Assertion" : assertionXPath2.getExpression());
|
assertion.setName(StringUtils.isEmpty(assertionXPath2.getExpression()) ? "XPath2Assertion" : assertionXPath2.getExpression());
|
||||||
assertion.setProperty(TestElement.TEST_CLASS, XPath2Assertion.class.getName());
|
assertion.setProperty(TestElement.TEST_CLASS, XPath2Assertion.class.getName());
|
||||||
assertion.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("XPath2AssertionGui"));
|
assertion.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("XPath2AssertionGui"));
|
||||||
|
@ -115,7 +113,7 @@ public class MsAssertions extends MsTestElement {
|
||||||
|
|
||||||
private DurationAssertion durationAssertion(MsAssertionDuration assertionDuration) {
|
private DurationAssertion durationAssertion(MsAssertionDuration assertionDuration) {
|
||||||
DurationAssertion assertion = new DurationAssertion();
|
DurationAssertion assertion = new DurationAssertion();
|
||||||
assertion.setEnabled(true);
|
assertion.setEnabled(this.isEnable());
|
||||||
assertion.setName("Response In Time: " + assertionDuration.getValue());
|
assertion.setName("Response In Time: " + assertionDuration.getValue());
|
||||||
assertion.setProperty(TestElement.TEST_CLASS, DurationAssertion.class.getName());
|
assertion.setProperty(TestElement.TEST_CLASS, DurationAssertion.class.getName());
|
||||||
assertion.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("DurationAssertionGui"));
|
assertion.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("DurationAssertionGui"));
|
||||||
|
@ -125,7 +123,7 @@ public class MsAssertions extends MsTestElement {
|
||||||
|
|
||||||
private JSR223Assertion jsr223Assertion(MsAssertionJSR223 assertionJSR223) {
|
private JSR223Assertion jsr223Assertion(MsAssertionJSR223 assertionJSR223) {
|
||||||
JSR223Assertion assertion = new JSR223Assertion();
|
JSR223Assertion assertion = new JSR223Assertion();
|
||||||
assertion.setEnabled(true);
|
assertion.setEnabled(this.isEnable());
|
||||||
assertion.setName(StringUtils.isEmpty(assertionJSR223.getDesc()) ? "JSR223Assertion" : assertionJSR223.getDesc());
|
assertion.setName(StringUtils.isEmpty(assertionJSR223.getDesc()) ? "JSR223Assertion" : assertionJSR223.getDesc());
|
||||||
assertion.setProperty(TestElement.TEST_CLASS, JSR223Assertion.class.getName());
|
assertion.setProperty(TestElement.TEST_CLASS, JSR223Assertion.class.getName());
|
||||||
assertion.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("TestBeanGUI"));
|
assertion.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("TestBeanGUI"));
|
||||||
|
|
|
@ -27,11 +27,8 @@ public class MsHeaderManager extends MsTestElement {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
||||||
if (!this.isEnable()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
HeaderManager headerManager = new HeaderManager();
|
HeaderManager headerManager = new HeaderManager();
|
||||||
headerManager.setEnabled(true);
|
headerManager.setEnabled(this.isEnable());
|
||||||
headerManager.setName(this.getName() + "Headers");
|
headerManager.setName(this.getName() + "Headers");
|
||||||
headerManager.setProperty(TestElement.TEST_CLASS, HeaderManager.class.getName());
|
headerManager.setProperty(TestElement.TEST_CLASS, HeaderManager.class.getName());
|
||||||
headerManager.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("HeaderPanel"));
|
headerManager.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("HeaderPanel"));
|
||||||
|
|
|
@ -26,9 +26,6 @@ public class MsIfController extends MsTestElement {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
||||||
if (!this.isEnable()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
final HashTree groupTree = tree.add(ifController());
|
final HashTree groupTree = tree.add(ifController());
|
||||||
if (CollectionUtils.isNotEmpty(hashTree)) {
|
if (CollectionUtils.isNotEmpty(hashTree)) {
|
||||||
hashTree.forEach(el -> {
|
hashTree.forEach(el -> {
|
||||||
|
@ -41,7 +38,7 @@ public class MsIfController extends MsTestElement {
|
||||||
|
|
||||||
private IfController ifController() {
|
private IfController ifController() {
|
||||||
IfController ifController = new IfController();
|
IfController ifController = new IfController();
|
||||||
ifController.setEnabled(true);
|
ifController.setEnabled(this.isEnable());
|
||||||
ifController.setName(StringUtils.isEmpty(this.getName()) ? "IfController" : this.getName());
|
ifController.setName(StringUtils.isEmpty(this.getName()) ? "IfController" : this.getName());
|
||||||
ifController.setProperty(TestElement.TEST_CLASS, IfController.class.getName());
|
ifController.setProperty(TestElement.TEST_CLASS, IfController.class.getName());
|
||||||
ifController.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("IfControllerPanel"));
|
ifController.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("IfControllerPanel"));
|
||||||
|
|
|
@ -44,9 +44,6 @@ public class MsLoopController extends MsTestElement {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
||||||
if (!this.isEnable()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (StringUtils.equals(this.loopType, LoopConstants.WHILE.name()) && this.whileController != null) {
|
if (StringUtils.equals(this.loopType, LoopConstants.WHILE.name()) && this.whileController != null) {
|
||||||
config.setStep("While 循环");
|
config.setStep("While 循环");
|
||||||
}
|
}
|
||||||
|
@ -104,7 +101,7 @@ public class MsLoopController extends MsTestElement {
|
||||||
|
|
||||||
private LoopController initLoopController() {
|
private LoopController initLoopController() {
|
||||||
LoopController loopController = new LoopController();
|
LoopController loopController = new LoopController();
|
||||||
loopController.setEnabled(true);
|
loopController.setEnabled(this.isEnable());
|
||||||
loopController.setName("LoopController");
|
loopController.setName("LoopController");
|
||||||
loopController.setProperty(TestElement.TEST_CLASS, LoopController.class.getName());
|
loopController.setProperty(TestElement.TEST_CLASS, LoopController.class.getName());
|
||||||
loopController.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("LoopControlPanel"));
|
loopController.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("LoopControlPanel"));
|
||||||
|
@ -142,7 +139,7 @@ public class MsLoopController extends MsTestElement {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
WhileController controller = new WhileController();
|
WhileController controller = new WhileController();
|
||||||
controller.setEnabled(true);
|
controller.setEnabled(this.isEnable());
|
||||||
controller.setName("WhileController");
|
controller.setName("WhileController");
|
||||||
controller.setProperty(TestElement.TEST_CLASS, WhileController.class.getName());
|
controller.setProperty(TestElement.TEST_CLASS, WhileController.class.getName());
|
||||||
controller.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("WhileControllerGui"));
|
controller.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("WhileControllerGui"));
|
||||||
|
@ -152,7 +149,7 @@ public class MsLoopController extends MsTestElement {
|
||||||
|
|
||||||
private ForeachController initForeachController() {
|
private ForeachController initForeachController() {
|
||||||
ForeachController controller = new ForeachController();
|
ForeachController controller = new ForeachController();
|
||||||
controller.setEnabled(true);
|
controller.setEnabled(this.isEnable());
|
||||||
controller.setName("ForeachController");
|
controller.setName("ForeachController");
|
||||||
controller.setProperty(TestElement.TEST_CLASS, ForeachController.class.getName());
|
controller.setProperty(TestElement.TEST_CLASS, ForeachController.class.getName());
|
||||||
controller.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("ForeachControlPanel"));
|
controller.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("ForeachControlPanel"));
|
||||||
|
@ -188,7 +185,7 @@ public class MsLoopController extends MsTestElement {
|
||||||
|
|
||||||
private ConstantTimer getCnstantTimer() {
|
private ConstantTimer getCnstantTimer() {
|
||||||
ConstantTimer constantTimer = new ConstantTimer();
|
ConstantTimer constantTimer = new ConstantTimer();
|
||||||
constantTimer.setEnabled(true);
|
constantTimer.setEnabled(this.isEnable());
|
||||||
constantTimer.setProperty(TestElement.TEST_CLASS, ConstantTimer.class.getName());
|
constantTimer.setProperty(TestElement.TEST_CLASS, ConstantTimer.class.getName());
|
||||||
constantTimer.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("ConstantTimerGui"));
|
constantTimer.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("ConstantTimerGui"));
|
||||||
if (StringUtils.equals(this.loopType, LoopConstants.WHILE.name()) && this.whileController != null) {
|
if (StringUtils.equals(this.loopType, LoopConstants.WHILE.name()) && this.whileController != null) {
|
||||||
|
|
|
@ -30,9 +30,6 @@ public class MsExtract extends MsTestElement {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
||||||
if (!this.isEnable()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
addRequestExtractors(tree);
|
addRequestExtractors(tree);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,7 +65,7 @@ public class MsExtract extends MsTestElement {
|
||||||
private RegexExtractor regexExtractor(MsExtractRegex extractRegex, StringJoiner extract) {
|
private RegexExtractor regexExtractor(MsExtractRegex extractRegex, StringJoiner extract) {
|
||||||
|
|
||||||
RegexExtractor extractor = new RegexExtractor();
|
RegexExtractor extractor = new RegexExtractor();
|
||||||
extractor.setEnabled(true);
|
extractor.setEnabled(this.isEnable());
|
||||||
extractor.setName(extractRegex.getVariable() + " RegexExtractor");
|
extractor.setName(extractRegex.getVariable() + " RegexExtractor");
|
||||||
extractor.setProperty(TestElement.TEST_CLASS, RegexExtractor.class.getName());
|
extractor.setProperty(TestElement.TEST_CLASS, RegexExtractor.class.getName());
|
||||||
extractor.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("RegexExtractorGui"));
|
extractor.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("RegexExtractorGui"));
|
||||||
|
@ -86,7 +83,7 @@ public class MsExtract extends MsTestElement {
|
||||||
|
|
||||||
private XPath2Extractor xPath2Extractor(MsExtractXPath extractXPath, StringJoiner extract) {
|
private XPath2Extractor xPath2Extractor(MsExtractXPath extractXPath, StringJoiner extract) {
|
||||||
XPath2Extractor extractor = new XPath2Extractor();
|
XPath2Extractor extractor = new XPath2Extractor();
|
||||||
extractor.setEnabled(true);
|
extractor.setEnabled(this.isEnable());
|
||||||
extractor.setName(extractXPath.getVariable() + " XPath2Extractor");
|
extractor.setName(extractXPath.getVariable() + " XPath2Extractor");
|
||||||
extractor.setProperty(TestElement.TEST_CLASS, XPath2Extractor.class.getName());
|
extractor.setProperty(TestElement.TEST_CLASS, XPath2Extractor.class.getName());
|
||||||
extractor.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("XPath2ExtractorGui"));
|
extractor.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("XPath2ExtractorGui"));
|
||||||
|
@ -101,7 +98,7 @@ public class MsExtract extends MsTestElement {
|
||||||
|
|
||||||
private JSONPostProcessor jsonPostProcessor(MsExtractJSONPath extractJSONPath, StringJoiner extract) {
|
private JSONPostProcessor jsonPostProcessor(MsExtractJSONPath extractJSONPath, StringJoiner extract) {
|
||||||
JSONPostProcessor extractor = new JSONPostProcessor();
|
JSONPostProcessor extractor = new JSONPostProcessor();
|
||||||
extractor.setEnabled(true);
|
extractor.setEnabled(this.isEnable());
|
||||||
extractor.setName(extractJSONPath.getVariable() + " JSONExtractor");
|
extractor.setName(extractJSONPath.getVariable() + " JSONExtractor");
|
||||||
extractor.setProperty(TestElement.TEST_CLASS, JSONPostProcessor.class.getName());
|
extractor.setProperty(TestElement.TEST_CLASS, JSONPostProcessor.class.getName());
|
||||||
extractor.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("JSONPostProcessorGui"));
|
extractor.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("JSONPostProcessorGui"));
|
||||||
|
|
|
@ -29,18 +29,15 @@ public class MsJSR223Processor extends MsTestElement {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
||||||
if (!this.isEnable()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
JSR223Sampler processor = new JSR223Sampler();
|
JSR223Sampler processor = new JSR223Sampler();
|
||||||
processor.setEnabled(true);
|
processor.setEnabled(this.isEnable());
|
||||||
if (StringUtils.isNotEmpty(this.getName())) {
|
if (StringUtils.isNotEmpty(this.getName())) {
|
||||||
processor.setName(this.getName());
|
processor.setName(this.getName());
|
||||||
} else {
|
} else {
|
||||||
processor.setName("JSR223Processor");
|
processor.setName("JSR223Processor");
|
||||||
}
|
}
|
||||||
String name = this.getParentName(this.getParent(), config);
|
String name = this.getParentName(this.getParent(), config);
|
||||||
if (StringUtils.isNotEmpty(name)) {
|
if (StringUtils.isNotEmpty(name) && !config.isOperating()) {
|
||||||
processor.setName(this.getName() + "<->" + name);
|
processor.setName(this.getName() + "<->" + name);
|
||||||
}
|
}
|
||||||
processor.setProperty(TestElement.TEST_CLASS, JSR223Sampler.class.getName());
|
processor.setProperty(TestElement.TEST_CLASS, JSR223Sampler.class.getName());
|
||||||
|
|
|
@ -29,11 +29,8 @@ public class MsJSR223PostProcessor extends MsTestElement {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
||||||
if (!this.isEnable()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
JSR223PostProcessor processor = new JSR223PostProcessor();
|
JSR223PostProcessor processor = new JSR223PostProcessor();
|
||||||
processor.setEnabled(true);
|
processor.setEnabled(this.isEnable());
|
||||||
if (StringUtils.isNotEmpty(this.getName())) {
|
if (StringUtils.isNotEmpty(this.getName())) {
|
||||||
processor.setName(this.getName());
|
processor.setName(this.getName());
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -29,9 +29,6 @@ public class MsJSR223PreProcessor extends MsTestElement {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
||||||
if (!this.isEnable()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
final HashTree jsr223PreTree = tree.add(getJSR223PreProcessor());
|
final HashTree jsr223PreTree = tree.add(getJSR223PreProcessor());
|
||||||
if (CollectionUtils.isNotEmpty(hashTree)) {
|
if (CollectionUtils.isNotEmpty(hashTree)) {
|
||||||
hashTree.forEach(el -> {
|
hashTree.forEach(el -> {
|
||||||
|
@ -42,7 +39,7 @@ public class MsJSR223PreProcessor extends MsTestElement {
|
||||||
|
|
||||||
public JSR223PreProcessor getJSR223PreProcessor() {
|
public JSR223PreProcessor getJSR223PreProcessor() {
|
||||||
JSR223PreProcessor processor = new JSR223PreProcessor();
|
JSR223PreProcessor processor = new JSR223PreProcessor();
|
||||||
processor.setEnabled(true);
|
processor.setEnabled(this.isEnable());
|
||||||
if (StringUtils.isNotEmpty(this.getName())) {
|
if (StringUtils.isNotEmpty(this.getName())) {
|
||||||
processor.setName(this.getName());
|
processor.setName(this.getName());
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -57,9 +57,6 @@ public class MsDubboSampler extends MsTestElement {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
||||||
if (!this.isEnable()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (this.getReferenced() != null && "Deleted".equals(this.getReferenced())) {
|
if (this.getReferenced() != null && "Deleted".equals(this.getReferenced())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -77,9 +74,10 @@ public class MsDubboSampler extends MsTestElement {
|
||||||
|
|
||||||
private DubboSample dubboSample(ParameterConfig config) {
|
private DubboSample dubboSample(ParameterConfig config) {
|
||||||
DubboSample sampler = new DubboSample();
|
DubboSample sampler = new DubboSample();
|
||||||
|
sampler.setEnabled(this.isEnable());
|
||||||
sampler.setName(this.getName());
|
sampler.setName(this.getName());
|
||||||
String name = this.getParentName(this.getParent(), config);
|
String name = this.getParentName(this.getParent(), config);
|
||||||
if (StringUtils.isNotEmpty(name)) {
|
if (StringUtils.isNotEmpty(name) && !config.isOperating()) {
|
||||||
sampler.setName(this.getName() + "<->" + name);
|
sampler.setName(this.getName() + "<->" + name);
|
||||||
}
|
}
|
||||||
sampler.setProperty(TestElement.TEST_CLASS, DubboSample.class.getName());
|
sampler.setProperty(TestElement.TEST_CLASS, DubboSample.class.getName());
|
||||||
|
|
|
@ -93,17 +93,15 @@ public class MsHTTPSamplerProxy extends MsTestElement {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
||||||
if (!this.isEnable()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (this.getReferenced() != null && MsTestElementConstants.REF.name().equals(this.getReferenced())) {
|
if (this.getReferenced() != null && MsTestElementConstants.REF.name().equals(this.getReferenced())) {
|
||||||
this.getRefElement(this);
|
this.getRefElement(this);
|
||||||
}
|
}
|
||||||
HTTPSamplerProxy sampler = new HTTPSamplerProxy();
|
HTTPSamplerProxy sampler = new HTTPSamplerProxy();
|
||||||
sampler.setEnabled(true);
|
sampler.setEnabled(this.isEnable());
|
||||||
sampler.setName(this.getName());
|
sampler.setName(this.getName());
|
||||||
String name = this.getParentName(this.getParent(), config);
|
String name = this.getParentName(this.getParent(), config);
|
||||||
if (StringUtils.isNotEmpty(name)) {
|
if (StringUtils.isNotEmpty(name) && !config.isOperating()) {
|
||||||
sampler.setName(this.getName() + "<->" + name);
|
sampler.setName(this.getName() + "<->" + name);
|
||||||
}
|
}
|
||||||
sampler.setProperty(TestElement.TEST_CLASS, HTTPSamplerProxy.class.getName());
|
sampler.setProperty(TestElement.TEST_CLASS, HTTPSamplerProxy.class.getName());
|
||||||
|
@ -124,7 +122,7 @@ public class MsHTTPSamplerProxy extends MsTestElement {
|
||||||
// 添加环境中的公共变量
|
// 添加环境中的公共变量
|
||||||
Arguments arguments = this.addArguments(config);
|
Arguments arguments = this.addArguments(config);
|
||||||
if (arguments != null) {
|
if (arguments != null) {
|
||||||
tree.add(this.addArguments(config));
|
tree.add(arguments);
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
if (config != null && config.getConfig() != null) {
|
if (config != null && config.getConfig() != null) {
|
||||||
|
|
|
@ -55,9 +55,6 @@ public class MsJDBCSampler extends MsTestElement {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
||||||
if (!this.isEnable()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (this.getReferenced() != null && MsTestElementConstants.REF.name().equals(this.getReferenced())) {
|
if (this.getReferenced() != null && MsTestElementConstants.REF.name().equals(this.getReferenced())) {
|
||||||
this.getRefElement(this);
|
this.getRefElement(this);
|
||||||
}
|
}
|
||||||
|
@ -70,7 +67,10 @@ public class MsJDBCSampler extends MsTestElement {
|
||||||
}
|
}
|
||||||
final HashTree samplerHashTree = tree.add(jdbcSampler(config));
|
final HashTree samplerHashTree = tree.add(jdbcSampler(config));
|
||||||
tree.add(jdbcDataSource());
|
tree.add(jdbcDataSource());
|
||||||
tree.add(arguments(this.getName() + " Variables", this.getVariables()));
|
Arguments arguments = arguments(this.getName() + " Variables", this.getVariables());
|
||||||
|
if (arguments != null) {
|
||||||
|
tree.add(arguments);
|
||||||
|
}
|
||||||
if (CollectionUtils.isNotEmpty(hashTree)) {
|
if (CollectionUtils.isNotEmpty(hashTree)) {
|
||||||
hashTree.forEach(el -> {
|
hashTree.forEach(el -> {
|
||||||
el.toHashTree(samplerHashTree, el.getHashTree(), config);
|
el.toHashTree(samplerHashTree, el.getHashTree(), config);
|
||||||
|
@ -111,9 +111,10 @@ public class MsJDBCSampler extends MsTestElement {
|
||||||
|
|
||||||
private JDBCSampler jdbcSampler(ParameterConfig config) {
|
private JDBCSampler jdbcSampler(ParameterConfig config) {
|
||||||
JDBCSampler sampler = new JDBCSampler();
|
JDBCSampler sampler = new JDBCSampler();
|
||||||
|
sampler.setEnabled(this.isEnable());
|
||||||
sampler.setName(this.getName());
|
sampler.setName(this.getName());
|
||||||
String name = this.getParentName(this.getParent(), config);
|
String name = this.getParentName(this.getParent(), config);
|
||||||
if (StringUtils.isNotEmpty(name)) {
|
if (StringUtils.isNotEmpty(name) && !config.isOperating()) {
|
||||||
sampler.setName(this.getName() + "<->" + name);
|
sampler.setName(this.getName() + "<->" + name);
|
||||||
}
|
}
|
||||||
sampler.setProperty(TestElement.TEST_CLASS, JDBCSampler.class.getName());
|
sampler.setProperty(TestElement.TEST_CLASS, JDBCSampler.class.getName());
|
||||||
|
|
|
@ -72,9 +72,6 @@ public class MsTCPSampler extends MsTestElement {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
||||||
if (!this.isEnable()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (this.getReferenced() != null && MsTestElementConstants.REF.name().equals(this.getReferenced())) {
|
if (this.getReferenced() != null && MsTestElementConstants.REF.name().equals(this.getReferenced())) {
|
||||||
this.getRefElement(this);
|
this.getRefElement(this);
|
||||||
}
|
}
|
||||||
|
@ -84,7 +81,7 @@ public class MsTCPSampler extends MsTestElement {
|
||||||
// 添加环境中的公共变量
|
// 添加环境中的公共变量
|
||||||
Arguments arguments = this.addArguments(config);
|
Arguments arguments = this.addArguments(config);
|
||||||
if (arguments != null) {
|
if (arguments != null) {
|
||||||
tree.add(this.addArguments(config));
|
tree.add(arguments);
|
||||||
}
|
}
|
||||||
|
|
||||||
final HashTree samplerHashTree = new ListedHashTree();
|
final HashTree samplerHashTree = new ListedHashTree();
|
||||||
|
@ -110,9 +107,10 @@ public class MsTCPSampler extends MsTestElement {
|
||||||
|
|
||||||
private TCPSampler tcpSampler(ParameterConfig config) {
|
private TCPSampler tcpSampler(ParameterConfig config) {
|
||||||
TCPSampler tcpSampler = new TCPSampler();
|
TCPSampler tcpSampler = new TCPSampler();
|
||||||
|
tcpSampler.setEnabled(this.isEnable());
|
||||||
tcpSampler.setName(this.getName());
|
tcpSampler.setName(this.getName());
|
||||||
String name = this.getParentName(this.getParent(), config);
|
String name = this.getParentName(this.getParent(), config);
|
||||||
if (StringUtils.isNotEmpty(name)) {
|
if (StringUtils.isNotEmpty(name) && !config.isOperating()) {
|
||||||
tcpSampler.setName(this.getName() + "<->" + name);
|
tcpSampler.setName(this.getName() + "<->" + name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,9 +26,7 @@ public class MsConstantTimer extends MsTestElement {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
||||||
if (!this.isEnable()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
final HashTree groupTree = tree.add(constantTimer());
|
final HashTree groupTree = tree.add(constantTimer());
|
||||||
if (CollectionUtils.isNotEmpty(hashTree)) {
|
if (CollectionUtils.isNotEmpty(hashTree)) {
|
||||||
hashTree.forEach(el -> {
|
hashTree.forEach(el -> {
|
||||||
|
@ -39,7 +37,7 @@ public class MsConstantTimer extends MsTestElement {
|
||||||
|
|
||||||
private ConstantTimer constantTimer() {
|
private ConstantTimer constantTimer() {
|
||||||
ConstantTimer constantTimer = new ConstantTimer();
|
ConstantTimer constantTimer = new ConstantTimer();
|
||||||
constantTimer.setEnabled(true);
|
constantTimer.setEnabled(this.isEnable());
|
||||||
constantTimer.setName(this.getDelay() + " ms");
|
constantTimer.setName(this.getDelay() + " ms");
|
||||||
constantTimer.setProperty(TestElement.TEST_CLASS, ConstantTimer.class.getName());
|
constantTimer.setProperty(TestElement.TEST_CLASS, ConstantTimer.class.getName());
|
||||||
constantTimer.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("ConstantTimerGui"));
|
constantTimer.setProperty(TestElement.GUI_CLASS, SaveService.aliasToClass("ConstantTimerGui"));
|
||||||
|
|
|
@ -29,17 +29,17 @@ public class MsJmeterElement extends MsTestElement {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
public void toHashTree(HashTree tree, List<MsTestElement> hashTree, ParameterConfig config) {
|
||||||
if (!this.isEnable()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
InputStream inputSource = getStrToStream(jmeterElement);
|
InputStream inputSource = getStrToStream(jmeterElement);
|
||||||
if (inputSource != null) {
|
if (inputSource != null) {
|
||||||
Object scriptWrapper = SaveService.loadElement(inputSource);
|
Object scriptWrapper = SaveService.loadElement(inputSource);
|
||||||
HashTree elementTree = tree;
|
HashTree elementTree = tree;
|
||||||
if (!(scriptWrapper instanceof TestPlan) && !(scriptWrapper instanceof ThreadGroup)) {
|
if (config.isOperating()) {
|
||||||
|
elementTree = tree.add(scriptWrapper);
|
||||||
|
} else if (!(scriptWrapper instanceof TestPlan) && !(scriptWrapper instanceof ThreadGroup)) {
|
||||||
elementTree = tree.add(scriptWrapper);
|
elementTree = tree.add(scriptWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CollectionUtils.isNotEmpty(hashTree)) {
|
if (CollectionUtils.isNotEmpty(hashTree)) {
|
||||||
for (MsTestElement el : hashTree) {
|
for (MsTestElement el : hashTree) {
|
||||||
el.toHashTree(elementTree, el.getHashTree(), config);
|
el.toHashTree(elementTree, el.getHashTree(), config);
|
||||||
|
|
|
@ -40,6 +40,10 @@ public class ScenarioVariable {
|
||||||
private String minNumber;
|
private String minNumber;
|
||||||
private String maxNumber;
|
private String maxNumber;
|
||||||
|
|
||||||
|
public ScenarioVariable() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public ScenarioVariable(String key, String value, String description, String type) {
|
public ScenarioVariable(String key, String value, String description, String type) {
|
||||||
this.name = key;
|
this.name = key;
|
||||||
this.value = value;
|
this.value = value;
|
||||||
|
|
|
@ -15,6 +15,7 @@ import io.metersphere.api.dto.automation.parse.ScenarioImportParserFactory;
|
||||||
import io.metersphere.api.dto.datacount.ApiDataCountResult;
|
import io.metersphere.api.dto.datacount.ApiDataCountResult;
|
||||||
import io.metersphere.api.dto.definition.RunDefinitionRequest;
|
import io.metersphere.api.dto.definition.RunDefinitionRequest;
|
||||||
import io.metersphere.api.dto.definition.request.*;
|
import io.metersphere.api.dto.definition.request.*;
|
||||||
|
import io.metersphere.api.dto.definition.request.unknown.MsJmeterElement;
|
||||||
import io.metersphere.api.dto.definition.request.variable.ScenarioVariable;
|
import io.metersphere.api.dto.definition.request.variable.ScenarioVariable;
|
||||||
import io.metersphere.api.dto.scenario.environment.EnvironmentConfig;
|
import io.metersphere.api.dto.scenario.environment.EnvironmentConfig;
|
||||||
import io.metersphere.api.jmeter.JMeterService;
|
import io.metersphere.api.jmeter.JMeterService;
|
||||||
|
@ -438,11 +439,11 @@ public class ApiAutomationService {
|
||||||
private String generateJmx(ApiScenarioWithBLOBs apiScenario) {
|
private String generateJmx(ApiScenarioWithBLOBs apiScenario) {
|
||||||
HashTree jmeterHashTree = new ListedHashTree();
|
HashTree jmeterHashTree = new ListedHashTree();
|
||||||
MsTestPlan testPlan = new MsTestPlan();
|
MsTestPlan testPlan = new MsTestPlan();
|
||||||
|
testPlan.setName(apiScenario.getName());
|
||||||
testPlan.setHashTree(new LinkedList<>());
|
testPlan.setHashTree(new LinkedList<>());
|
||||||
|
ParameterConfig config = new ParameterConfig();
|
||||||
|
config.setOperating(true);
|
||||||
try {
|
try {
|
||||||
MsThreadGroup group = new MsThreadGroup();
|
|
||||||
group.setLabel(apiScenario.getName());
|
|
||||||
group.setName(apiScenario.getName());
|
|
||||||
|
|
||||||
ObjectMapper mapper = new ObjectMapper();
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||||
|
@ -462,17 +463,26 @@ public class ApiAutomationService {
|
||||||
});
|
});
|
||||||
scenario.setVariables(variables);
|
scenario.setVariables(variables);
|
||||||
}
|
}
|
||||||
|
// 针对导入的jmx 处理
|
||||||
|
if (CollectionUtils.isNotEmpty(scenario.getHashTree()) && (scenario.getHashTree().get(0) instanceof MsJmeterElement)) {
|
||||||
|
scenario.toHashTree(jmeterHashTree, scenario.getHashTree(), config);
|
||||||
|
return scenario.getJmx(jmeterHashTree);
|
||||||
|
} else {
|
||||||
|
MsThreadGroup group = new MsThreadGroup();
|
||||||
|
group.setLabel(apiScenario.getName());
|
||||||
|
group.setName(apiScenario.getName());
|
||||||
group.setEnableCookieShare(scenario.isEnableCookieShare());
|
group.setEnableCookieShare(scenario.isEnableCookieShare());
|
||||||
group.setHashTree(new LinkedList<MsTestElement>() {{
|
group.setHashTree(new LinkedList<MsTestElement>() {{
|
||||||
this.add(scenario);
|
this.add(scenario);
|
||||||
}});
|
}});
|
||||||
|
|
||||||
testPlan.getHashTree().add(group);
|
testPlan.getHashTree().add(group);
|
||||||
} catch (Exception ex) {
|
|
||||||
MSException.throwException(ex.getMessage());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
testPlan.toHashTree(jmeterHashTree, testPlan.getHashTree(), new ParameterConfig());
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
MSException.throwException(ex.getMessage());
|
||||||
|
}
|
||||||
|
testPlan.toHashTree(jmeterHashTree, testPlan.getHashTree(), config);
|
||||||
return testPlan.getJmx(jmeterHashTree);
|
return testPlan.getJmx(jmeterHashTree);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -867,7 +877,8 @@ public class ApiAutomationService {
|
||||||
// 生成jmx
|
// 生成jmx
|
||||||
List<ApiScenrioExportJmx> resList = new ArrayList<>();
|
List<ApiScenrioExportJmx> resList = new ArrayList<>();
|
||||||
apiScenarioWithBLOBs.forEach(item -> {
|
apiScenarioWithBLOBs.forEach(item -> {
|
||||||
ApiScenrioExportJmx scenrioExportJmx = new ApiScenrioExportJmx(item.getName(), apiTestService.updateJmxString(generateJmx(item), item.getName(), true));
|
String jmx = generateJmx(item);
|
||||||
|
ApiScenrioExportJmx scenrioExportJmx = new ApiScenrioExportJmx(item.getName(), apiTestService.updateJmxString(jmx, null, true));
|
||||||
resList.add(scenrioExportJmx);
|
resList.add(scenrioExportJmx);
|
||||||
});
|
});
|
||||||
return resList;
|
return resList;
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit b9042074b780205e275c674f64417799110519fd
|
Subproject commit 5e0b365f1080197e84055e80071165787e2e79c5
|
|
@ -686,7 +686,6 @@
|
||||||
this.result = this.$post("/api/automation/export/jmx", param, response => {
|
this.result = this.$post("/api/automation/export/jmx", param, response => {
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
let obj = response.data;
|
let obj = response.data;
|
||||||
console.log(obj)
|
|
||||||
if (obj && obj.length > 0) {
|
if (obj && obj.length > 0) {
|
||||||
obj.forEach(item => {
|
obj.forEach(item => {
|
||||||
downloadFile(item.name + ".jmx", item.jmx);
|
downloadFile(item.name + ".jmx", item.jmx);
|
||||||
|
|
Loading…
Reference in New Issue