diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
deleted file mode 100644
index 9e3198100..000000000
--- a/.github/CODEOWNERS
+++ /dev/null
@@ -1 +0,0 @@
-* @splitio/sdk
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
deleted file mode 100644
index b43f4a5dc..000000000
--- a/.github/workflows/ci.yml
+++ /dev/null
@@ -1,79 +0,0 @@
-name: ci
-
-on:
- push:
- branches:
- - '**'
- pull_request:
- branches:
- - master
- - development
-
-concurrency:
- group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
- cancel-in-progress: true
-
-jobs:
- test:
- name: Test
- runs-on: ubuntu-latest
- services:
- redis:
- image: redis
- ports:
- - 6379:6379
- strategy:
- fail-fast: false
- matrix:
- jdk:
- - '8'
- - '11'
- - '19'
- env:
- SONARQUBE_HOST_URL: ${{ vars.SONARQUBE_HOST }}
- ARTIFACTORY_USER: ${{ secrets.ARTIFACTORY_USER }}
- ARTIFACTORY_TOKEN: ${{ secrets.ARTIFACTORY_TOKEN }}
- SONAR_TOKEN: ${{ secrets.SONARQUBE_TOKEN }}
- MAVEN_OPTS: "-XX:InitialHeapSize=2G -XX:MaxHeapSize=2G -XX:+PrintCommandLineFlags -XX:ThreadStackSize=65536 -XX:-TieredCompilation -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"
- muteProps: "true"
-
- steps:
- - name: Checkout code
- uses: actions/checkout@v4
- with:
- fetch-depth: 0
-
- - name: Setup JDK ${{ matrix.jdk }}
- uses: actions/setup-java@v3
- with:
- distribution: 'adopt'
- java-version: ${{ matrix.jdk }}
-
- - name: Setup Maven
- run: cp .ci.settings.xml ${HOME}/.m2/settings.xml
-
- - name: Test
- if: matrix.jdk == '8' && github.event_name == 'pull_request' && github.ref != 'refs/heads/master' && github.ref != 'refs/heads/development'
- run: mvn --batch-mode clean install
-
- - name: Linter
- if: matrix.jdk == '8' && github.event_name == 'pull_request' && github.ref != 'refs/heads/master' && github.ref != 'refs/heads/development'
- run: mvn checkstyle::check
-
-# - name: Deploy
-# if: matrix.jdk == '8' && github.event_name == 'push' && github.ref != 'refs/heads/master' && github.ref != 'refs/heads/development'
-# run: mvn --batch-mode deploy -P test
-
- - name: SonarQube Scan (Push)
- if: matrix.jdk == '11' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/development')
- run: |
- mvn --batch-mode clean verify sonar:sonar \
- -Dsonar.branch.name=${{ github.ref_name }}
-
- - name: SonarQube Scan (Pull Request)
- if: matrix.jdk == '11' && github.event_name == 'pull_request'
- run: |
- mvn --batch-mode clean verify sonar:sonar \
- -Dsonar.pullrequest.key=${{ github.event.pull_request.number }} \
- -Dsonar.pullrequest.branch=${{ github.event.pull_request.head.ref }} \
- -Dsonar.pullrequest.base=${{ github.event.pull_request.base.ref }}
diff --git a/.github/workflows/update-license-year.yml b/.github/workflows/update-license-year.yml
deleted file mode 100644
index 7e0a945f9..000000000
--- a/.github/workflows/update-license-year.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-name: Update License Year
-
-on:
- schedule:
- - cron: "0 3 1 1 *" # 03:00 AM on January 1
-
-permissions:
- contents: write
- pull-requests: write
-
-jobs:
- test:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 0
-
- - name: Set Current year
- run: "echo CURRENT=$(date +%Y) >> $GITHUB_ENV"
-
- - name: Set Previous Year
- run: "echo PREVIOUS=$(($CURRENT-1)) >> $GITHUB_ENV"
-
- - name: Update LICENSE
- uses: jacobtomlinson/gha-find-replace@v3
- with:
- find: ${{ env.PREVIOUS }}
- replace: ${{ env.CURRENT }}
- include: "LICENSE"
- regex: false
-
- - name: Commit files
- run: |
- git config user.name 'github-actions[bot]'
- git config user.email 'github-actions[bot]@users.noreply.github.com'
- git commit -m "Updated License Year" -a
-
- - name: Create Pull Request
- uses: peter-evans/create-pull-request@v5
- with:
- token: ${{ secrets.GITHUB_TOKEN }}
- title: Update License Year
- branch: update-license
diff --git a/.github/linter/checkstyle-suppressions.xml b/.harness/linter/checkstyle-suppressions.xml
similarity index 100%
rename from .github/linter/checkstyle-suppressions.xml
rename to .harness/linter/checkstyle-suppressions.xml
diff --git a/.github/linter/google-java-style.xml b/.harness/linter/google-java-style.xml
similarity index 100%
rename from .github/linter/google-java-style.xml
rename to .harness/linter/google-java-style.xml
diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/java_client_ci.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/java_client_ci.yaml
new file mode 100644
index 000000000..208567715
--- /dev/null
+++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/java_client_ci.yaml
@@ -0,0 +1,109 @@
+pipeline:
+ name: java-client-ci
+ identifier: java_client_ci
+ projectIdentifier: Harness_Split
+ orgIdentifier: PROD
+ tags: {}
+ properties:
+ ci:
+ codebase:
+ connectorRef: fmegithubrunnersci
+ repoName: java-client
+ build: <+input>
+ depth: 0
+ stages:
+ - stage:
+ name: test
+ identifier: test
+ type: CI
+ spec:
+ cloneCodebase: true
+ caching:
+ enabled: true
+ override: true
+ platform:
+ os: Linux
+ arch: Amd64
+ runtime:
+ type: Cloud
+ spec: {}
+ execution:
+ steps:
+ # JDK 8: build + test + checkstyle (PR only)
+ - step:
+ type: Run
+ name: test jdk8
+ identifier: test_jdk8
+ spec:
+ connectorRef: dockerhub
+ image: maven:3.9-eclipse-temurin-8
+ shell: Bash
+ envVariables:
+ MAVEN_OPTS: "-XX:InitialHeapSize=2G -XX:MaxHeapSize=2G -XX:+PrintCommandLineFlags -XX:ThreadStackSize=65536 -XX:-TieredCompilation -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"
+ command: |-
+ apt-get update -qq && apt-get install -y --no-install-recommends redis-server
+ redis-server --daemonize yes
+ for i in $(seq 1 30); do
+ redis-cli ping 2>/dev/null | grep -q PONG && { echo "Redis is up"; break; }
+ echo "Waiting for Redis... ($i/30)"; sleep 1
+ done
+ mkdir -p ${HOME}/.m2 && cp .ci.settings.xml ${HOME}/.m2/settings.xml
+ mvn --batch-mode clean install
+ when:
+ stageStatus: Success
+ condition: <+codebase.build.type> == "PR"
+ # JDK 8: checkstyle (PR only)
+ - step:
+ type: Run
+ name: checkstyle jdk8
+ identifier: checkstyle_jdk8
+ spec:
+ connectorRef: dockerhub
+ image: maven:3.9-eclipse-temurin-8
+ shell: Bash
+ envVariables:
+ MAVEN_OPTS: "-XX:InitialHeapSize=2G -XX:MaxHeapSize=2G -XX:+PrintCommandLineFlags -XX:ThreadStackSize=65536 -XX:-TieredCompilation -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"
+ command: mvn --batch-mode checkstyle:check
+ when:
+ stageStatus: Success
+ condition: <+codebase.build.type> == "PR"
+ # JDK 11: Sonar (PR and push to master/development)
+ - step:
+ type: Run
+ name: sonar analysis
+ identifier: sonar_analysis
+ spec:
+ connectorRef: dockerhub
+ image: maven:3.9-eclipse-temurin-11
+ shell: Bash
+ envVariables:
+ MAVEN_OPTS: "-XX:InitialHeapSize=2G -XX:MaxHeapSize=2G -XX:+PrintCommandLineFlags -XX:ThreadStackSize=65536 -XX:-TieredCompilation -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"
+ SONAR_HOST_URL: https://sonar.harness.io
+ SONAR_TOKEN: <+secrets.getValue("sonarqube-token")>
+ PR_NUMBER: <+trigger.prNumber>
+ PR_BRANCH: <+trigger.sourceBranch>
+ PR_BASE_BRANCH: <+trigger.targetBranch>
+ BRANCH_NAME: <+trigger.branch>
+ command: |-
+ apt-get update -qq && apt-get install -y --no-install-recommends redis-server
+ redis-server --daemonize yes
+ for i in $(seq 1 30); do
+ redis-cli ping 2>/dev/null | grep -q PONG && { echo "Redis is up"; break; }
+ echo "Waiting for Redis... ($i/30)"; sleep 1
+ done
+ mkdir -p ${HOME}/.m2 && cp .ci.settings.xml ${HOME}/.m2/settings.xml
+ if [ -n "$PR_NUMBER" ] && [ "$PR_NUMBER" != "null" ]; then
+ mvn --batch-mode clean verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar \
+ -Dsonar.host.url="$SONAR_HOST_URL" \
+ -Dsonar.token="$SONAR_TOKEN" \
+ -Dsonar.pullrequest.key="$PR_NUMBER" \
+ -Dsonar.pullrequest.branch="$PR_BRANCH" \
+ -Dsonar.pullrequest.base="$PR_BASE_BRANCH"
+ else
+ mvn --batch-mode clean verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar \
+ -Dsonar.host.url="$SONAR_HOST_URL" \
+ -Dsonar.token="$SONAR_TOKEN" \
+ -Dsonar.branch.name="$BRANCH_NAME"
+ fi
+ when:
+ stageStatus: Success
diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/java_client_ci/input_sets/pr.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/java_client_ci/input_sets/pr.yaml
new file mode 100644
index 000000000..799b2126a
--- /dev/null
+++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/java_client_ci/input_sets/pr.yaml
@@ -0,0 +1,14 @@
+inputSet:
+ name: pr
+ identifier: pr
+ orgIdentifier: PROD
+ projectIdentifier: Harness_Split
+ pipeline:
+ identifier: java_client_ci
+ properties:
+ ci:
+ codebase:
+ build:
+ type: PR
+ spec:
+ number: <+trigger.prNumber>
diff --git a/.harness/orgs/PROD/projects/Harness_Split/pipelines/java_client_ci/input_sets/push.yaml b/.harness/orgs/PROD/projects/Harness_Split/pipelines/java_client_ci/input_sets/push.yaml
new file mode 100644
index 000000000..58e96c1e4
--- /dev/null
+++ b/.harness/orgs/PROD/projects/Harness_Split/pipelines/java_client_ci/input_sets/push.yaml
@@ -0,0 +1,14 @@
+inputSet:
+ name: push
+ identifier: push
+ orgIdentifier: PROD
+ projectIdentifier: Harness_Split
+ pipeline:
+ identifier: java_client_ci
+ properties:
+ ci:
+ codebase:
+ build:
+ type: branch
+ spec:
+ branch: <+trigger.branch>
diff --git a/pom.xml b/pom.xml
index b388caf0e..271ba1717 100644
--- a/pom.xml
+++ b/pom.xml
@@ -127,7 +127,7 @@
- .github/linter/google-java-style.xml
+ .harness/linter/google-java-style.xml
warning
true
diff --git a/testing/src/main/java/io/split/client/testing/SplitClientForTest.java b/testing/src/main/java/io/split/client/testing/SplitClientForTest.java
index 9ee4b8c3e..763d4df5b 100644
--- a/testing/src/main/java/io/split/client/testing/SplitClientForTest.java
+++ b/testing/src/main/java/io/split/client/testing/SplitClientForTest.java
@@ -1,5 +1,6 @@
package io.split.client.testing;
+import io.split.client.SplitAndKey;
import io.split.client.SplitClient;
import io.split.client.api.Key;
import io.split.client.api.SplitResult;
@@ -9,131 +10,131 @@
import java.util.*;
import java.util.concurrent.TimeoutException;
+import static java.util.stream.Collectors.toMap;
+
public class SplitClientForTest implements SplitClient {
- private Map _tests;
+ private static final SplitResult CONTROL_RESULT = new SplitResult(Treatments.CONTROL, null);
+
+ private final Map _tests;
public SplitClientForTest() {
_tests = new HashMap<>();
}
public Map tests() {
- return _tests;
+ return _tests
+ .entrySet()
+ .stream()
+ .collect(toMap(
+ entry -> entry.getKey().split(),
+ entry -> entry.getValue().treatment(),
+ (existing, replacement) -> existing
+ ));
+ }
+
+ public Map testMappings() {
+ return Collections.unmodifiableMap(_tests);
}
public void clearTreatments() {
- _tests = new HashMap<>();
+ _tests.clear();
}
public void registerTreatments(Map treatments) {
- _tests.putAll(treatments);
+ for (Map.Entry entry : treatments.entrySet()) {
+ registerTreatment(entry.getKey(), entry.getValue());
+ }
}
public void registerTreatment(String feature, String treatment) {
- _tests.put(feature, treatment);
+ registerTreatment(feature, null, treatment);
+ }
+
+ public void registerTreatment(String feature, String key, String treatment) {
+ registerTreatment(feature, key, treatment, null);
+ }
+
+ public void registerTreatment(String feature, String key, String treatment, String config) {
+ registerTreatment(SplitAndKey.of(feature, key), new SplitResult(treatment, config));
+ }
+
+ public void registerTreatment(SplitAndKey splitAndKey, SplitResult splitResult) {
+ _tests.put(splitAndKey, splitResult);
}
public String getTreatment(String key, String featureFlagName) {
- return _tests.containsKey(featureFlagName)
- ? _tests.get(featureFlagName)
- : Treatments.CONTROL;
+ return getTreatment(key, featureFlagName, Collections.emptyMap());
}
public String getTreatment(String key, String featureFlagName, Map attributes) {
- return _tests.containsKey(featureFlagName)
- ? _tests.get(featureFlagName)
- : Treatments.CONTROL;
+ return getTreatmentWithConfig(key, featureFlagName, attributes).treatment();
}
public String getTreatment(Key key, String featureFlagName, Map attributes) {
- return _tests.containsKey(featureFlagName)
- ? _tests.get(featureFlagName)
- : Treatments.CONTROL;
+ return getTreatment(key.matchingKey(), featureFlagName, attributes);
}
@Override
public SplitResult getTreatmentWithConfig(String key, String featureFlagName) {
- return new SplitResult(_tests.containsKey(featureFlagName)
- ? _tests.get(featureFlagName)
- : Treatments.CONTROL, null);
+ return getTreatmentWithConfig(key, featureFlagName, Collections.emptyMap());
}
@Override
public SplitResult getTreatmentWithConfig(String key, String featureFlagName, Map attributes) {
- return new SplitResult(_tests.containsKey(featureFlagName)
- ? _tests.get(featureFlagName)
- : Treatments.CONTROL, null);
+ if (_tests.containsKey(SplitAndKey.of(featureFlagName, key))) {
+ return _tests.get(SplitAndKey.of(featureFlagName, key));
+ }
+ else {
+ return _tests.getOrDefault(SplitAndKey.of(featureFlagName), CONTROL_RESULT);
+ }
}
@Override
public SplitResult getTreatmentWithConfig(Key key, String featureFlagName, Map attributes) {
- return new SplitResult(_tests.containsKey(featureFlagName)
- ? _tests.get(featureFlagName)
- : Treatments.CONTROL, null);
+ return getTreatmentWithConfig(key.matchingKey(), featureFlagName, attributes);
}
@Override
public Map getTreatments(String key, List featureFlagNames) {
- Map treatments = new HashMap<>();
- for (String split : featureFlagNames) {
- treatments.put(split, _tests.containsKey(split) ? _tests.get(split) : Treatments.CONTROL);
- }
- return treatments;
+ return getTreatments(key, featureFlagNames, Collections.emptyMap());
}
@Override
public Map getTreatments(String key, List featureFlagNames, Map attributes){
Map treatments = new HashMap<>();
for (String split : featureFlagNames) {
- treatments.put(split, _tests.containsKey(split) ? _tests.get(split) : Treatments.CONTROL);
+ treatments.put(split, getTreatment(key, split, attributes));
}
return treatments;
}
@Override
public Map getTreatments(Key key, List featureFlagNames, Map attributes) {
- Map treatments = new HashMap<>();
- for (String split : featureFlagNames) {
- treatments.put(split, _tests.containsKey(split) ? _tests.get(split) : Treatments.CONTROL);
- }
- return treatments;
+ return getTreatments(key.matchingKey(), featureFlagNames, attributes);
}
@Override
public Map getTreatmentsWithConfig(String key, List featureFlagNames) {
- Map treatments = new HashMap<>();
- for (String split : featureFlagNames) {
- treatments.put(split, new SplitResult(_tests.containsKey(split)
- ? _tests.get(split)
- : Treatments.CONTROL, null));
- }
- return treatments;
+ return getTreatmentsWithConfig(key, featureFlagNames, Collections.emptyMap());
}
@Override
public Map getTreatmentsWithConfig(String key, List featureFlagNames, Map attributes) {
Map treatments = new HashMap<>();
for (String split : featureFlagNames) {
- treatments.put(split, new SplitResult(_tests.containsKey(split)
- ? _tests.get(split)
- : Treatments.CONTROL, null));
+ treatments.put(split, getTreatmentWithConfig(key, split, attributes));
}
return treatments;
}
@Override
public Map getTreatmentsWithConfig(Key key, List featureFlagNames, Map attributes) {
- Map treatments = new HashMap<>();
- for (String split : featureFlagNames) {
- treatments.put(split, new SplitResult(_tests.containsKey(split)
- ? _tests.get(split)
- : Treatments.CONTROL, null));
- }
- return treatments;
+ return getTreatmentsWithConfig(key.matchingKey(), featureFlagNames, attributes);
}
@Override
public Map getTreatmentsByFlagSet(String key, String flagSet) {
- return null;
+ return new HashMap<>();
}
@Override
@@ -148,7 +149,7 @@ public Map getTreatmentsByFlagSet(Key key, String flagSet, Map getTreatmentsByFlagSets(String key, List flagSets) {
- return null;
+ return new HashMap<>();
}
@Override
@@ -163,7 +164,7 @@ public Map getTreatmentsByFlagSets(Key key, List flagSet
@Override
public Map getTreatmentsWithConfigByFlagSet(String key, String flagSet) {
- return null;
+ return new HashMap<>();
}
@Override
@@ -178,7 +179,7 @@ public Map getTreatmentsWithConfigByFlagSet(Key key, String
@Override
public Map getTreatmentsWithConfigByFlagSets(String key, List flagSets) {
- return null;
+ return new HashMap<>();
}
@Override
@@ -193,62 +194,62 @@ public Map getTreatmentsWithConfigByFlagSets(Key key, List<
@Override
public String getTreatment(String key, String featureFlagName, EvaluationOptions evaluationOptions) {
- return null;
+ return getTreatment(key, featureFlagName);
}
@Override
public String getTreatment(String key, String featureFlagName, Map attributes, EvaluationOptions evaluationOptions) {
- return null;
+ return getTreatment(key, featureFlagName, attributes);
}
@Override
public String getTreatment(Key key, String featureFlagName, Map attributes, EvaluationOptions evaluationOptions) {
- return null;
+ return getTreatment(key, featureFlagName, attributes);
}
@Override
public Map getTreatments(String key, List featureFlagNames, EvaluationOptions evaluationOptions) {
- return new HashMap<>();
+ return getTreatments(key, featureFlagNames);
}
@Override
public Map getTreatments(String key, List featureFlagNames, Map attributes,
EvaluationOptions evaluationOptions) {
- return new HashMap<>();
+ return getTreatments(key, featureFlagNames, attributes);
}
@Override
public Map getTreatments(Key key, List featureFlagNames, Map attributes,
EvaluationOptions evaluationOptions) {
- return new HashMap<>();
+ return getTreatments(key, featureFlagNames, attributes);
}
@Override
public SplitResult getTreatmentWithConfig(String key, String featureFlagName, EvaluationOptions evaluationOptions) {
- return null;
+ return getTreatmentWithConfig(key, featureFlagName);
}
@Override
public SplitResult getTreatmentWithConfig(Key key, String featureFlagName, Map attributes,
EvaluationOptions evaluationOptions) {
- return null;
+ return getTreatmentWithConfig(key, featureFlagName, attributes);
}
@Override
public SplitResult getTreatmentWithConfig(String key, String featureFlagName, Map attributes,
EvaluationOptions evaluationOptions) {
- return null;
+ return getTreatmentWithConfig(key, featureFlagName, attributes);
}
@Override
public Map getTreatmentsWithConfig(String key, List featureFlagNames, Map attributes,
EvaluationOptions evaluationOptions) {
- return new HashMap<>();
+ return getTreatmentsWithConfig(key, featureFlagNames, attributes);
}
@Override
public Map getTreatmentsWithConfig(String key, List featureFlagNames, EvaluationOptions evaluationOptions) {
- return new HashMap<>();
+ return getTreatmentsWithConfig(key, featureFlagNames);
}
@Override
@@ -298,7 +299,7 @@ public Map getTreatmentsByFlagSet(String key, String flagSet, Ev
@Override
public Map getTreatmentsWithConfig(Key key, List featureFlagNames, Map attributes,
EvaluationOptions evaluationOptions) {
- return new HashMap<>();
+ return getTreatmentsWithConfig(key.matchingKey(), featureFlagNames);
}
@Override
diff --git a/testing/src/main/java/io/split/client/testing/runner/RunWithSplits.java b/testing/src/main/java/io/split/client/testing/runner/RunWithSplits.java
index d6b864ad4..01c6d3ee3 100644
--- a/testing/src/main/java/io/split/client/testing/runner/RunWithSplits.java
+++ b/testing/src/main/java/io/split/client/testing/runner/RunWithSplits.java
@@ -1,5 +1,7 @@
package io.split.client.testing.runner;
+import io.split.client.SplitAndKey;
+import io.split.client.api.SplitResult;
import io.split.client.testing.SplitClientForTest;
import io.split.client.testing.annotations.SplitTestClient;
import org.junit.runners.model.Statement;
@@ -24,7 +26,7 @@ public void evaluate() throws Throwable {
SplitClientForTest splitClient = findFirstSplitClient(target, target.getClass());
// Preserve the Split state between Test runs
- Map priorTests = new HashMap<>(splitClient.tests());
+ Map priorTests = new HashMap<>(splitClient.testMappings());
// Apply the Active Scenario for this
if (scenario != null) {
@@ -36,7 +38,9 @@ public void evaluate() throws Throwable {
} finally {
// Clear any Scenario specific changes and re-apply existing splits
splitClient.clearTreatments();
- splitClient.registerTreatments(priorTests);
+ for (Map.Entry entry : priorTests.entrySet()) {
+ splitClient.registerTreatment(entry.getKey(), entry.getValue());
+ }
}
}
@@ -57,4 +61,4 @@ private static SplitClientForTest findFirstSplitClient(Object target, Class> t
throw new IllegalArgumentException("No SplitTestClient found in hierarchy");
}
}
-}
\ No newline at end of file
+}
diff --git a/testing/src/test/java/io/split/client/testing/SplitScenarioAnnotationTest.java b/testing/src/test/java/io/split/client/testing/SplitScenarioAnnotationTest.java
index 84a772ceb..f590d0c5d 100644
--- a/testing/src/test/java/io/split/client/testing/SplitScenarioAnnotationTest.java
+++ b/testing/src/test/java/io/split/client/testing/SplitScenarioAnnotationTest.java
@@ -1,6 +1,8 @@
package io.split.client.testing;
+import com.google.common.collect.ImmutableMap;
import io.split.client.api.Key;
+import io.split.client.api.SplitResult;
import io.split.client.dtos.EvaluationOptions;
import io.split.client.testing.annotations.SplitScenario;
import io.split.client.testing.annotations.SplitSuite;
@@ -12,7 +14,6 @@
import org.junit.Test;
import org.junit.runner.RunWith;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Objects;
@@ -78,29 +79,29 @@ public void testDefaultScenario() {
Assert.assertEquals(CONTROL_TREATMENT, splitClient.getTreatment(ARBITRARY_KEY, CONTROL_FEATURE));
Assert.assertEquals(new HashMap<>(), splitClient.getTreatmentsByFlagSet(ARBITRARY_KEY, "flagset", new HashMap<>()));
- Assert.assertEquals(null, splitClient.getTreatmentsByFlagSet(ARBITRARY_KEY, "flagset"));
- Assert.assertEquals(null, splitClient.getTreatmentsByFlagSet(ARBITRARY_KEY, "flagset"));
+ Assert.assertEquals(new HashMap<>(), splitClient.getTreatmentsByFlagSet(ARBITRARY_KEY, "flagset"));
+ Assert.assertEquals(new HashMap<>(), splitClient.getTreatmentsByFlagSet(ARBITRARY_KEY, "flagset"));
Assert.assertEquals(new HashMap<>(), splitClient.getTreatmentsByFlagSets(ARBITRARY_KEY, Arrays.asList("flagset"), new HashMap<>()));
- Assert.assertEquals(null, splitClient.getTreatmentsByFlagSets(ARBITRARY_KEY, Arrays.asList("flagset")));
- Assert.assertEquals(null, splitClient.getTreatmentsByFlagSets(ARBITRARY_KEY, Arrays.asList("flagset")));
+ Assert.assertEquals(new HashMap<>(), splitClient.getTreatmentsByFlagSets(ARBITRARY_KEY, Arrays.asList("flagset")));
+ Assert.assertEquals(new HashMap<>(), splitClient.getTreatmentsByFlagSets(ARBITRARY_KEY, Arrays.asList("flagset")));
Assert.assertEquals(new HashMap<>(), splitClient.getTreatmentsWithConfigByFlagSet(ARBITRARY_KEY, "flagset", new HashMap<>()));
- Assert.assertEquals(null, splitClient.getTreatmentsWithConfigByFlagSet(ARBITRARY_KEY, "flagset"));
- Assert.assertEquals(null, splitClient.getTreatmentsWithConfigByFlagSet(ARBITRARY_KEY, "flagset"));
+ Assert.assertEquals(new HashMap<>(), splitClient.getTreatmentsWithConfigByFlagSet(ARBITRARY_KEY, "flagset"));
+ Assert.assertEquals(new HashMap<>(), splitClient.getTreatmentsWithConfigByFlagSet(ARBITRARY_KEY, "flagset"));
Assert.assertEquals(new HashMap<>(), splitClient.getTreatmentsWithConfigByFlagSets(ARBITRARY_KEY, Arrays.asList("flagset"), new HashMap<>()));
- Assert.assertEquals(null, splitClient.getTreatmentsWithConfigByFlagSets(ARBITRARY_KEY, Arrays.asList("flagset")));
- Assert.assertEquals(null, splitClient.getTreatmentsWithConfigByFlagSets(ARBITRARY_KEY, Arrays.asList("flagset")));
-
- Assert.assertEquals(null, splitClient.getTreatment(ARBITRARY_KEY, DEFAULT_CLIENT_FEATURE, new EvaluationOptions(new HashMap<>())));
- Assert.assertEquals(null, splitClient.getTreatment(ARBITRARY_KEY, DEFAULT_CLIENT_FEATURE, new HashMap<>(), new EvaluationOptions(new HashMap<>())));
- Assert.assertEquals(null, splitClient.getTreatment(new Key(ARBITRARY_KEY, ARBITRARY_KEY), DEFAULT_CLIENT_FEATURE, new HashMap<>(), new EvaluationOptions(new HashMap<>())));
- Assert.assertEquals(null, splitClient.getTreatmentWithConfig(ARBITRARY_KEY, DEFAULT_CLIENT_FEATURE, new HashMap<>(), new EvaluationOptions(new HashMap<>())));
- Assert.assertEquals(null, splitClient.getTreatmentWithConfig(ARBITRARY_KEY, DEFAULT_CLIENT_FEATURE, new EvaluationOptions(new HashMap<>())));
- Assert.assertEquals(null, splitClient.getTreatmentWithConfig(new Key(ARBITRARY_KEY, ARBITRARY_KEY), DEFAULT_CLIENT_FEATURE, new HashMap<>(), new EvaluationOptions(new HashMap<>())));
- Assert.assertEquals(new HashMap<>(), splitClient.getTreatments(ARBITRARY_KEY, Arrays.asList(DEFAULT_CLIENT_FEATURE), new EvaluationOptions(new HashMap<>())));
- Assert.assertEquals(new HashMap<>(), splitClient.getTreatments(ARBITRARY_KEY, Arrays.asList(DEFAULT_CLIENT_FEATURE), new HashMap<>(), new EvaluationOptions(new HashMap<>())));
- Assert.assertEquals(new HashMap<>(), splitClient.getTreatmentsWithConfig(ARBITRARY_KEY, Arrays.asList(DEFAULT_CLIENT_FEATURE), new EvaluationOptions(new HashMap<>())));
- Assert.assertEquals(null, splitClient.getTreatmentsWithConfig(ARBITRARY_KEY, Arrays.asList(DEFAULT_CLIENT_FEATURE), new HashMap<>(), new EvaluationOptions(new HashMap<>())).get(DEFAULT_CLIENT_FEATURE));
- Assert.assertEquals(new HashMap<>(), splitClient.getTreatmentsWithConfig(new Key(ARBITRARY_KEY, ARBITRARY_KEY), Arrays.asList(DEFAULT_CLIENT_FEATURE), new HashMap<>(), new EvaluationOptions(new HashMap<>())));
+ Assert.assertEquals(new HashMap<>(), splitClient.getTreatmentsWithConfigByFlagSets(ARBITRARY_KEY, Arrays.asList("flagset")));
+ Assert.assertEquals(new HashMap<>(), splitClient.getTreatmentsWithConfigByFlagSets(ARBITRARY_KEY, Arrays.asList("flagset")));
+
+ Assert.assertEquals(ON_TREATMENT, splitClient.getTreatment(ARBITRARY_KEY, DEFAULT_CLIENT_FEATURE, new EvaluationOptions(new HashMap<>())));
+ Assert.assertEquals(ON_TREATMENT, splitClient.getTreatment(ARBITRARY_KEY, DEFAULT_CLIENT_FEATURE, new HashMap<>(), new EvaluationOptions(new HashMap<>())));
+ Assert.assertEquals(ON_TREATMENT, splitClient.getTreatment(new Key(ARBITRARY_KEY, ARBITRARY_KEY), DEFAULT_CLIENT_FEATURE, new HashMap<>(), new EvaluationOptions(new HashMap<>())));
+ Assert.assertEquals(new SplitResult(ON_TREATMENT, null), splitClient.getTreatmentWithConfig(ARBITRARY_KEY, DEFAULT_CLIENT_FEATURE, new HashMap<>(), new EvaluationOptions(new HashMap<>())));
+ Assert.assertEquals(new SplitResult(ON_TREATMENT, null), splitClient.getTreatmentWithConfig(ARBITRARY_KEY, DEFAULT_CLIENT_FEATURE, new EvaluationOptions(new HashMap<>())));
+ Assert.assertEquals(new SplitResult(ON_TREATMENT, null), splitClient.getTreatmentWithConfig(new Key(ARBITRARY_KEY, ARBITRARY_KEY), DEFAULT_CLIENT_FEATURE, new HashMap<>(), new EvaluationOptions(new HashMap<>())));
+ Assert.assertEquals(ImmutableMap.of(DEFAULT_CLIENT_FEATURE, ON_TREATMENT), splitClient.getTreatments(ARBITRARY_KEY, Arrays.asList(DEFAULT_CLIENT_FEATURE), new EvaluationOptions(new HashMap<>())));
+ Assert.assertEquals(ImmutableMap.of(DEFAULT_CLIENT_FEATURE, ON_TREATMENT), splitClient.getTreatments(ARBITRARY_KEY, Arrays.asList(DEFAULT_CLIENT_FEATURE), new HashMap<>(), new EvaluationOptions(new HashMap<>())));
+ Assert.assertEquals(ImmutableMap.of(DEFAULT_CLIENT_FEATURE, new SplitResult(ON_TREATMENT, null)), splitClient.getTreatmentsWithConfig(ARBITRARY_KEY, Arrays.asList(DEFAULT_CLIENT_FEATURE), new EvaluationOptions(new HashMap<>())));
+ Assert.assertEquals(new SplitResult(ON_TREATMENT, null), splitClient.getTreatmentsWithConfig(ARBITRARY_KEY, Arrays.asList(DEFAULT_CLIENT_FEATURE), new HashMap<>(), new EvaluationOptions(new HashMap<>())).get(DEFAULT_CLIENT_FEATURE));
+ Assert.assertEquals(ImmutableMap.of(DEFAULT_CLIENT_FEATURE, new SplitResult(ON_TREATMENT, null)), splitClient.getTreatmentsWithConfig(new Key(ARBITRARY_KEY, ARBITRARY_KEY), Arrays.asList(DEFAULT_CLIENT_FEATURE), new HashMap<>(), new EvaluationOptions(new HashMap<>())));
Assert.assertEquals(new HashMap<>(), splitClient.getTreatmentsByFlagSet(ARBITRARY_KEY, "flagset", new HashMap<>(), new EvaluationOptions(new HashMap<>())));
Assert.assertEquals(new HashMap<>(), splitClient.getTreatmentsByFlagSet(ARBITRARY_KEY, "flagset", new EvaluationOptions(new HashMap<>())));
@@ -220,4 +221,4 @@ public void testScenariosAnnotation() {
Assert.assertEquals(ON_TREATMENT, splitClient.getTreatment(ARBITRARY_KEY, "SCENARIO_FEATURE_3"));
}
}
-}
\ No newline at end of file
+}