diff --git a/backend/src/main/java/io/metersphere/api/service/ApiAutomationService.java b/backend/src/main/java/io/metersphere/api/service/ApiAutomationService.java index 1bbc22b836..c749faaff8 100644 --- a/backend/src/main/java/io/metersphere/api/service/ApiAutomationService.java +++ b/backend/src/main/java/io/metersphere/api/service/ApiAutomationService.java @@ -240,6 +240,7 @@ public class ApiAutomationService { checkNameExist(request); checkScenarioNum(request); final ApiScenarioWithBLOBs scenario = buildSaveScenario(request); + scenario.setVersion(0); scenario.setCreateTime(System.currentTimeMillis()); scenario.setNum(getNextNum(request.getProjectId())); @@ -321,6 +322,14 @@ public class ApiAutomationService { esbApiParamService.checkScenarioRequests(request); final ApiScenarioWithBLOBs scenario = buildSaveScenario(request); + + Integer version = apiScenarioMapper.selectByPrimaryKey(request.getId()).getVersion(); + if (version == null) { + scenario.setVersion(0); + } else { + scenario.setVersion(version + 1); + } + deleteUpdateBodyFile(scenario); List useUrl = this.parseUrl(scenario); scenario.setUseUrl(JSONArray.toJSONString(useUrl)); @@ -1534,7 +1543,7 @@ public class ApiAutomationService { } - public JmxInfoDTO genPerformanceTestJmx(RunScenarioRequest request) throws Exception { + public JmxInfoDTO genPerformanceTestJmx(RunScenarioRequest request) { List apiScenarios = null; List ids = request.getIds(); apiScenarios = extApiScenarioMapper.selectIds(ids); @@ -1743,6 +1752,7 @@ public class ApiAutomationService { scenrioExportJmx.setFiles(fileList); } } + scenrioExportJmx.setVersion(item.getVersion()); resList.add(scenrioExportJmx); } } diff --git a/frontend/src/business/components/performance/test/EditPerformanceTest.vue b/frontend/src/business/components/performance/test/EditPerformanceTest.vue index 1f3778b1fd..90cd63d635 100644 --- a/frontend/src/business/components/performance/test/EditPerformanceTest.vue +++ b/frontend/src/business/components/performance/test/EditPerformanceTest.vue @@ -29,6 +29,15 @@ + + + @@ -65,10 +74,14 @@ import MsMainContainer from "../../common/components/MsMainContainer"; import {getCurrentProjectID, hasPermission} from "@/common/js/utils"; import MsScheduleConfig from "../../common/components/MsScheduleConfig"; import MsChangeHistory from "../../history/ChangeHistory"; +import MsTableOperatorButton from "@/business/components/common/components/MsTableOperatorButton"; +import MsTipButton from "@/business/components/common/components/MsTipButton"; export default { name: "EditPerformanceTest", components: { + MsTipButton, + MsTableOperatorButton, MsScheduleConfig, PerformancePressureConfig, PerformanceBasicConfig, @@ -141,6 +154,8 @@ export default { if (apiTest.jmx.scenarioId) { this.$refs.basicConfig.importScenario(apiTest.jmx.scenarioId); this.$refs.basicConfig.handleUpload(); + this.$set(this.test, "scenarioId", apiTest.jmx.scenarioId); + this.$set(this.test, "scenarioVersion", apiTest.jmx.version); } if (apiTest.jmx.caseId) { this.$refs.basicConfig.importCase(apiTest.jmx); @@ -237,6 +252,16 @@ export default { } }; }, + syncScenario() { + let param = { + id: this.test.id, + scenarioId: this.test.scenarioId + }; + this.result = this.$post('/performance/sync/scenario', param, () => { + this.getTest(this.$route.params.testId); + this.$success('更新成功'); + }); + }, cancel() { this.$router.push({path: '/performance/test/all'}); }, @@ -365,4 +390,10 @@ export default { height: calc(100vh - 265px); overflow: auto; } + +.sync-btn { + float: right; + margin-right: 25px; + margin-top: 5px; +}