From 58ace8e0e8fae6def767d9baa9e72004f6e003b7 Mon Sep 17 00:00:00 2001 From: chenjianxing Date: Tue, 19 May 2020 19:53:52 +0800 Subject: [PATCH 01/18] =?UTF-8?q?fix=20=E9=A6=96=E9=A1=B5=E6=8A=A5?= =?UTF-8?q?=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/mapper/ext/ExtTestPlanTestCaseMapper.java | 3 ++- .../base/mapper/ext/ExtTestPlanTestCaseMapper.xml | 6 +++++- .../io/metersphere/track/service/TestPlanService.java | 4 ++-- .../track/service/TestPlanTestCaseService.java | 9 +++++++-- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestPlanTestCaseMapper.java b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestPlanTestCaseMapper.java index e4a2e49a25..604aab5974 100644 --- a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestPlanTestCaseMapper.java +++ b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestPlanTestCaseMapper.java @@ -1,5 +1,6 @@ package io.metersphere.base.mapper.ext; +import io.metersphere.base.domain.Workspace; import io.metersphere.track.request.testplancase.QueryTestPlanCaseRequest; import io.metersphere.track.dto.TestCaseReportStatusResultDTO; import io.metersphere.track.dto.TestPlanCaseDTO; @@ -15,7 +16,7 @@ public interface ExtTestPlanTestCaseMapper { List list(@Param("request") QueryTestPlanCaseRequest request); - List findRelateTestPlanId(String userId); + List findRelateTestPlanId(@Param("userId") String userId, @Param("workspaceId") String workspaceId); List getRecentTestedTestCase(@Param("request") QueryTestPlanCaseRequest request); diff --git a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestPlanTestCaseMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestPlanTestCaseMapper.xml index 37143332d5..2ee620d16b 100644 --- a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestPlanTestCaseMapper.xml +++ b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestPlanTestCaseMapper.xml @@ -62,7 +62,11 @@ - - - delete from load_test_report_detail - where report_id = #{reportId,jdbcType=VARCHAR} - + + + DELETE FROM load_test_report_detail + WHERE report_id = #{reportId,jdbcType=VARCHAR} + AND part = #{part,jdbcType=BIGINT} + delete from load_test_report_detail @@ -120,27 +124,35 @@ - insert into load_test_report_detail (report_id, content) - values (#{reportId,jdbcType=VARCHAR}, #{content,jdbcType=LONGVARCHAR}) + insert into load_test_report_detail (report_id, part, content + ) + values (#{reportId,jdbcType=VARCHAR}, #{part,jdbcType=BIGINT}, #{content,jdbcType=LONGVARCHAR} + ) insert into load_test_report_detail - - - report_id, - - - content, - - - - - #{reportId,jdbcType=VARCHAR}, - - - #{content,jdbcType=LONGVARCHAR}, - - + + + report_id, + + + part, + + + content, + + + + + #{reportId,jdbcType=VARCHAR}, + + + #{part,jdbcType=BIGINT}, + + + #{content,jdbcType=LONGVARCHAR}, + + update load_test_report_detail - - - report_id = #{record.reportId,jdbcType=VARCHAR}, - - - content = #{record.content,jdbcType=LONGVARCHAR}, - - + + + report_id = #{record.reportId,jdbcType=VARCHAR}, + + + part = #{record.part,jdbcType=BIGINT}, + + + content = #{record.content,jdbcType=LONGVARCHAR}, + + - update load_test_report_detail - set report_id = #{record.reportId,jdbcType=VARCHAR}, + update load_test_report_detail + set report_id = #{record.reportId,jdbcType=VARCHAR}, + part = #{record.part,jdbcType=BIGINT}, content = #{record.content,jdbcType=LONGVARCHAR} - + - update load_test_report_detail - set report_id = #{record.reportId,jdbcType=VARCHAR} - + update load_test_report_detail + set report_id = #{record.reportId,jdbcType=VARCHAR}, + part = #{record.part,jdbcType=BIGINT} + @@ -184,11 +201,13 @@ content = #{content,jdbcType=LONGVARCHAR}, - where report_id = #{reportId,jdbcType=VARCHAR} + where report_id = #{reportId,jdbcType=VARCHAR} + and part = #{part,jdbcType=BIGINT} - update load_test_report_detail - set content = #{content,jdbcType=LONGVARCHAR} - where report_id = #{reportId,jdbcType=VARCHAR} + update load_test_report_detail + set content = #{content,jdbcType=LONGVARCHAR} + where report_id = #{reportId,jdbcType=VARCHAR} + and part = #{part,jdbcType=BIGINT} \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/mapper/LoadTestReportMapper.java b/backend/src/main/java/io/metersphere/base/mapper/LoadTestReportMapper.java index 018fc00eaa..8bddc4ec16 100644 --- a/backend/src/main/java/io/metersphere/base/mapper/LoadTestReportMapper.java +++ b/backend/src/main/java/io/metersphere/base/mapper/LoadTestReportMapper.java @@ -2,7 +2,6 @@ package io.metersphere.base.mapper; import io.metersphere.base.domain.LoadTestReport; import io.metersphere.base.domain.LoadTestReportExample; -import io.metersphere.base.domain.LoadTestReportWithBLOBs; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -14,25 +13,25 @@ public interface LoadTestReportMapper { int deleteByPrimaryKey(String id); - int insert(LoadTestReportWithBLOBs record); + int insert(LoadTestReport record); - int insertSelective(LoadTestReportWithBLOBs record); + int insertSelective(LoadTestReport record); - List selectByExampleWithBLOBs(LoadTestReportExample example); + List selectByExampleWithBLOBs(LoadTestReportExample example); List selectByExample(LoadTestReportExample example); - LoadTestReportWithBLOBs selectByPrimaryKey(String id); + LoadTestReport selectByPrimaryKey(String id); - int updateByExampleSelective(@Param("record") LoadTestReportWithBLOBs record, @Param("example") LoadTestReportExample example); + int updateByExampleSelective(@Param("record") LoadTestReport record, @Param("example") LoadTestReportExample example); - int updateByExampleWithBLOBs(@Param("record") LoadTestReportWithBLOBs record, @Param("example") LoadTestReportExample example); + int updateByExampleWithBLOBs(@Param("record") LoadTestReport record, @Param("example") LoadTestReportExample example); int updateByExample(@Param("record") LoadTestReport record, @Param("example") LoadTestReportExample example); - int updateByPrimaryKeySelective(LoadTestReportWithBLOBs record); + int updateByPrimaryKeySelective(LoadTestReport record); - int updateByPrimaryKeyWithBLOBs(LoadTestReportWithBLOBs record); + int updateByPrimaryKeyWithBLOBs(LoadTestReport record); int updateByPrimaryKey(LoadTestReport record); } \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/mapper/LoadTestReportMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/LoadTestReportMapper.xml index 5027029ccf..eae844a677 100644 --- a/backend/src/main/java/io/metersphere/base/mapper/LoadTestReportMapper.xml +++ b/backend/src/main/java/io/metersphere/base/mapper/LoadTestReportMapper.xml @@ -9,9 +9,8 @@ - - - + + @@ -75,7 +74,7 @@ id, test_id, name, create_time, update_time, status - description, content + description @@ -218,25 +211,21 @@ description = #{record.description,jdbcType=LONGVARCHAR}, - - content = #{record.content,jdbcType=LONGVARCHAR}, - - update load_test_report - set id = #{record.id,jdbcType=VARCHAR}, + update load_test_report + set id = #{record.id,jdbcType=VARCHAR}, test_id = #{record.testId,jdbcType=VARCHAR}, name = #{record.name,jdbcType=VARCHAR}, create_time = #{record.createTime,jdbcType=BIGINT}, update_time = #{record.updateTime,jdbcType=BIGINT}, status = #{record.status,jdbcType=VARCHAR}, - description = #{record.description,jdbcType=LONGVARCHAR}, - content = #{record.content,jdbcType=LONGVARCHAR} - + description = #{record.description,jdbcType=LONGVARCHAR} + @@ -252,17 +241,17 @@ - - update load_test_report - - - test_id = #{testId,jdbcType=VARCHAR}, - - - name = #{name,jdbcType=VARCHAR}, - - - create_time = #{createTime,jdbcType=BIGINT}, + + update load_test_report + + + test_id = #{testId,jdbcType=VARCHAR}, + + + name = #{name,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=BIGINT}, update_time = #{updateTime,jdbcType=BIGINT}, @@ -273,23 +262,19 @@ description = #{description,jdbcType=LONGVARCHAR}, - - content = #{content,jdbcType=LONGVARCHAR}, - where id = #{id,jdbcType=VARCHAR} - - update load_test_report - set test_id = #{testId,jdbcType=VARCHAR}, - name = #{name,jdbcType=VARCHAR}, - create_time = #{createTime,jdbcType=BIGINT}, - update_time = #{updateTime,jdbcType=BIGINT}, - status = #{status,jdbcType=VARCHAR}, - description = #{description,jdbcType=LONGVARCHAR}, - content = #{content,jdbcType=LONGVARCHAR} - where id = #{id,jdbcType=VARCHAR} - + + UPDATE load_test_report + SET test_id = #{testId,jdbcType=VARCHAR}, + name = #{name,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=BIGINT}, + update_time = #{updateTime,jdbcType=BIGINT}, + status = #{status,jdbcType=VARCHAR}, + description = #{description,jdbcType=LONGVARCHAR} + WHERE id = #{id,jdbcType=VARCHAR} + update load_test_report set test_id = #{testId,jdbcType=VARCHAR}, diff --git a/backend/src/main/java/io/metersphere/performance/service/PerformanceTestService.java b/backend/src/main/java/io/metersphere/performance/service/PerformanceTestService.java index 7ee2d6043f..54ef43abc5 100644 --- a/backend/src/main/java/io/metersphere/performance/service/PerformanceTestService.java +++ b/backend/src/main/java/io/metersphere/performance/service/PerformanceTestService.java @@ -79,7 +79,9 @@ public class PerformanceTestService { // delete load_test_report, delete load_test_report_detail reportIdList.forEach(reportId -> { - loadTestReportDetailMapper.deleteByPrimaryKey(reportId); + LoadTestReportDetailExample example = new LoadTestReportDetailExample(); + example.createCriteria().andReportIdEqualTo(reportId); + loadTestReportDetailMapper.deleteByExample(example); reportService.deleteReport(reportId); }); @@ -202,7 +204,7 @@ public class PerformanceTestService { } private void startEngine(LoadTestWithBLOBs loadTest, Engine engine) { - LoadTestReportWithBLOBs testReport = new LoadTestReportWithBLOBs(); + LoadTestReport testReport = new LoadTestReport(); testReport.setId(engine.getReportId()); testReport.setCreateTime(engine.getStartTime()); testReport.setUpdateTime(engine.getStartTime()); @@ -216,13 +218,13 @@ public class PerformanceTestService { loadTest.setStatus(PerformanceTestStatus.Starting.name()); loadTestMapper.updateByPrimaryKeySelective(loadTest); // 启动正常插入 report - testReport.setContent(HEADERS); testReport.setStatus(PerformanceTestStatus.Starting.name()); loadTestReportMapper.insertSelective(testReport); LoadTestReportDetail reportDetail = new LoadTestReportDetail(); reportDetail.setContent(HEADERS); reportDetail.setReportId(testReport.getId()); + reportDetail.setPart(1L); loadTestReportDetailMapper.insertSelective(reportDetail); // append \n extLoadTestReportMapper.appendLine(testReport.getId(), "\n"); diff --git a/backend/src/main/java/io/metersphere/performance/service/ReportService.java b/backend/src/main/java/io/metersphere/performance/service/ReportService.java index 95eaa13bd9..53bb573428 100644 --- a/backend/src/main/java/io/metersphere/performance/service/ReportService.java +++ b/backend/src/main/java/io/metersphere/performance/service/ReportService.java @@ -57,7 +57,7 @@ public class ReportService { MSException.throwException("report id cannot be null"); } - LoadTestReportWithBLOBs loadTestReport = loadTestReportMapper.selectByPrimaryKey(reportId); + LoadTestReport loadTestReport = loadTestReportMapper.selectByPrimaryKey(reportId); LoadTestWithBLOBs loadTest = loadTestMapper.selectByPrimaryKey(loadTestReport.getTestId()); LogUtil.info("Delete report started, report ID: %s" + reportId); @@ -142,7 +142,7 @@ public class ReportService { } public void checkReportStatus(String reportId) { - LoadTestReportWithBLOBs loadTestReport = loadTestReportMapper.selectByPrimaryKey(reportId); + LoadTestReport loadTestReport = loadTestReportMapper.selectByPrimaryKey(reportId); String reportStatus = loadTestReport.getStatus(); if (StringUtils.equals(PerformanceTestStatus.Running.name(), reportStatus)) { MSException.throwException("Reporting in progress..."); diff --git a/backend/src/main/resources/db/migration/V2__metersphere_ddl.sql b/backend/src/main/resources/db/migration/V2__metersphere_ddl.sql index 83e091e935..fe3fdeef0b 100644 --- a/backend/src/main/resources/db/migration/V2__metersphere_ddl.sql +++ b/backend/src/main/resources/db/migration/V2__metersphere_ddl.sql @@ -51,7 +51,6 @@ CREATE TABLE IF NOT EXISTS `load_test_report` ( `test_id` varchar(50) NOT NULL COMMENT 'Test ID this test report belongs to', `name` varchar(64) NOT NULL COMMENT 'Test report name', `description` varchar(255) DEFAULT NULL COMMENT 'Test report name', - `content` longtext, `create_time` bigint(13) NOT NULL COMMENT 'Create timestamp', `update_time` bigint(13) NOT NULL COMMENT 'Update timestamp', `status` varchar(64) NOT NULL COMMENT 'Status of this test run', @@ -64,11 +63,9 @@ CREATE TABLE IF NOT EXISTS `load_test_report` ( CREATE TABLE IF NOT EXISTS `load_test_report_detail` ( `report_id` varchar(50) NOT NULL, `content` longtext, - PRIMARY KEY (`report_id`) -) - ENGINE=InnoDB - DEFAULT CHARSET=utf8mb4 - COLLATE=utf8mb4_bin; + `part` bigint(11) NOT NULL, + PRIMARY KEY (`report_id`,`part`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; CREATE TABLE IF NOT EXISTS `load_test_report_log` ( `id` varchar(50) NOT NULL, diff --git a/backend/src/main/resources/generatorConfig.xml b/backend/src/main/resources/generatorConfig.xml index 67af9f5eb0..a1692aed6d 100644 --- a/backend/src/main/resources/generatorConfig.xml +++ b/backend/src/main/resources/generatorConfig.xml @@ -59,7 +59,7 @@ - +
\ No newline at end of file From b623a346311dde0d238daadc344e60253e8e372a Mon Sep 17 00:00:00 2001 From: "Captain.B" Date: Wed, 20 May 2020 18:56:28 +0800 Subject: [PATCH 04/18] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BF=9D=E5=AD=98metri?= =?UTF-8?q?c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/domain/LoadTestReportDetailKey.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 backend/src/main/java/io/metersphere/base/domain/LoadTestReportDetailKey.java diff --git a/backend/src/main/java/io/metersphere/base/domain/LoadTestReportDetailKey.java b/backend/src/main/java/io/metersphere/base/domain/LoadTestReportDetailKey.java new file mode 100644 index 0000000000..a2a603e256 --- /dev/null +++ b/backend/src/main/java/io/metersphere/base/domain/LoadTestReportDetailKey.java @@ -0,0 +1,14 @@ +package io.metersphere.base.domain; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class LoadTestReportDetailKey implements Serializable { + private String reportId; + + private Long part; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file From 23ef8714a700bb8ec4779d94574bae94cd63012f Mon Sep 17 00:00:00 2001 From: "Captain.B" Date: Wed, 20 May 2020 19:16:59 +0800 Subject: [PATCH 05/18] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BF=9D=E5=AD=98metri?= =?UTF-8?q?c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/mapper/ext/ExtLoadTestReportMapper.java | 2 -- .../metersphere/base/mapper/ext/ExtLoadTestReportMapper.xml | 6 ------ .../performance/service/PerformanceTestService.java | 2 -- 3 files changed, 10 deletions(-) diff --git a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtLoadTestReportMapper.java b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtLoadTestReportMapper.java index 79e6c73667..1171c0ec3e 100644 --- a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtLoadTestReportMapper.java +++ b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtLoadTestReportMapper.java @@ -14,8 +14,6 @@ public interface ExtLoadTestReportMapper { ReportDTO getReportTestAndProInfo(@Param("id") String id); - int appendLine(@Param("testId") String id, @Param("line") String line); - LoadTestReport selectByPrimaryKey(String id); List selectDashboardTests(@Param("workspaceId") String workspaceId, @Param("startTimestamp") long startTimestamp); diff --git a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtLoadTestReportMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtLoadTestReportMapper.xml index 37d15a0676..703e456192 100644 --- a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtLoadTestReportMapper.xml +++ b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtLoadTestReportMapper.xml @@ -41,12 +41,6 @@ where ltr.id = #{id} - - UPDATE load_test_report - SET content = concat(content, #{line}) - WHERE id = #{testId} - - select count(*) from load_test_report_log @@ -166,69 +176,79 @@ update load_test_report_log - - - id = #{record.id,jdbcType=VARCHAR}, - - - report_id = #{record.reportId,jdbcType=VARCHAR}, - - - resource_id = #{record.resourceId,jdbcType=VARCHAR}, - - - content = #{record.content,jdbcType=LONGVARCHAR}, - - + + + id = #{record.id,jdbcType=VARCHAR}, + + + report_id = #{record.reportId,jdbcType=VARCHAR}, + + + resource_id = #{record.resourceId,jdbcType=VARCHAR}, + + + part = #{record.part,jdbcType=BIGINT}, + + + content = #{record.content,jdbcType=LONGVARCHAR}, + + - update load_test_report_log - set id = #{record.id,jdbcType=VARCHAR}, + update load_test_report_log + set id = #{record.id,jdbcType=VARCHAR}, report_id = #{record.reportId,jdbcType=VARCHAR}, resource_id = #{record.resourceId,jdbcType=VARCHAR}, + part = #{record.part,jdbcType=BIGINT}, content = #{record.content,jdbcType=LONGVARCHAR} - + - update load_test_report_log - set id = #{record.id,jdbcType=VARCHAR}, + update load_test_report_log + set id = #{record.id,jdbcType=VARCHAR}, report_id = #{record.reportId,jdbcType=VARCHAR}, - resource_id = #{record.resourceId,jdbcType=VARCHAR} - + resource_id = #{record.resourceId,jdbcType=VARCHAR}, + part = #{record.part,jdbcType=BIGINT} + update load_test_report_log - - - report_id = #{reportId,jdbcType=VARCHAR}, - - - resource_id = #{resourceId,jdbcType=VARCHAR}, - - - content = #{content,jdbcType=LONGVARCHAR}, - - + + + report_id = #{reportId,jdbcType=VARCHAR}, + + + resource_id = #{resourceId,jdbcType=VARCHAR}, + + + part = #{part,jdbcType=BIGINT}, + + + content = #{content,jdbcType=LONGVARCHAR}, + + where id = #{id,jdbcType=VARCHAR} - update load_test_report_log - set report_id = #{reportId,jdbcType=VARCHAR}, + update load_test_report_log + set report_id = #{reportId,jdbcType=VARCHAR}, resource_id = #{resourceId,jdbcType=VARCHAR}, + part = #{part,jdbcType=BIGINT}, content = #{content,jdbcType=LONGVARCHAR} - where id = #{id,jdbcType=VARCHAR} + where id = #{id,jdbcType=VARCHAR} - update load_test_report_log - set report_id = #{reportId,jdbcType=VARCHAR}, - resource_id = #{resourceId,jdbcType=VARCHAR} - where id = #{id,jdbcType=VARCHAR} + update load_test_report_log + set report_id = #{reportId,jdbcType=VARCHAR}, + resource_id = #{resourceId,jdbcType=VARCHAR}, + part = #{part,jdbcType=BIGINT} + where id = #{id,jdbcType=VARCHAR} \ No newline at end of file From 7f915f8467c92b97f9cdec19643b126bb5894bc0 Mon Sep 17 00:00:00 2001 From: "Captain.B" Date: Wed, 20 May 2020 20:04:08 +0800 Subject: [PATCH 07/18] log model --- .../src/main/resources/db/migration/V2__metersphere_ddl.sql | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/backend/src/main/resources/db/migration/V2__metersphere_ddl.sql b/backend/src/main/resources/db/migration/V2__metersphere_ddl.sql index fe3fdeef0b..5e69ceaade 100644 --- a/backend/src/main/resources/db/migration/V2__metersphere_ddl.sql +++ b/backend/src/main/resources/db/migration/V2__metersphere_ddl.sql @@ -68,13 +68,14 @@ CREATE TABLE IF NOT EXISTS `load_test_report_detail` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; CREATE TABLE IF NOT EXISTS `load_test_report_log` ( - `id` varchar(50) NOT NULL, + `id` varchar(50) NOT NULL, `report_id` varchar(50) NOT NULL, `resource_id` varchar(50) DEFAULT NULL, `content` longtext , + `part` bigint(20) DEFAULT NULL, PRIMARY KEY (`id`), KEY `load_test_report_log_report_id_resource_name_index` (`report_id`,`resource_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ; CREATE TABLE IF NOT EXISTS `load_test_report_result` ( `id` varchar(50) NOT NULL, From 3b55c2236c6f40a9eeac53180993a11b7cafe54c Mon Sep 17 00:00:00 2001 From: "Captain.B" Date: Wed, 20 May 2020 20:28:06 +0800 Subject: [PATCH 08/18] download log --- .../java/io/metersphere/dto/LogDetailDTO.java | 2 +- .../PerformanceReportController.java | 6 +-- .../performance/service/ReportService.java | 46 +++++++++++-------- 3 files changed, 32 insertions(+), 22 deletions(-) diff --git a/backend/src/main/java/io/metersphere/dto/LogDetailDTO.java b/backend/src/main/java/io/metersphere/dto/LogDetailDTO.java index e10ea910b5..b882bf7915 100644 --- a/backend/src/main/java/io/metersphere/dto/LogDetailDTO.java +++ b/backend/src/main/java/io/metersphere/dto/LogDetailDTO.java @@ -6,7 +6,7 @@ import lombok.Setter; @Getter @Setter public class LogDetailDTO { - private String id; + private String resourceId; private String resourceName; private String content; } diff --git a/backend/src/main/java/io/metersphere/performance/controller/PerformanceReportController.java b/backend/src/main/java/io/metersphere/performance/controller/PerformanceReportController.java index a4b3ad5389..85b7fd2bf9 100644 --- a/backend/src/main/java/io/metersphere/performance/controller/PerformanceReportController.java +++ b/backend/src/main/java/io/metersphere/performance/controller/PerformanceReportController.java @@ -104,9 +104,9 @@ public class PerformanceReportController { return reportService.logs(reportId); } - @GetMapping("log/download/{logId}") - public ResponseEntity downloadLog(@PathVariable String logId) { - byte[] bytes = reportService.downloadLog(logId); + @GetMapping("log/download/{reportId}/{resourceId}") + public ResponseEntity downloadLog(@PathVariable String reportId, @PathVariable String resourceId) { + byte[] bytes = reportService.downloadLog(reportId, resourceId); return ResponseEntity.ok() .contentType(MediaType.parseMediaType("application/octet-stream")) .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"jmeter.log\"") diff --git a/backend/src/main/java/io/metersphere/performance/service/ReportService.java b/backend/src/main/java/io/metersphere/performance/service/ReportService.java index 53bb573428..f033d336c5 100644 --- a/backend/src/main/java/io/metersphere/performance/service/ReportService.java +++ b/backend/src/main/java/io/metersphere/performance/service/ReportService.java @@ -24,7 +24,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; @Service @@ -160,42 +162,50 @@ public class ReportService { public List logs(String reportId) { LoadTestReportLogExample example = new LoadTestReportLogExample(); example.createCriteria().andReportIdEqualTo(reportId); + example.setOrderByClause("part"); List loadTestReportLogs = loadTestReportLogMapper.selectByExampleWithBLOBs(example); - return loadTestReportLogs.stream().map(log -> { + Map> reportLogs = loadTestReportLogs.stream().collect(Collectors.groupingBy(LoadTestReportLog::getResourceId)); + List result = new ArrayList<>(); + reportLogs.forEach((resourceId, resourceLogs) -> { LogDetailDTO detailDTO = new LogDetailDTO(); - detailDTO.setId(log.getId()); - TestResource testResource = testResourceService.getTestResource(log.getResourceId()); - String content = log.getContent(); + TestResource testResource = testResourceService.getTestResource(resourceId); + String content = resourceLogs.stream().map(LoadTestReportLog::getContent).reduce("", (a, b) -> a + b); // 显示前 2048 content = StringUtils.substring(content, 0, 2048); + detailDTO.setResourceId(resourceId); detailDTO.setContent(content); if (testResource == null) { - detailDTO.setResourceName(log.getResourceId()); - return detailDTO; + detailDTO.setResourceName(resourceId); + result.add(detailDTO); + return; } String configuration = testResource.getConfiguration(); if (StringUtils.isBlank(configuration)) { - detailDTO.setResourceName(log.getResourceId()); - return detailDTO; + detailDTO.setResourceName(resourceId); + result.add(detailDTO); + return; } JSONObject object = JSON.parseObject(configuration); if (StringUtils.isNotBlank(object.getString("masterUrl"))) { detailDTO.setResourceName(object.getString("masterUrl")); - return detailDTO; + result.add(detailDTO); + return; } if (StringUtils.isNotBlank(object.getString("ip"))) { detailDTO.setResourceName(object.getString("ip")); - return detailDTO; + result.add(detailDTO); } - return detailDTO; - }).collect(Collectors.toList()); + }); + return result; } - public byte[] downloadLog(String logId) { - LoadTestReportLog loadTestReportLog = loadTestReportLogMapper.selectByPrimaryKey(logId); - if (loadTestReportLog != null) { - return loadTestReportLog.getContent().getBytes(); - } - return new byte[0]; + + public byte[] downloadLog(String reportId, String resourceId) { + LoadTestReportLogExample example = new LoadTestReportLogExample(); + example.createCriteria().andReportIdEqualTo(reportId).andResourceIdEqualTo(resourceId); + List loadTestReportLogs = loadTestReportLogMapper.selectByExampleWithBLOBs(example); + + String content = loadTestReportLogs.stream().map(LoadTestReportLog::getContent).reduce("", (a, b) -> a + b); + return content.getBytes(); } } From 159d94abfb03fed6f7bb6c2ea78c6c04d1903d02 Mon Sep 17 00:00:00 2001 From: "Captain.B" Date: Wed, 20 May 2020 20:30:04 +0800 Subject: [PATCH 09/18] download log --- .../components/performance/report/components/LogDetails.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/business/components/performance/report/components/LogDetails.vue b/frontend/src/business/components/performance/report/components/LogDetails.vue index b2c6c241a5..2d17185f00 100644 --- a/frontend/src/business/components/performance/report/components/LogDetails.vue +++ b/frontend/src/business/components/performance/report/components/LogDetails.vue @@ -1,7 +1,7 @@ - +