feat: 接口调试部分代码
This commit is contained in:
parent
9b294a00f8
commit
683fed8ec9
|
@ -49,7 +49,6 @@ public class APITestController {
|
||||||
return apiTestService.getApiTestByProjectId(projectId);
|
return apiTestService.getApiTestByProjectId(projectId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@PostMapping(value = "/schedule/update")
|
@PostMapping(value = "/schedule/update")
|
||||||
public void updateSchedule(@RequestBody Schedule request) {
|
public void updateSchedule(@RequestBody Schedule request) {
|
||||||
apiTestService.updateSchedule(request);
|
apiTestService.updateSchedule(request);
|
||||||
|
@ -90,6 +89,11 @@ public class APITestController {
|
||||||
return apiTestService.run(request);
|
return apiTestService.run(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping(value = "/run/independent", consumes = {"multipart/form-data"})
|
||||||
|
public String runIndependent(@RequestBody SaveAPITestRequest request, @RequestPart(value = "files") List<MultipartFile> files) {
|
||||||
|
return apiTestService.runIndependent(request, files);
|
||||||
|
}
|
||||||
|
|
||||||
@PostMapping(value = "/import", consumes = {"multipart/form-data"})
|
@PostMapping(value = "/import", consumes = {"multipart/form-data"})
|
||||||
@RequiresRoles(value = {RoleConstants.TEST_USER, RoleConstants.TEST_MANAGER}, logical = Logical.OR)
|
@RequiresRoles(value = {RoleConstants.TEST_USER, RoleConstants.TEST_MANAGER}, logical = Logical.OR)
|
||||||
public ApiTest testCaseImport(@RequestPart(value = "file", required = false) MultipartFile file, @RequestPart("request") ApiTestImportRequest request) {
|
public ApiTest testCaseImport(@RequestPart(value = "file", required = false) MultipartFile file, @RequestPart("request") ApiTestImportRequest request) {
|
||||||
|
|
|
@ -101,7 +101,12 @@ public class APIReportService {
|
||||||
if (running != null) {
|
if (running != null) {
|
||||||
return running.getId();
|
return running.getId();
|
||||||
}
|
}
|
||||||
|
ApiTestReport report = buildReport(test, triggerMode, APITestStatus.Running.name());
|
||||||
|
apiTestReportMapper.insert(report);
|
||||||
|
return report.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ApiTestReport buildReport(ApiTest test, String triggerMode, String status) {
|
||||||
ApiTestReport report = new ApiTestReport();
|
ApiTestReport report = new ApiTestReport();
|
||||||
report.setId(UUID.randomUUID().toString());
|
report.setId(UUID.randomUUID().toString());
|
||||||
report.setTestId(test.getId());
|
report.setTestId(test.getId());
|
||||||
|
@ -110,11 +115,9 @@ public class APIReportService {
|
||||||
report.setDescription(test.getDescription());
|
report.setDescription(test.getDescription());
|
||||||
report.setCreateTime(System.currentTimeMillis());
|
report.setCreateTime(System.currentTimeMillis());
|
||||||
report.setUpdateTime(System.currentTimeMillis());
|
report.setUpdateTime(System.currentTimeMillis());
|
||||||
report.setStatus(APITestStatus.Running.name());
|
report.setStatus(status);
|
||||||
report.setUserId(test.getUserId());
|
report.setUserId(test.getUserId());
|
||||||
apiTestReportMapper.insert(report);
|
return report;
|
||||||
|
|
||||||
return report.getId();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ApiTestReport getRunningReport(String testId) {
|
public ApiTestReport getRunningReport(String testId) {
|
||||||
|
|
|
@ -37,6 +37,7 @@ import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
@ -328,4 +329,29 @@ public class APITestService {
|
||||||
}
|
}
|
||||||
return schedules;
|
return schedules;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String runIndependent(SaveAPITestRequest request, List<MultipartFile> files) {
|
||||||
|
if (files == null || files.isEmpty()) {
|
||||||
|
throw new IllegalArgumentException(Translator.get("file_cannot_be_null"));
|
||||||
|
}
|
||||||
|
// ApiTest test = createTest(request);
|
||||||
|
// saveFile(test.getId(), files);
|
||||||
|
MultipartFile file = files.get(0);
|
||||||
|
InputStream is = null;
|
||||||
|
try {
|
||||||
|
is = new ByteArrayInputStream(file.getBytes());
|
||||||
|
} catch (IOException e) {
|
||||||
|
LogUtil.error(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
APITestResult apiTest = get(request.getId());
|
||||||
|
if (SessionUtils.getUser() == null) {
|
||||||
|
apiTest.setUserId(request.getUserId());
|
||||||
|
}
|
||||||
|
String reportId = apiReportService.create(apiTest, request.getTriggerMode());
|
||||||
|
changeStatus(request.getId(), APITestStatus.Running);
|
||||||
|
|
||||||
|
jMeterService.run(request.getId(), is);
|
||||||
|
return reportId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<el-card>
|
<el-card class="scenario-results">
|
||||||
<div class="scenario-header">
|
<div class="scenario-header">
|
||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
<el-col :span="16">
|
<el-col :span="16">
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
<template>
|
<template>
|
||||||
<component :is="component" :is-read-only="isReadOnly" :request="request"/>
|
<div>
|
||||||
|
<component :is="component" :is-read-only="isReadOnly" :request="request"/>
|
||||||
|
<!-- <ms-scenario-results :scenarios="content.scenarios"/>-->
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {Request, RequestFactory} from "../../model/ScenarioModel";
|
import {Request, RequestFactory} from "../../model/ScenarioModel";
|
||||||
import MsApiHttpRequestForm from "./ApiHttpRequestForm";
|
import MsApiHttpRequestForm from "./ApiHttpRequestForm";
|
||||||
import MsApiDubboRequestForm from "./ApiDubboRequestForm";
|
import MsApiDubboRequestForm from "./ApiDubboRequestForm";
|
||||||
|
import MsScenarioResults from "../../../report/components/ScenarioResults";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "MsApiRequestForm",
|
name: "MsApiRequestForm",
|
||||||
components: {MsApiDubboRequestForm, MsApiHttpRequestForm},
|
components: {MsScenarioResults, MsApiDubboRequestForm, MsApiHttpRequestForm},
|
||||||
props: {
|
props: {
|
||||||
request: Request,
|
request: Request,
|
||||||
isReadOnly: {
|
isReadOnly: {
|
||||||
|
@ -17,6 +21,12 @@
|
||||||
default: false
|
default: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
reportId: "",
|
||||||
|
content:{}
|
||||||
|
}
|
||||||
|
},
|
||||||
computed: {
|
computed: {
|
||||||
component({request: {type}}) {
|
component({request: {type}}) {
|
||||||
let name;
|
let name;
|
||||||
|
@ -29,10 +39,46 @@
|
||||||
}
|
}
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getReport();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getReport() {
|
||||||
|
// // this.reportId = "00143d36-a58a-477e-a05a-556c1d48046c";
|
||||||
|
// if (this.reportId) {
|
||||||
|
// let url = "/api/report/get/" + this.reportId;
|
||||||
|
// this.$get(url, response => {
|
||||||
|
// let report = response.data || {};
|
||||||
|
// if (response.data) {
|
||||||
|
// // if (this.isNotRunning) {
|
||||||
|
// try {
|
||||||
|
// this.content = JSON.parse(report.content);
|
||||||
|
// } catch (e) {
|
||||||
|
// console.log(report.content)
|
||||||
|
// throw e;
|
||||||
|
// }
|
||||||
|
// // this.getFails();
|
||||||
|
// // this.loading = false;
|
||||||
|
// // }
|
||||||
|
// // else {
|
||||||
|
// // setTimeout(this.getReport, 2000)
|
||||||
|
// // }
|
||||||
|
// } else {
|
||||||
|
// this.loading = false;
|
||||||
|
// this.$error(this.$t('api_report.not_exist'));
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
||||||
|
.scenario-results {
|
||||||
|
margin-top: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
Loading…
Reference in New Issue