Skip to content

Commit

Permalink
feat: configure mocker expiration time (#240)
Browse files Browse the repository at this point in the history
  • Loading branch information
pangdayuan1 authored Jun 28, 2024
1 parent 449888a commit 77bc985
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import com.arextest.storage.repository.RepositoryProviderFactory;
import com.arextest.storage.utils.JsonUtil;
import com.fasterxml.jackson.core.type.TypeReference;
import java.sql.Date;
import java.util.Date;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.ArrayList;
Expand Down Expand Up @@ -217,10 +217,12 @@ public boolean extendMockerExpirationByRecordId(String providerName, String reco
return false;
}
long updateCount = 0;
Date expireDate = Date.from(LocalDateTime.now().plusDays(extensionDays).atZone(
ZoneId.systemDefault()).toInstant());

for (MockCategoryType categoryType : providerFactory.getCategoryTypes()) {
updateCount += repositoryWriter.extendExpirationTo(categoryType, recordId,
Date.from(LocalDateTime.now().plusDays(extensionDays).atZone(
ZoneId.systemDefault()).toInstant()));
expireDate);
}
LOGGER.info("extendMockerExpirationByRecordId updated {} mockers for recordId: {}",
updateCount, recordId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public String getConfigAsString(String key, String defaultValue) {

public int getConfigAsInt(String key, int defaultValue) {
String value = getConfigAsString(key);
if (!StringUtils.isNumeric(value)) {
if (StringUtils.isBlank(value)) {
return defaultValue;
}

Expand All @@ -28,16 +28,26 @@ public int getConfigAsInt(String key, int defaultValue) {
}
}

public boolean getConfigAsBoolean(String key, boolean defaultValue) {
public long getConfigAsLong(String key, long defaultValue) {
String value = getConfigAsString(key);
if (StringUtils.isBlank(value) || !isBoolean(value)) {
if (StringUtils.isBlank(value)) {
return defaultValue;
}

try {
return Long.parseLong(value);
} catch (NumberFormatException e) {
return defaultValue;
}
return Boolean.parseBoolean(value);
}

private boolean isBoolean(String value) {
return "true".equalsIgnoreCase(value) || "false".equalsIgnoreCase(value);
public boolean getConfigAsBoolean(String key, boolean defaultValue) {
String value = getConfigAsString(key);
if (StringUtils.isBlank(value)) {
return defaultValue;
}

return Boolean.parseBoolean(value);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import com.arextest.storage.repository.scenepool.ScenePoolProvider;
import com.arextest.storage.service.InvalidRecordService;
import com.arextest.storage.service.MockSourceEditionService;
import com.arextest.storage.service.config.ApplicationDefaultConfig;
import com.arextest.storage.service.handler.mocker.MockerHandler;
import com.arextest.storage.trace.MDCTracer;
import java.util.HashMap;
Expand All @@ -35,6 +36,7 @@ public class CoverageMockerHandler implements MockerHandler {
private ScenePoolFactory scenePoolFactory;
private CoverageHandlerSwitch handlerSwitch;
private InvalidRecordService invalidRecordService;
private ApplicationDefaultConfig applicationDefaultConfig;
public final List<MetricListener> metricListeners;
// coverage metric constants
private static final String COVERAGE_METRIC_NAME = "coverage.recording";
Expand Down Expand Up @@ -70,7 +72,7 @@ public void handleOnRecordSaving(Mocker coverageMocker) {
// if replayId is empty, meaning this coverage mocker is received during record phase
if (StringUtils.isEmpty(coverageMocker.getReplayId()) && handlerSwitch.allowRecordTask(appId)) {
scenePoolProvider = scenePoolFactory.getProvider(ScenePoolFactory.RECORDING_SCENE_POOL);
task = new RecordTask(scenePoolProvider, coverageMocker, invalidRecordService);
task = new RecordTask(scenePoolProvider, coverageMocker, invalidRecordService, applicationDefaultConfig);
coverageHandleDelayedPool.schedule(task, 5, TimeUnit.SECONDS);

} else if (CaseSendScene.MIXED_NORMAL.name().equals(scheduleSendScene) &&
Expand Down Expand Up @@ -163,7 +165,10 @@ private class RecordTask implements Runnable {
private final ScenePoolProvider scenePoolProvider;
private final Mocker coverageMocker;
private final InvalidRecordService invalidRecordService;
private static final long EXPIRATION_EXTENSION_DAYS = 14L;
private final ApplicationDefaultConfig applicationDefaultConfig;

private static final long COVERAGE_EXPIRATION_DAYS = 14L;
private static final String COVERAGE_EXPIRATION_DAYS_KEY = "coverage.expiration.days";
private static final String NEW_SCENE_OP = "NEW_SCENE";
private static final String EXISTING_SCENE_OP = "EXISTING_SCENE";

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

scenePoolProvider.upsertOne(scene);
mockSourceEditionService.extendMockerExpirationByRecordId(ProviderNames.DEFAULT,
coverageMocker.getRecordId(), EXPIRATION_EXTENSION_DAYS);
coverageMocker.getRecordId(),
applicationDefaultConfig.getConfigAsLong(COVERAGE_EXPIRATION_DAYS_KEY, COVERAGE_EXPIRATION_DAYS));
LOGGER.info("CoverageMockerHandler received new case, recordId: {}, pathKey: {}",
coverageMocker.getRecordId(), coverageMocker.getOperationName());
}
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -427,7 +427,7 @@
</profiles>

<properties>
<revision>1.2.11</revision>
<revision>1.2.12</revision>
<commons-lang3.version>3.3.2</commons-lang3.version>
<java.version>1.8</java.version>

Expand Down

0 comments on commit 77bc985

Please sign in to comment.