Skip to content

Commit

Permalink
chore: Move DTOs to sdk-common-jvm shared lib (#56)
Browse files Browse the repository at this point in the history
* build passes \o/

* fix tests

* use java 17

* nuke duplicate shard stuff

* use dep from jitpack

* project nits

* fix failing tests

* version should be v3.1
  • Loading branch information
felipecsl committed Jun 10, 2024
1 parent d982fc8 commit 724f72a
Show file tree
Hide file tree
Showing 42 changed files with 142 additions and 1,063 deletions.
11 changes: 7 additions & 4 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,22 @@ on:
- '**/*'
workflow_call:

env:
ORG_GRADLE_PROJECT_ossrhUsername: ${{ secrets.OSSRH_USERNAME }}
ORG_GRADLE_PROJECT_ossrhPassword: ${{ secrets.OSSRH_PASSWORD }}
CI: true

jobs:
test-android-sdk:
runs-on: ubuntu-latest
steps:
- name: Check out Java SDK
uses: actions/checkout@v4

- name: Set up JDK 11
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '11'
java-version: '17'
distribution: 'adopt'

- name: Restore gradle.properties
Expand All @@ -30,8 +35,6 @@ jobs:
run: |
mkdir -p ~/.gradle/
echo "GRADLE_USER_HOME=${HOME}/.gradle" >> $GITHUB_ENV
echo "MAVEN_USERNAME=${MAVEN_USERNAME}" > ~/.gradle/gradle.properties
echo "MAVEN_PASSWORD=${MAVEN_PASSWORD}" >> ~/.gradle/gradle.properties
- name: Set up test data
run: make test-data
Expand Down
6 changes: 3 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id 'com.android.application' version '7.3.1' apply false
id 'com.android.library' version '7.3.1' apply false
id 'com.android.application' version '8.4.1' apply false
id 'com.android.library' version '8.4.1' apply false
}

task clean(type: Delete) {
delete rootProject.buildDir
}
}
28 changes: 16 additions & 12 deletions eppo/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ plugins {
}

group = "cloud.eppo"
version = "3.0.1"
version = "3.1.0-SNAPSHOT"

