diff --git a/.gitmodules b/.gitmodules index c01be5d..16b9275 100644 --- a/.gitmodules +++ b/.gitmodules @@ -3,4 +3,4 @@ url = https://github.com/prefab-cloud/prefab-cloud.git [submodule "integration-test-data"] path = sdk/src/test/resources/shared-integration-test-data - url = https://github.com/prefab-cloud/prefab-cloud-integration-test-data.git \ No newline at end of file + url = git@github.com:ReforgeHQ/integration-test-data.git \ No newline at end of file diff --git a/sdk/src/main/java/com/reforge/sdk/internal/ConfigRuleEvaluator.java b/sdk/src/main/java/com/reforge/sdk/internal/ConfigRuleEvaluator.java index 57c0071..dd7fd3a 100644 --- a/sdk/src/main/java/com/reforge/sdk/internal/ConfigRuleEvaluator.java +++ b/sdk/src/main/java/com/reforge/sdk/internal/ConfigRuleEvaluator.java @@ -31,6 +31,7 @@ public class ConfigRuleEvaluator { public static final String CURRENT_TIME_KEY = "prefab.current-time"; + public static final String REFORGE_CURRENT_TIME_KEY = "reforge.current-time"; private static final Logger LOG = LoggerFactory.getLogger(ConfigRuleEvaluator.class); private final ConfigStore configStore; @@ -241,7 +242,7 @@ private Optional prop( } } //TODO: move this current time injection into a ContextResolver class? - if (CURRENT_TIME_KEY.equals(key)) { + if (CURRENT_TIME_KEY.equals(key) || REFORGE_CURRENT_TIME_KEY.equals(key)) { return Optional.of( Prefab.ConfigValue.newBuilder().setInt(System.currentTimeMillis()).build() ); diff --git a/sdk/src/test/java/com/reforge/sdk/integration/BaseIntegrationTestCaseDescriptor.java b/sdk/src/test/java/com/reforge/sdk/integration/BaseIntegrationTestCaseDescriptor.java index a4015d6..1d45035 100644 --- a/sdk/src/test/java/com/reforge/sdk/integration/BaseIntegrationTestCaseDescriptor.java +++ b/sdk/src/test/java/com/reforge/sdk/integration/BaseIntegrationTestCaseDescriptor.java @@ -93,7 +93,7 @@ private Sdk buildClient(IntegrationTestClientOverrides clientOverrides) { .getInitTimeoutSeconds() .ifPresent(options::setInitializationTimeoutSec); clientOverrides - .getPrefabApiUrl() + .getReforgeApiUrl() .ifPresent(host -> options.setApiHosts(List.of(host))); clientOverrides.getOnInitFailure().ifPresent(options::setOnInitializationFailure); clientOverrides.getContextUploadMode().ifPresent(options::setContextUploadMode); diff --git a/sdk/src/test/java/com/reforge/sdk/integration/IntegrationTestClientOverrides.java b/sdk/src/test/java/com/reforge/sdk/integration/IntegrationTestClientOverrides.java index a112745..3db81d2 100644 --- a/sdk/src/test/java/com/reforge/sdk/integration/IntegrationTestClientOverrides.java +++ b/sdk/src/test/java/com/reforge/sdk/integration/IntegrationTestClientOverrides.java @@ -10,7 +10,7 @@ public class IntegrationTestClientOverrides { private final Optional namespace; private final Optional onNoDefault; private final Optional initTimeoutSeconds; - private final Optional prefabApiUrl; + private final Optional reforgeApiUrl; private final Optional onInitFailure; private final Optional aggregator; private final Optional contextUploadMode; @@ -20,7 +20,7 @@ public IntegrationTestClientOverrides( @JsonProperty("namespace") Optional namespace, @JsonProperty("on_no_default") Optional onNoDefault, @JsonProperty("initialization_timeout_sec") Optional initTimeoutSeconds, - @JsonProperty("prefab_api_url") Optional prefabApiUrl, + @JsonProperty("reforge_api_url") Optional reforgeApiUrl, @JsonProperty("on_init_failure") Optional onInitFailure, @JsonProperty("aggregator") Optional aggregator, @JsonProperty("context_upload_mode") Optional contextUploadMode @@ -28,7 +28,7 @@ public IntegrationTestClientOverrides( this.namespace = namespace; this.onNoDefault = onNoDefault; this.initTimeoutSeconds = initTimeoutSeconds; - this.prefabApiUrl = prefabApiUrl; + this.reforgeApiUrl = reforgeApiUrl; this.onInitFailure = onInitFailure.map(text -> { if (":return".equals(text)) { @@ -83,8 +83,8 @@ public Optional getInitTimeoutSeconds() { return initTimeoutSeconds; } - public Optional getPrefabApiUrl() { - return prefabApiUrl; + public Optional getReforgeApiUrl() { + return reforgeApiUrl; } public Optional getOnInitFailure() { diff --git a/sdk/src/test/java/com/reforge/sdk/internal/ConfigRuleEvaluatorTest.java b/sdk/src/test/java/com/reforge/sdk/internal/ConfigRuleEvaluatorTest.java index f1bff89..4ae9541 100644 --- a/sdk/src/test/java/com/reforge/sdk/internal/ConfigRuleEvaluatorTest.java +++ b/sdk/src/test/java/com/reforge/sdk/internal/ConfigRuleEvaluatorTest.java @@ -579,6 +579,44 @@ public void testTimeAfterRange() { assertThat(eval.isMatch()).isFalse(); } + @Test + public void testReforgeCurrentTimeKey() { + // Test that reforge.current-time works the same as prefab.current-time + final Prefab.Criterion reforgeTimeCriterion = Prefab.Criterion + .newBuilder() + .setPropertyName(ConfigRuleEvaluator.REFORGE_CURRENT_TIME_KEY) + .setValueToMatch( + Prefab.ConfigValue.newBuilder().setIntRange(Prefab.IntRange.newBuilder().build()) + ) + .setOperator(Prefab.Criterion.CriterionOperator.IN_INT_RANGE) + .build(); + final EvaluatedCriterion reforgeEval = evaluator + .evaluateCriterionMatch(reforgeTimeCriterion, LookupContext.EMPTY) + .stream() + .findFirst() + .get(); + assertThat(reforgeEval.isMatch()).isTrue(); + + // Also test that we can use it with a specific time range that should not match current time + long pastTime = System.currentTimeMillis() - 60000; // 1 minute ago + final Prefab.Criterion pastRangeCriterion = Prefab.Criterion + .newBuilder() + .setPropertyName(ConfigRuleEvaluator.REFORGE_CURRENT_TIME_KEY) + .setValueToMatch( + Prefab.ConfigValue + .newBuilder() + .setIntRange(Prefab.IntRange.newBuilder().setStart(0).setEnd(pastTime).build()) + ) + .setOperator(Prefab.Criterion.CriterionOperator.IN_INT_RANGE) + .build(); + final EvaluatedCriterion pastEval = evaluator + .evaluateCriterionMatch(pastRangeCriterion, LookupContext.EMPTY) + .stream() + .findFirst() + .get(); + assertThat(pastEval.isMatch()).isFalse(); + } + public static Stream comparisonArguments() { return Stream.of( Arguments.of( diff --git a/sdk/src/test/resources/shared-integration-test-data b/sdk/src/test/resources/shared-integration-test-data index 867df0a..a2d71d8 160000 --- a/sdk/src/test/resources/shared-integration-test-data +++ b/sdk/src/test/resources/shared-integration-test-data @@ -1 +1 @@ -Subproject commit 867df0a1e0e108e8c111d1e2cf4a5f5d9469ed4b +Subproject commit a2d71d858b9ccc34efddea8fab343611bd7dab46