Skip to content

Commit 77bc985

Browse files
authored
feat: configure mocker expiration time (#240)
1 parent 449888a commit 77bc985

File tree

4 files changed

+31
-13
lines changed

4 files changed

+31
-13
lines changed

arex-storage-web-api/src/main/java/com/arextest/storage/service/MockSourceEditionService.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import com.arextest.storage.repository.RepositoryProviderFactory;
99
import com.arextest.storage.utils.JsonUtil;
1010
import com.fasterxml.jackson.core.type.TypeReference;
11-
import java.sql.Date;
11+
import java.util.Date;
1212
import java.time.LocalDateTime;
1313
import java.time.ZoneId;
1414
import java.util.ArrayList;
@@ -217,10 +217,12 @@ public boolean extendMockerExpirationByRecordId(String providerName, String reco
217217
return false;
218218
}
219219
long updateCount = 0;
220+
Date expireDate = Date.from(LocalDateTime.now().plusDays(extensionDays).atZone(
221+
ZoneId.systemDefault()).toInstant());
222+
220223
for (MockCategoryType categoryType : providerFactory.getCategoryTypes()) {
221224
updateCount += repositoryWriter.extendExpirationTo(categoryType, recordId,
222-
Date.from(LocalDateTime.now().plusDays(extensionDays).atZone(
223-
ZoneId.systemDefault()).toInstant()));
225+
expireDate);
224226
}
225227
LOGGER.info("extendMockerExpirationByRecordId updated {} mockers for recordId: {}",
226228
updateCount, recordId);

arex-storage-web-api/src/main/java/com/arextest/storage/service/config/AbstractConfig.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public String getConfigAsString(String key, String defaultValue) {
1717

1818
public int getConfigAsInt(String key, int defaultValue) {
1919
String value = getConfigAsString(key);
20-
if (!StringUtils.isNumeric(value)) {
20+
if (StringUtils.isBlank(value)) {
2121
return defaultValue;
2222
}
2323

@@ -28,16 +28,26 @@ public int getConfigAsInt(String key, int defaultValue) {
2828
}
2929
}
3030

31-
public boolean getConfigAsBoolean(String key, boolean defaultValue) {
31+
public long getConfigAsLong(String key, long defaultValue) {
3232
String value = getConfigAsString(key);
33-
if (StringUtils.isBlank(value) || !isBoolean(value)) {
33+
if (StringUtils.isBlank(value)) {
34+
return defaultValue;
35+
}
36+
37+
try {
38+
return Long.parseLong(value);
39+
} catch (NumberFormatException e) {
3440
return defaultValue;
3541
}
36-
return Boolean.parseBoolean(value);
3742
}
3843

39-
private boolean isBoolean(String value) {
40-
return "true".equalsIgnoreCase(value) || "false".equalsIgnoreCase(value);
44+
public boolean getConfigAsBoolean(String key, boolean defaultValue) {
45+
String value = getConfigAsString(key);
46+
if (StringUtils.isBlank(value)) {
47+
return defaultValue;
48+
}
49+
50+
return Boolean.parseBoolean(value);
4151
}
4252

4353
}

arex-storage-web-api/src/main/java/com/arextest/storage/service/handler/mocker/coverage/CoverageMockerHandler.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.arextest.storage.repository.scenepool.ScenePoolProvider;
1313
import com.arextest.storage.service.InvalidRecordService;
1414
import com.arextest.storage.service.MockSourceEditionService;
15+
import com.arextest.storage.service.config.ApplicationDefaultConfig;
1516
import com.arextest.storage.service.handler.mocker.MockerHandler;
1617
import com.arextest.storage.trace.MDCTracer;
1718
import java.util.HashMap;
@@ -35,6 +36,7 @@ public class CoverageMockerHandler implements MockerHandler {
3536
private ScenePoolFactory scenePoolFactory;
3637
private CoverageHandlerSwitch handlerSwitch;
3738
private InvalidRecordService invalidRecordService;
39+
private ApplicationDefaultConfig applicationDefaultConfig;
3840
public final List<MetricListener> metricListeners;
3941
// coverage metric constants
4042
private static final String COVERAGE_METRIC_NAME = "coverage.recording";
@@ -70,7 +72,7 @@ public void handleOnRecordSaving(Mocker coverageMocker) {
7072
// if replayId is empty, meaning this coverage mocker is received during record phase
7173
if (StringUtils.isEmpty(coverageMocker.getReplayId()) && handlerSwitch.allowRecordTask(appId)) {
7274
scenePoolProvider = scenePoolFactory.getProvider(ScenePoolFactory.RECORDING_SCENE_POOL);
73-
task = new RecordTask(scenePoolProvider, coverageMocker, invalidRecordService);
75+
task = new RecordTask(scenePoolProvider, coverageMocker, invalidRecordService, applicationDefaultConfig);
7476
coverageHandleDelayedPool.schedule(task, 5, TimeUnit.SECONDS);
7577

7678
} else if (CaseSendScene.MIXED_NORMAL.name().equals(scheduleSendScene) &&
@@ -163,7 +165,10 @@ private class RecordTask implements Runnable {
163165
private final ScenePoolProvider scenePoolProvider;
164166
private final Mocker coverageMocker;
165167
private final InvalidRecordService invalidRecordService;
166-
private static final long EXPIRATION_EXTENSION_DAYS = 14L;
168+
private final ApplicationDefaultConfig applicationDefaultConfig;
169+
170+
private static final long COVERAGE_EXPIRATION_DAYS = 14L;
171+
private static final String COVERAGE_EXPIRATION_DAYS_KEY = "coverage.expiration.days";
167172
private static final String NEW_SCENE_OP = "NEW_SCENE";
168173
private static final String EXISTING_SCENE_OP = "EXISTING_SCENE";
169174

@@ -190,7 +195,8 @@ public void run() {
190195

191196
scenePoolProvider.upsertOne(scene);
192197
mockSourceEditionService.extendMockerExpirationByRecordId(ProviderNames.DEFAULT,
193-
coverageMocker.getRecordId(), EXPIRATION_EXTENSION_DAYS);
198+
coverageMocker.getRecordId(),
199+
applicationDefaultConfig.getConfigAsLong(COVERAGE_EXPIRATION_DAYS_KEY, COVERAGE_EXPIRATION_DAYS));
194200
LOGGER.info("CoverageMockerHandler received new case, recordId: {}, pathKey: {}",
195201
coverageMocker.getRecordId(), coverageMocker.getOperationName());
196202
}

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@
427427
</profiles>
428428

429429
<properties>
430-
<revision>1.2.11</revision>
430+
<revision>1.2.12</revision>
431431
<commons-lang3.version>3.3.2</commons-lang3.version>
432432
<java.version>1.8</java.version>
433433

0 commit comments

Comments
 (0)