diff --git a/arex-schedule-web-api/pom.xml b/arex-schedule-web-api/pom.xml
index 7abf3215..a32717db 100644
--- a/arex-schedule-web-api/pom.xml
+++ b/arex-schedule-web-api/pom.xml
@@ -143,7 +143,7 @@
arex-schedule-parent
com.arextest
- 1.0.39
+ 1.0.40
@@ -280,5 +280,5 @@
- 1.0.39
+ 1.0.40
\ No newline at end of file
diff --git a/arex-schedule-web-api/src/main/java/com/arextest/schedule/comparer/CompareConfigService.java b/arex-schedule-web-api/src/main/java/com/arextest/schedule/comparer/CompareConfigService.java
index 43402bf3..7f73bdff 100644
--- a/arex-schedule-web-api/src/main/java/com/arextest/schedule/comparer/CompareConfigService.java
+++ b/arex-schedule-web-api/src/main/java/com/arextest/schedule/comparer/CompareConfigService.java
@@ -11,6 +11,7 @@
import com.arextest.schedule.model.converter.ReplayConfigConverter;
import com.arextest.schedule.progress.ProgressEvent;
import com.arextest.schedule.utils.MapUtils;
+import com.arextest.web.model.contract.contracts.config.SystemConfig;
import com.arextest.web.model.contract.contracts.config.replay.ReplayCompareConfig;
import com.arextest.web.model.contract.contracts.config.replay.ReplayCompareConfig.DependencyComparisonItem;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -29,6 +30,7 @@
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.ResponseEntity;
+import org.springframework.retry.support.RetryTemplate;
import org.springframework.stereotype.Component;
/**
@@ -46,53 +48,60 @@ public final class CompareConfigService {
private CacheProvider redisCacheProvider;
@Value("${arex.api.config.comparison.summary.url}")
private String summaryConfigUrl;
+ @Value("${arex.api.config.system.url}")
+ private String systemConfigUrl;
@Resource
private ProgressEvent progressEvent;
@Resource
private ObjectMapper objectMapper;
- private static Map convertOperationConfig(
- List operationConfigs) {
- Map res = new HashMap<>();
+ private static final RetryTemplate RETRY_TEMPLATE = RetryTemplate.builder().maxAttempts(3)
+ .fixedBackoff(200L)
+ .build();
+ private static final long DEFAULT_COMPARE_IGNORE_TIME_PRECISION_MILLIS = 2000;
+ private static final boolean DEFAULT_COMPARE_NAME_TO_LOWER = true;
+ private static final boolean DEFAULT_COMPARE_NULL_EQUALS_EMPTY = true;
+ private static final boolean DEFAULT_COMPARE_ONLY_COMPARE_COINCIDENT_COLUMN = true;
+ private static final boolean DEFAULT_COMPARE_SELECT_IGNORE_COMPARE = true;
+ private static final boolean DEFAULT_COMPARE_UUID_IGNORE = true;
- for (ReplayCompareConfig.ReplayComparisonItem source : operationConfigs) {
- String operationId = source.getOperationId();
- if (StringUtils.isBlank(operationId)) {
- LOGGER.warn("operation id is blank, operationId: {}", operationId);
- continue;
- }
+ private static SystemConfig systemConfig = null;
- ComparisonInterfaceConfig converted = ReplayConfigConverter.INSTANCE.interfaceDaoFromDto(
- source);
- List sourceDependencyConfigs = source.getDependencyComparisonItems();
- converted.setDependencyConfigMap(convertDependencyConfig(sourceDependencyConfigs));
- DependencyComparisonItem defaultDependencyComparisonItem = source.getDefaultDependencyComparisonItem();
- converted.setDefaultDependencyConfig(
- ReplayConfigConverter.INSTANCE.dependencyDaoFromDto(defaultDependencyComparisonItem));
- res.put(operationId, converted);
+ public SystemConfig getComparisonSystemConfig() {
+
+ if (systemConfig != null) {
+ return systemConfig;
}
- return res;
- }
+ ResponseEntity> response = RETRY_TEMPLATE.execute(context -> {
+ ResponseEntity> temp = httpWepServiceApiClient.get(
+ systemConfigUrl, Collections.emptyMap(),
+ new ParameterizedTypeReference>() {
+ });
- private static Map convertDependencyConfig(
- List dependencyConfigs) {
- Map res = new HashMap<>();
-
- for (ReplayCompareConfig.DependencyComparisonItem source : dependencyConfigs) {
- if (CollectionUtils.isEmpty(source.getOperationTypes()) || StringUtils.isBlank(
- source.getOperationName())) {
- LOGGER.warn("dependency type or name is blank, dependencyId: {}", source.getDependencyId());
- continue;
+ if (temp == null || temp.getBody() == null || temp.getBody().getBody() == null) {
+ throw new RuntimeException("get compare system config failed");
+ } else {
+ return temp;
}
-
- String dependencyKey = ComparisonDependencyConfig.dependencyKey(source);
- ComparisonDependencyConfig converted = ReplayConfigConverter.INSTANCE.dependencyDaoFromDto(
- source);
- res.put(dependencyKey, converted);
+ }, retryContext -> null);
+
+ if (response == null || response.getBody() == null || response.getBody().getBody() == null) {
+ LOGGER.error("get compare system config failed");
+ SystemConfig defaultConfig = new SystemConfig();
+ defaultConfig.setCompareIgnoreTimePrecisionMillis(
+ DEFAULT_COMPARE_IGNORE_TIME_PRECISION_MILLIS);
+ defaultConfig.setCompareNameToLower(DEFAULT_COMPARE_NAME_TO_LOWER);
+ defaultConfig.setCompareNullEqualsEmpty(DEFAULT_COMPARE_NULL_EQUALS_EMPTY);
+ defaultConfig.setOnlyCompareCoincidentColumn(DEFAULT_COMPARE_ONLY_COMPARE_COINCIDENT_COLUMN);
+ defaultConfig.setSelectIgnoreCompare(DEFAULT_COMPARE_SELECT_IGNORE_COMPARE);
+ defaultConfig.setUuidIgnore(DEFAULT_COMPARE_UUID_IGNORE);
+ systemConfig = defaultConfig;
+ } else {
+ systemConfig = response.getBody().getBody();
}
- return res;
+ return systemConfig;
}
public void preload(ReplayPlan plan) {
@@ -125,33 +134,6 @@ public void preload(ReplayPlan plan) {
progressEvent.onCompareConfigLoaded(plan);
}
- private Map getReplayComparisonConfig(
- ReplayPlan plan) {
- Map urlVariables = Collections.singletonMap("appId", plan.getAppId());
-
- ResponseEntity> replayComparisonConfigEntity =
- httpWepServiceApiClient.get(summaryConfigUrl, urlVariables,
- new ParameterizedTypeReference>() {
- });
-
- if (replayComparisonConfigEntity == null) {
- return new HashMap<>();
- }
-
- List operationConfigs = Optional.ofNullable(
- replayComparisonConfigEntity.getBody())
- .map(GenericResponseType::getBody)
- .map(ReplayCompareConfig::getReplayComparisonItems)
- .orElse(Collections.emptyList());
- // TODO: add the log of the ComparisonConfig
-
- // converts
- Map opConverted = convertOperationConfig(operationConfigs);
- this.setContractChangeFlag(opConverted,
- replayComparisonConfigEntity.getBody().getBody().getSkipAssemble());
- return opConverted;
- }
-
public ComparisonInterfaceConfig loadInterfaceConfig(ReplayActionItem actionItem) {
return this.loadInterfaceConfig(actionItem.getId());
}
@@ -193,6 +175,77 @@ public ComparisonGlobalConfig loadGlobalConfig(String planId) {
return ComparisonGlobalConfig.empty();
}
+ private Map getReplayComparisonConfig(
+ ReplayPlan plan) {
+ Map urlVariables = Collections.singletonMap("appId", plan.getAppId());
+
+ ResponseEntity> replayComparisonConfigEntity =
+ httpWepServiceApiClient.get(summaryConfigUrl, urlVariables,
+ new ParameterizedTypeReference>() {
+ });
+
+ if (replayComparisonConfigEntity == null) {
+ return new HashMap<>();
+ }
+
+ List operationConfigs = Optional.ofNullable(
+ replayComparisonConfigEntity.getBody())
+ .map(GenericResponseType::getBody)
+ .map(ReplayCompareConfig::getReplayComparisonItems)
+ .orElse(Collections.emptyList());
+ // TODO: add the log of the ComparisonConfig
+
+ // converts
+ Map opConverted = convertOperationConfig(operationConfigs);
+ this.setContractChangeFlag(opConverted,
+ replayComparisonConfigEntity.getBody().getBody().getSkipAssemble());
+ return opConverted;
+ }
+
+ private static Map convertOperationConfig(
+ List operationConfigs) {
+ Map res = new HashMap<>();
+
+ for (ReplayCompareConfig.ReplayComparisonItem source : operationConfigs) {
+ String operationId = source.getOperationId();
+ if (StringUtils.isBlank(operationId)) {
+ LOGGER.warn("operation id is blank, operationId: {}", operationId);
+ continue;
+ }
+
+ ComparisonInterfaceConfig converted = ReplayConfigConverter.INSTANCE.interfaceDaoFromDto(
+ source);
+ List sourceDependencyConfigs = source.getDependencyComparisonItems();
+ converted.setDependencyConfigMap(convertDependencyConfig(sourceDependencyConfigs));
+ DependencyComparisonItem defaultDependencyComparisonItem = source.getDefaultDependencyComparisonItem();
+ converted.setDefaultDependencyConfig(
+ ReplayConfigConverter.INSTANCE.dependencyDaoFromDto(defaultDependencyComparisonItem));
+ res.put(operationId, converted);
+ }
+
+ return res;
+ }
+
+ private static Map convertDependencyConfig(
+ List dependencyConfigs) {
+ Map res = new HashMap<>();
+
+ for (ReplayCompareConfig.DependencyComparisonItem source : dependencyConfigs) {
+ if (CollectionUtils.isEmpty(source.getOperationTypes()) || StringUtils.isBlank(
+ source.getOperationName())) {
+ LOGGER.warn("dependency type or name is blank, dependencyId: {}", source.getDependencyId());
+ continue;
+ }
+
+ String dependencyKey = ComparisonDependencyConfig.dependencyKey(source);
+ ComparisonDependencyConfig converted = ReplayConfigConverter.INSTANCE.dependencyDaoFromDto(
+ source);
+ res.put(dependencyKey, converted);
+ }
+
+ return res;
+ }
+
private T byteToObject(byte[] bytes, Class tClass) {
try {
return objectMapper.readValue(bytes, tClass);
diff --git a/arex-schedule-web-api/src/main/java/com/arextest/schedule/comparer/impl/DefaultCustomComparisonConfigurationHandler.java b/arex-schedule-web-api/src/main/java/com/arextest/schedule/comparer/impl/DefaultCustomComparisonConfigurationHandler.java
index f47e8511..6894e6da 100644
--- a/arex-schedule-web-api/src/main/java/com/arextest/schedule/comparer/impl/DefaultCustomComparisonConfigurationHandler.java
+++ b/arex-schedule-web-api/src/main/java/com/arextest/schedule/comparer/impl/DefaultCustomComparisonConfigurationHandler.java
@@ -76,10 +76,6 @@ public ReplayComparisonConfig pickConfig(ComparisonGlobalConfig globalConfig,
public CompareOptions buildSkdOption(String category, ReplayComparisonConfig compareConfig) {
CompareOptions options = new CompareOptions();
options.putCategoryType(category);
- // todo: the switch of "sqlBodyParse" and "onlyCompareCoincidentColumn"
- // need get from ReplayComparisonConfig
- options.putSelectIgnoreCompare(true);
- options.putOnlyCompareCoincidentColumn(true);
if (Objects.equals(category, MockCategoryType.DATABASE.getName())) {
options.putExclusions(DEFAULT_DATABASE_IGNORE);
}
diff --git a/arex-schedule-web-api/src/main/java/com/arextest/schedule/comparer/impl/DefaultReplayResultComparer.java b/arex-schedule-web-api/src/main/java/com/arextest/schedule/comparer/impl/DefaultReplayResultComparer.java
index 12d8dab8..ffe7d1da 100644
--- a/arex-schedule-web-api/src/main/java/com/arextest/schedule/comparer/impl/DefaultReplayResultComparer.java
+++ b/arex-schedule-web-api/src/main/java/com/arextest/schedule/comparer/impl/DefaultReplayResultComparer.java
@@ -24,17 +24,16 @@
import com.arextest.schedule.model.config.ReplayComparisonConfig;
import com.arextest.schedule.progress.ProgressTracer;
import com.arextest.schedule.service.MetricService;
-import java.io.IOException;
-import java.io.InputStream;
+import com.arextest.web.model.contract.contracts.config.SystemConfig;
import java.util.ArrayList;
import java.util.Base64;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Properties;
import java.util.Set;
import java.util.stream.Collectors;
+import javax.annotation.PostConstruct;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.extern.slf4j.Slf4j;
@@ -54,19 +53,17 @@ public class DefaultReplayResultComparer implements ReplayResultComparer {
private static final String IGNORE_TIME_PRECISION_MILLIS_KEY = "ignore.time.precision.millis";
private static long ignoreTimePrecisionMillis = 2000;
- static {
- Properties props = new Properties();
- try (InputStream input = DefaultReplayResultComparer.class.getResourceAsStream(
- APPLICATION_PROPERTIES_NAME)) {
- props.load(input);
- ignoreTimePrecisionMillis = Long.parseLong(
- props.getProperty(IGNORE_TIME_PRECISION_MILLIS_KEY));
- } catch (IOException e) {
- LOGGER.error("failed to get ignore time precision millis {}", e.getMessage(), e);
- }
-
- COMPARE_INSTANCE.getGlobalOptions().putNameToLower(true).putNullEqualsEmpty(true)
- .putIgnoredTimePrecision(ignoreTimePrecisionMillis);
+ @PostConstruct
+ public void init() {
+ SystemConfig comparisonSystemConfig = compareConfigService.getComparisonSystemConfig();
+ COMPARE_INSTANCE.getGlobalOptions()
+ .putNameToLower(comparisonSystemConfig.getCompareNameToLower())
+ .putNullEqualsEmpty(comparisonSystemConfig.getCompareNullEqualsEmpty())
+ .putIgnoredTimePrecision(comparisonSystemConfig.getCompareIgnoreTimePrecisionMillis())
+ .putIgnoreNodeSet(comparisonSystemConfig.getIgnoreNodeSet())
+ .putSelectIgnoreCompare(comparisonSystemConfig.getSelectIgnoreCompare())
+ .putOnlyCompareCoincidentColumn(comparisonSystemConfig.getOnlyCompareCoincidentColumn())
+ .putUuidIgnore(comparisonSystemConfig.getUuidIgnore());
}
private final CompareConfigService compareConfigService;
diff --git a/arex-schedule-web-api/src/main/java/com/arextest/schedule/model/config/AbstractCompareDetailConfig.java b/arex-schedule-web-api/src/main/java/com/arextest/schedule/model/config/AbstractCompareDetailConfig.java
index 60126301..e235ae28 100644
--- a/arex-schedule-web-api/src/main/java/com/arextest/schedule/model/config/AbstractCompareDetailConfig.java
+++ b/arex-schedule-web-api/src/main/java/com/arextest/schedule/model/config/AbstractCompareDetailConfig.java
@@ -6,6 +6,7 @@
/**
* Created by rchen9 on 2022/9/19.
*/
+@Deprecated
@Getter
@Setter
public abstract class AbstractCompareDetailConfig {
diff --git a/arex-schedule-web-api/src/main/java/com/arextest/schedule/model/config/CompareExclusionsConfig.java b/arex-schedule-web-api/src/main/java/com/arextest/schedule/model/config/CompareExclusionsConfig.java
index c09d03ac..31ea2428 100644
--- a/arex-schedule-web-api/src/main/java/com/arextest/schedule/model/config/CompareExclusionsConfig.java
+++ b/arex-schedule-web-api/src/main/java/com/arextest/schedule/model/config/CompareExclusionsConfig.java
@@ -6,6 +6,7 @@
/**
* Created by rchen9 on 2022/9/19.
*/
+@Deprecated
@Data
public class CompareExclusionsConfig extends AbstractCompareDetailConfig {
diff --git a/arex-schedule-web-api/src/main/java/com/arextest/schedule/model/config/CompareInclusionsConfig.java b/arex-schedule-web-api/src/main/java/com/arextest/schedule/model/config/CompareInclusionsConfig.java
index 2cb16e5c..3958e8d3 100644
--- a/arex-schedule-web-api/src/main/java/com/arextest/schedule/model/config/CompareInclusionsConfig.java
+++ b/arex-schedule-web-api/src/main/java/com/arextest/schedule/model/config/CompareInclusionsConfig.java
@@ -6,6 +6,7 @@
/**
* Created by rchen9 on 2022/9/19.
*/
+@Deprecated
@Data
public class CompareInclusionsConfig extends AbstractCompareDetailConfig {
diff --git a/arex-schedule-web-api/src/main/java/com/arextest/schedule/model/config/CompareListSortConfig.java b/arex-schedule-web-api/src/main/java/com/arextest/schedule/model/config/CompareListSortConfig.java
index 8cdfd5ca..a3c77cd1 100644
--- a/arex-schedule-web-api/src/main/java/com/arextest/schedule/model/config/CompareListSortConfig.java
+++ b/arex-schedule-web-api/src/main/java/com/arextest/schedule/model/config/CompareListSortConfig.java
@@ -6,6 +6,7 @@
/**
* Created by rchen9 on 2022/9/20.
*/
+@Deprecated
@Data
public class CompareListSortConfig extends AbstractCompareDetailConfig {
diff --git a/arex-schedule-web-api/src/main/java/com/arextest/schedule/model/config/CompareReferenceConfig.java b/arex-schedule-web-api/src/main/java/com/arextest/schedule/model/config/CompareReferenceConfig.java
index 3b5dc37b..f587b325 100644
--- a/arex-schedule-web-api/src/main/java/com/arextest/schedule/model/config/CompareReferenceConfig.java
+++ b/arex-schedule-web-api/src/main/java/com/arextest/schedule/model/config/CompareReferenceConfig.java
@@ -6,6 +6,7 @@
/**
* Created by rchen9 on 2022/9/20.
*/
+@Deprecated
@Data
public class CompareReferenceConfig extends AbstractCompareDetailConfig {
diff --git a/arex-schedule-web-api/src/main/resources/application.properties b/arex-schedule-web-api/src/main/resources/application.properties
index d0f4ffc9..99967d65 100644
--- a/arex-schedule-web-api/src/main/resources/application.properties
+++ b/arex-schedule-web-api/src/main/resources/application.properties
@@ -11,12 +11,12 @@ arex.storage.replayCase.url=${arex.storage.service.api}/api/storage/replay/query
arex.storage.postProcess.url=${arex.storage.service.api}/api/storage/replay/postprocessResult
#for arex-api
arex.api.init.url=${arex.api.service.api}/api/report/init
-# deprecated arex.api.push.compareResult.url=${arex.api.service.api}/api/report/pushCompareResults
arex.api.push.compareResult.url=${arex.api.service.api}/api/report/analyzeCompareResults
arex.api.push.replayStatus.url=${arex.api.service.api}/api/report/pushReplayStatus
arex.api.update.report.info.url=${arex.api.service.api}/api/report/updateReportInfo
arex.api.remove.records.url=${arex.api.service.api}/api/report/removeRecordsAndScenes
#for schedule
+arex.api.config.system.url=${arex.api.service.api}/api/system/config/list
arex.api.config.comparison.summary.url=${arex.api.service.api}/api/config/comparison/summary/queryByAppId/{appId}
arex.api.config.schedule.url=${arex.api.service.api}/api/config/schedule/useResult/appId/{appId}
arex.api.config.applicationService.url=${arex.api.service.api}/api/config/applicationService/useResultAsList/appId/{appId}
diff --git a/pom.xml b/pom.xml
index c4db53cd..219a4e2d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -263,7 +263,7 @@
pom
3.3.2
- 0.1.27
+ 0.2.0
2.0.23
20.0
0.7.5.201505241946
@@ -294,7 +294,7 @@
${jacoco.report.path}
2.6.3
- 0.6.0.4
+ 0.6.0.7
@@ -304,5 +304,5 @@
https://github.com/arextest/arex-replay-schedule
https://github.com/arextest/arex-replay-schedule
- 1.0.39
+ 1.0.40
\ No newline at end of file