android {
buildFeatures.buildConfig true
compileSdk 33

defaultConfig {
Expand Down Expand Up @@ -58,13 +59,19 @@ ext.versions = [
"androidx_runner": "1.5.2",
"androidx_core": "1.8.0",
"gson": "2.9.1",
"okhttp": "4.10.0",
"okhttp": "4.11.0",
"commonsio": "2.14.0",
"semver": "0.10.2"
]


dependencies {
implementation 'cloud.eppo:sdk-common-jvm:1.1.0-SNAPSHOT'
implementation("androidx.core:core:${versions.androidx_core}")
implementation("com.google.code.gson:gson:${versions.gson}")
implementation("com.squareup.okhttp3:okhttp:${versions.okhttp}")
implementation("com.github.zafarkhaja:java-semver:${versions.semver}")

testImplementation "junit:junit:${versions.junit}"
testImplementation "org.mockito:mockito-core:${versions.mockito}"
testImplementation "org.robolectric:robolectric:${versions.roboelectric}"
Expand All @@ -73,10 +80,6 @@ dependencies {
androidTestImplementation "androidx.test:core:${versions.androidx_test_core}"
androidTestImplementation "androidx.test:runner:${versions.androidx_runner}"
androidTestImplementation "commons-io:commons-io:${versions.commonsio}"
implementation("androidx.core:core:${versions.androidx_core}")
implementation("com.google.code.gson:gson:${versions.gson}")
implementation("com.squareup.okhttp3:okhttp:${versions.okhttp}")
implementation("com.github.zafarkhaja:java-semver:${versions.semver}")
}

publishing {
Expand All @@ -87,7 +90,7 @@ publishing {
version = project.properties.get("version")

afterEvaluate {
from components.release
from components.findByName('release')
}

pom {
Expand Down Expand Up @@ -116,12 +119,13 @@ publishing {
}
repositories {
maven {
def releasesRepoUrl = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"
def snapshotsRepoUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots/"
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
credentials {
username = "$MAVEN_USERNAME"
password = "$MAVEN_PASSWORD"
username = ossrhUsername
password = ossrhPassword
}

url = "https://s01.oss.sonatype.org/content/repositories/releases"
}
}
}
Expand All @@ -131,4 +135,4 @@ task runEppoTests(type: GradleBuild) {
':eppo:testDebugUnitTest',
':eppo:connectedDebugAndroidTest'
]
}
}
35 changes: 16 additions & 19 deletions eppo/src/androidTest/java/cloud/eppo/android/EppoClientTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,15 @@
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;

import static org.junit.Assert.fail;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static cloud.eppo.android.ConfigCacheFile.cacheFileName;
import static cloud.eppo.android.util.Utils.logTag;
import static cloud.eppo.android.util.Utils.safeCacheKey;
Expand All @@ -15,24 +23,13 @@

import androidx.test.core.app.ApplicationProvider;

import org.apache.commons.io.Charsets;
import org.apache.commons.io.IOUtils;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;

import static org.junit.Assert.fail;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

import org.apache.commons.io.Charsets;
import org.apache.commons.io.IOUtils;
import org.junit.Before;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
Expand All @@ -50,17 +47,17 @@
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;

import cloud.eppo.android.dto.EppoValue;
import cloud.eppo.android.dto.FlagConfig;
import cloud.eppo.android.dto.FlagConfigResponse;
import cloud.eppo.android.dto.SubjectAttributes;
import cloud.eppo.android.dto.VariationType;
import cloud.eppo.android.helpers.AssignmentTestCase;
import cloud.eppo.android.helpers.AssignmentTestCaseDeserializer;
import cloud.eppo.android.helpers.SubjectAssignment;
import cloud.eppo.android.helpers.TestCaseValue;
import cloud.eppo.android.logging.Assignment;
import cloud.eppo.android.logging.AssignmentLogger;
import cloud.eppo.ufc.dto.EppoValue;
import cloud.eppo.ufc.dto.FlagConfig;
import cloud.eppo.ufc.dto.FlagConfigResponse;
import cloud.eppo.ufc.dto.SubjectAttributes;
import cloud.eppo.ufc.dto.VariationType;

public class EppoClientTest {
private static final String TAG = logTag(EppoClient.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

import java.util.List;

import cloud.eppo.android.dto.EppoValue;
import cloud.eppo.android.dto.VariationType;
import cloud.eppo.ufc.dto.VariationType;

public class AssignmentTestCase {
String flag;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@
import java.util.List;
import java.util.Map;

import cloud.eppo.android.dto.EppoValue;
import cloud.eppo.android.dto.SubjectAttributes;
import cloud.eppo.android.dto.VariationType;
import cloud.eppo.android.dto.adapters.EppoValueAdapter;
import cloud.eppo.ufc.dto.EppoValue;
import cloud.eppo.ufc.dto.SubjectAttributes;
import cloud.eppo.ufc.dto.VariationType;
import cloud.eppo.ufc.dto.adapters.EppoValueAdapter;

public class AssignmentTestCaseDeserializer implements JsonDeserializer<AssignmentTestCase> {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package cloud.eppo.android.helpers;

import cloud.eppo.android.dto.EppoValue;
import cloud.eppo.android.dto.SubjectAttributes;
import cloud.eppo.ufc.dto.SubjectAttributes;

public class SubjectAssignment {
String subjectKey;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import java.util.List;

import cloud.eppo.android.dto.EppoValue;
import cloud.eppo.ufc.dto.EppoValue;

public class TestCaseValue extends EppoValue {
private JsonElement jsonValue;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;

import cloud.eppo.android.dto.FlagConfig;
import cloud.eppo.ufc.dto.FlagConfig;

public class ConfigurationRequestor {
private static final String TAG = logTag(ConfigurationRequestor.class);
Expand Down
12 changes: 6 additions & 6 deletions eppo/src/main/java/cloud/eppo/android/ConfigurationStore.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicBoolean;

import cloud.eppo.android.dto.EppoValue;
import cloud.eppo.android.dto.FlagConfig;
import cloud.eppo.android.dto.FlagConfigResponse;
import cloud.eppo.android.dto.adapters.DateAdapter;
import cloud.eppo.android.dto.adapters.EppoValueAdapter;
import cloud.eppo.android.dto.adapters.FlagConfigResponseAdapter;
import cloud.eppo.ufc.dto.EppoValue;
import cloud.eppo.ufc.dto.FlagConfig;
import cloud.eppo.ufc.dto.FlagConfigResponse;
import cloud.eppo.ufc.dto.adapters.DateAdapter;
import cloud.eppo.ufc.dto.adapters.EppoValueAdapter;
import cloud.eppo.ufc.dto.adapters.FlagConfigResponseAdapter;

public class ConfigurationStore {

Expand Down
9 changes: 4 additions & 5 deletions eppo/src/main/java/cloud/eppo/android/EppoClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,15 @@
import java.util.HashMap;
import java.util.Map;

import cloud.eppo.android.dto.EppoValue;
import cloud.eppo.android.dto.FlagConfig;
import cloud.eppo.android.dto.SubjectAttributes;
import cloud.eppo.android.dto.VariationType;
import cloud.eppo.android.exceptions.MissingApiKeyException;
import cloud.eppo.android.exceptions.MissingApplicationException;
import cloud.eppo.android.exceptions.NotInitializedException;
import cloud.eppo.android.logging.Assignment;
import cloud.eppo.android.logging.AssignmentLogger;
import cloud.eppo.android.util.Utils;
import cloud.eppo.ufc.dto.EppoValue;
import cloud.eppo.ufc.dto.FlagConfig;
import cloud.eppo.ufc.dto.SubjectAttributes;
import cloud.eppo.ufc.dto.VariationType;

public class EppoClient {
private static final String TAG = logTag(EppoClient.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import java.util.Map;

import cloud.eppo.android.dto.SubjectAttributes;
import cloud.eppo.android.dto.Variation;
import cloud.eppo.ufc.dto.SubjectAttributes;
import cloud.eppo.ufc.dto.Variation;

public class FlagEvaluationResult {

Expand Down
20 changes: 9 additions & 11 deletions eppo/src/main/java/cloud/eppo/android/FlagEvaluator.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,21 @@

import static cloud.eppo.android.util.Utils.base64Decode;

import com.google.gson.JsonParser;

import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import cloud.eppo.android.dto.Allocation;
import cloud.eppo.android.dto.EppoValue;
import cloud.eppo.android.dto.FlagConfig;
import cloud.eppo.android.dto.Range;
import cloud.eppo.android.dto.Shard;
import cloud.eppo.android.dto.Split;
import cloud.eppo.android.dto.SubjectAttributes;
import cloud.eppo.android.dto.Variation;
import cloud.eppo.android.util.Utils;
import cloud.eppo.model.ShardRange;
import cloud.eppo.ufc.dto.Allocation;
import cloud.eppo.ufc.dto.EppoValue;
import cloud.eppo.ufc.dto.FlagConfig;
import cloud.eppo.ufc.dto.Shard;
import cloud.eppo.ufc.dto.Split;
import cloud.eppo.ufc.dto.SubjectAttributes;
import cloud.eppo.ufc.dto.Variation;

public class FlagEvaluator {

Expand Down Expand Up @@ -148,7 +146,7 @@ private static boolean matchesShard(Shard shard, String subjectKey, int totalSha
}
String hashKey = salt+"-"+subjectKey;
int assignedShard = Utils.getShard(hashKey, totalShards);
for (Range range : shard.getRanges()) {
for (ShardRange range : shard.getRanges()) {
if (assignedShard >= range.getStart() && assignedShard < range.getEnd()) {
return true;
}
Expand Down
Loading

0 comments on commit 724f72a

Please sign in to comment.