From 380956f96d0822967c1a21ce6b0e4f005310fc64 Mon Sep 17 00:00:00 2001 From: fit2-zhao Date: Sun, 4 Feb 2024 09:42:55 +0800 Subject: [PATCH] =?UTF-8?q?chore(=E6=8E=A5=E5=8F=A3=E6=B5=8B=E8=AF=95):=20?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E8=AF=AF=E6=8A=A5=E5=A4=84=E7=90=86=E7=A7=BB?= =?UTF-8?q?=E5=8A=A8=E5=88=B0=E8=B5=84=E6=BA=90=E6=B1=A0=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sdk/util/fake/error/FakeErrorUtils.java | 87 ------------------- .../api/service/ApiExecuteService.java | 11 +-- 2 files changed, 4 insertions(+), 94 deletions(-) delete mode 100644 backend/framework/sdk/src/main/java/io/metersphere/sdk/util/fake/error/FakeErrorUtils.java diff --git a/backend/framework/sdk/src/main/java/io/metersphere/sdk/util/fake/error/FakeErrorUtils.java b/backend/framework/sdk/src/main/java/io/metersphere/sdk/util/fake/error/FakeErrorUtils.java deleted file mode 100644 index 38442c5644..0000000000 --- a/backend/framework/sdk/src/main/java/io/metersphere/sdk/util/fake/error/FakeErrorUtils.java +++ /dev/null @@ -1,87 +0,0 @@ -package io.metersphere.sdk.util.fake.error; - -import io.metersphere.sdk.constants.ApiReportStatus; -import io.metersphere.sdk.dto.api.result.MsRegexDTO; -import io.metersphere.sdk.dto.api.result.RequestResult; -import io.metersphere.sdk.util.LogUtils; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang3.BooleanUtils; -import org.apache.commons.lang3.StringUtils; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * 误报解析类 - */ -public class FakeErrorUtils { - public static void compute(RequestResult result, List regexDTOS) { - try { - if (result != null && StringUtils.isNotBlank(result.getProjectId()) && - CollectionUtils.isNotEmpty(regexDTOS)) { - - Map> fakeErrorMap = regexDTOS.stream() - .collect(Collectors.groupingBy(MsRegexDTO::getProjectId)); - - List regexList = fakeErrorMap.get(result.getProjectId()); - //根据配置来筛选断言、获取误报编码、获取接口状态是否是误报 - List errorCodeList = new ArrayList<>(); - regexList.forEach(item -> { - if (StringUtils.isNotEmpty(item.getType())) { - switch (item.getRespType()) { - case "Response Code" -> - item.setPass(parseResponseCode(result.getResponseResult().getResponseCode(), item.getExpression(), item.getRelation())); - - case "Response Headers" -> - item.setPass(parseResponseCode(result.getResponseResult().getHeaders(), item.getExpression(), item.getRelation())); - - case "Response Data" -> - item.setPass(parseResponseCode(result.getResponseResult().getBody(), item.getExpression(), item.getRelation())); - default -> item.setPass(false); - } - } - if (BooleanUtils.isTrue(item.getPass())) { - errorCodeList.add(item.getName()); - } - }); - if (CollectionUtils.isNotEmpty(errorCodeList)) { - result.setStatus(ApiReportStatus.FAKE_ERROR.name()); - result.setFakeErrorCode(getErrorCodeStr(errorCodeList)); - } - } - } catch (Exception e) { - LogUtils.error("误报处理错误:", e); - } - } - - private static boolean parseResponseCode(String result, String regexDTO, String condition) { - return switch (condition.toUpperCase()) { - case "CONTAINS" -> result.contains(regexDTO); - - case "NOT_CONTAINS" -> notContains(result, regexDTO); - - case "EQUALS" -> StringUtils.equals(result, regexDTO); - - case "START_WITH" -> result.startsWith(regexDTO); - - case "END_WITH" -> result.endsWith(regexDTO); - - default -> false; - }; - } - - private static String getErrorCodeStr(List errorCodeList) { - if (CollectionUtils.isNotEmpty(errorCodeList)) { - String errorCodeStr = StringUtils.join(errorCodeList, ";"); - return errorCodeStr; - } else { - return StringUtils.EMPTY; - } - } - - private static boolean notContains(String result, String regexDTO) { - return !result.contains(regexDTO); - } -} \ No newline at end of file diff --git a/backend/services/api-test/src/main/java/io/metersphere/api/service/ApiExecuteService.java b/backend/services/api-test/src/main/java/io/metersphere/api/service/ApiExecuteService.java index af3e42e7bf..40c5947735 100644 --- a/backend/services/api-test/src/main/java/io/metersphere/api/service/ApiExecuteService.java +++ b/backend/services/api-test/src/main/java/io/metersphere/api/service/ApiExecuteService.java @@ -48,12 +48,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.File; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; import static io.metersphere.api.controller.result.ApiResultCode.RESOURCE_POOL_EXECUTE_ERROR; @@ -130,7 +125,9 @@ public class ApiExecuteService { setTaskFileParam(request, taskRequest); // 误报处理 - taskRequest.setMsRegexList(projectApplicationService.get(Arrays.asList(request.getProjectId()))); + if (StringUtils.isNotBlank(request.getProjectId())) { + taskRequest.setMsRegexList(projectApplicationService.get(Collections.singletonList(request.getProjectId()))); + } // todo 获取接口插件和jar包 // todo 处理公共脚本