Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 8 additions & 7 deletions .github/workflows/android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,18 +81,19 @@ jobs:
strategy:
fail-fast: false
matrix:
# 21 is too old (not properly supported by github)
# mockito version is not working in 30+
# API 21-26: not reliably supported by GitHub Actions (emulator boot failures observed on API 25)
# API 29: removed due to emulator hang issues on GitHub-hosted runners
# API 28 is the lowest level that boots consistently on GitHub-hosted runners
include:
- api-level: 25
- api-level: 28
arch: x86
target: google_apis
- api-level: 27
arch: x86
- api-level: 33
arch: x86_64
target: google_apis
- api-level: 29
- api-level: 36
arch: x86_64
target: default
target: google_apis
Comment thread
jaeopt marked this conversation as resolved.
steps:
- name: checkout
uses: actions/checkout@v4
Expand Down
17 changes: 14 additions & 3 deletions android-sdk/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,13 @@ android {
buildFeatures {
buildConfig true
}
packagingOptions {
resources {
pickFirsts += ['mockito-extensions/org.mockito.plugins.MockMaker', 'mockito-extensions/org.mockito.plugins.StackTraceCleanerProvider']
}
}
testOptions {
execution 'ANDROIDX_TEST_ORCHESTRATOR'
unitTests.returnDefaultValues = true
unitTests.all {
jvmArgs = [
Expand All @@ -54,7 +60,7 @@ android {
minifyEnabled false
}
debug {
testCoverageEnabled true
testCoverageEnabled false
}
}
}
Expand Down Expand Up @@ -93,15 +99,20 @@ dependencies {
testImplementation "com.noveogroup.android:android-logger:$android_logger_ver"

androidTestImplementation "androidx.work:work-testing:$work_runtime"
androidTestUtil "androidx.test:orchestrator:1.5.0"
androidTestUtil "androidx.test.services:test-services:1.5.0"
androidTestImplementation "androidx.test.ext:junit:$androidx_test_junit"
androidTestImplementation "androidx.test.espresso:espresso-core:$espresso_ver"
// Set this dependency to use JUnit 4 rules
androidTestImplementation "androidx.test:rules:$androidx_test_rules"
androidTestImplementation "androidx.test:core:$androidx_test_core"
androidTestImplementation "androidx.test:core-ktx:$androidx_test_core"

androidTestImplementation "org.mockito:mockito-core:$mockito_ver_sdk_module"
androidTestImplementation "org.mockito:mockito-android:$mockito_ver_sdk_module"
androidTestImplementation("org.mockito:mockito-core:$mockito_ver_sdk_module") { exclude group: 'org.objenesis' }
androidTestImplementation("org.mockito:mockito-android:$mockito_ver_sdk_module") { exclude group: 'org.objenesis' }
androidTestImplementation("com.linkedin.dexmaker:dexmaker-mockito-inline:2.28.3") { exclude group: 'org.objenesis' }
androidTestImplementation("com.linkedin.dexmaker:dexmaker-mockito:2.28.3") { exclude group: 'org.objenesis' }
androidTestImplementation "org.objenesis:objenesis:2.6"
androidTestImplementation "com.noveogroup.android:android-logger:$android_logger_ver"
androidTestImplementation "com.google.code.gson:gson:$gson_ver"
androidTestImplementation "com.fasterxml.jackson.core:jackson-databind:$jacksonversion"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.optimizely.ab.OptimizelyUserContext;
import com.optimizely.ab.android.odp.DefaultODPApiManager;
import com.optimizely.ab.odp.ODPApiManager;
import com.optimizely.ab.odp.ODPEventManager;
import com.optimizely.ab.odp.ODPManager;
Expand Down Expand Up @@ -92,7 +91,7 @@ public class ODPIntegrationTest {

@Before
public void setup() throws Exception {
odpApiManager = mock(DefaultODPApiManager.class);
odpApiManager = mock(ODPApiManager.class);
when(odpApiManager.sendEvents(anyString(), anyString(), anyString())).thenReturn(200); // return success, otherwise retried 3 times.

odpEventManager = new ODPEventManager(odpApiManager);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.Mockito.verifyNoInteractions;
import static org.mockito.Mockito.when;

@RunWith(Parameterized.class)
Expand Down Expand Up @@ -435,7 +435,7 @@ public void testGoodForcedTrack() {

optimizelyClient.track("test_event", GENERIC_USER_ID);

verifyZeroInteractions(logger);
verifyNoInteractions(logger);

ArgumentCaptor<LogEvent> logEventArgumentCaptor = ArgumentCaptor.forClass(LogEvent.class);
try {
Expand Down Expand Up @@ -466,7 +466,7 @@ public void testGoodTrack() {
OptimizelyClient optimizelyClient = new OptimizelyClient(optimizely,
logger);
optimizelyClient.track("test_event", GENERIC_USER_ID);
verifyZeroInteractions(logger);
verifyNoInteractions(logger);
}

@Test
Expand All @@ -488,7 +488,7 @@ public void onTrack(@Nonnull String eventKey, @Nonnull String userId, @Nonnull M
assertTrue(notificationId <= 0);
assertFalse(optimizelyClient.getNotificationCenter().removeNotificationListener(notificationId));
assertEquals(false, numberOfCalls[0]);
verifyZeroInteractions(logger);
verifyNoInteractions(logger);

}

Expand Down Expand Up @@ -516,7 +516,7 @@ public void onTrack(@Nonnull String eventKey, @Nonnull String userId, @Nonnull M
else {
assertEquals(true, numberOfCalls[0]);
}
verifyZeroInteractions(logger);
verifyNoInteractions(logger);

}

Expand All @@ -528,7 +528,7 @@ public void testGoodTrackBucketing() {
Experiment experiment = optimizelyClient.getProjectConfig().getExperimentsForEventKey("test_event").get(0);
attributes.put(BUCKETING_ATTRIBUTE, bucketingId);
optimizelyClient.track("test_event", "userId", attributes);
verifyZeroInteractions(logger);
verifyNoInteractions(logger);
}

@Test
Expand Down Expand Up @@ -573,7 +573,7 @@ public void testGoodForcedTrackAttribute() {

optimizelyClient.track("test_event", GENERIC_USER_ID, attributes);

verifyZeroInteractions(logger);
verifyNoInteractions(logger);

ArgumentCaptor<LogEvent> logEventArgumentCaptor = ArgumentCaptor.forClass(LogEvent.class);

Expand Down Expand Up @@ -615,7 +615,7 @@ public void testGoodTrackAttribute() {

optimizelyClient.track("test_event", GENERIC_USER_ID, attributes);

verifyZeroInteractions(logger);
verifyNoInteractions(logger);

Variation v = optimizelyClient.getForcedVariation(FEATURE_ANDROID_EXPERIMENT_KEY, GENERIC_USER_ID);
assertEquals(v.getKey(), "var_2");
Expand Down Expand Up @@ -675,7 +675,7 @@ public void testGoodForcedTrackEventVal() {
Collections.<String, String>emptyMap(),
Collections.singletonMap(ReservedEventKey.REVENUE.toString(), 1L));

verifyZeroInteractions(logger);
verifyNoInteractions(logger);

ArgumentCaptor<LogEvent> logEventArgumentCaptor = ArgumentCaptor.forClass(LogEvent.class);

Expand Down Expand Up @@ -709,7 +709,7 @@ public void testGoodTrackEventVal() {
GENERIC_USER_ID,
Collections.<String, String>emptyMap(),
Collections.singletonMap(ReservedEventKey.REVENUE.toString(), 1L));
verifyZeroInteractions(logger);
verifyNoInteractions(logger);
}

@Test
Expand Down Expand Up @@ -754,7 +754,7 @@ public void testGoodTrackAttributeEventVal() {
final HashMap<String, String> attributes = new HashMap<>();
optimizelyClient.track("test_event", GENERIC_USER_ID, attributes,
Collections.singletonMap(ReservedEventKey.REVENUE.toString(), 1L));
verifyZeroInteractions(logger);
verifyNoInteractions(logger);
}

@Test
Expand All @@ -774,7 +774,7 @@ public void testGoodForcedTrackAttributeEventVal() {
attributes,
Collections.singletonMap(ReservedEventKey.REVENUE.toString(), 1L));

verifyZeroInteractions(logger);
verifyNoInteractions(logger);

ArgumentCaptor<LogEvent> logEventArgumentCaptor = ArgumentCaptor.forClass(LogEvent.class);

Expand Down Expand Up @@ -843,7 +843,7 @@ public void testTrackWithEventTags() {
final HashMap<String, Object> eventTags = new HashMap<>();
eventTags.put("foo", 843);
optimizelyClient.track("test_event", GENERIC_USER_ID, attributes, eventTags);
verifyZeroInteractions(logger);
verifyNoInteractions(logger);
}

@Test
Expand Down Expand Up @@ -879,7 +879,7 @@ public void testForcedTrackWithEventTags() {
// id of var_2
assertTrue(logEvent.getBody().contains("\"enrich_decisions\":true"));

verifyZeroInteractions(logger);
verifyNoInteractions(logger);

Variation v = optimizelyClient.getForcedVariation(FEATURE_ANDROID_EXPERIMENT_KEY, GENERIC_USER_ID);
assertEquals(v.getKey(), "var_2");
Expand Down Expand Up @@ -983,7 +983,7 @@ public void testGoodGetVariationAttribute() {
logger);
final HashMap<String, String> attributes = new HashMap<>();
optimizelyClient.getVariation(FEATURE_ANDROID_EXPERIMENT_KEY, GENERIC_USER_ID, attributes);
verifyZeroInteractions(logger);
verifyNoInteractions(logger);
}

@Test
Expand All @@ -1000,7 +1000,7 @@ public void testGoodForcedGetVariationAttribute() {

v = optimizelyClient.getVariation(FEATURE_ANDROID_EXPERIMENT_KEY, GENERIC_USER_ID, attributes);

verifyZeroInteractions(logger);
verifyNoInteractions(logger);

assertEquals(v.getKey(), "var_2");

Expand Down Expand Up @@ -1184,7 +1184,7 @@ public void testGoodIsFeatureEnabledWithAttribute() {
Collections.singletonMap("house", "Gryffindor")
));

verifyZeroInteractions(logger);
verifyNoInteractions(logger);

assertFalse(optimizelyClient.isFeatureEnabled(
"InvalidFeatureKey",
Expand Down Expand Up @@ -1305,7 +1305,7 @@ public void testIsFeatureEnabledWithFeatureEnabledTrue(){
Collections.singletonMap("house", "Gryffindor")
));

verifyZeroInteractions(logger);
verifyNoInteractions(logger);

}

Expand Down Expand Up @@ -1402,7 +1402,7 @@ public void testGoodGetFeatureVariableBooleanWithAttr() {
GENERIC_USER_ID,
Collections.singletonMap("key", "value")
));
verifyZeroInteractions(logger);
verifyNoInteractions(logger);

}

Expand Down Expand Up @@ -1509,7 +1509,7 @@ public void testGoodGetFeatureVariableDoubleWithAttr() {
GENERIC_USER_ID,
Collections.singletonMap("house", "Gryffindor")
));
verifyZeroInteractions(logger);
verifyNoInteractions(logger);
}

//FeatureVariableDouble Scenario#3 if feature not found
Expand Down Expand Up @@ -1620,7 +1620,7 @@ public void testGoodGetFeatureVariableIntegerWithAttr() {
GENERIC_USER_ID,
Collections.singletonMap("house", "Gryffindor")
));
verifyZeroInteractions(logger);
verifyNoInteractions(logger);
}

//FeatureVariableInteger Scenario#3 if feature not found
Expand Down Expand Up @@ -1727,7 +1727,7 @@ public void testGoodGetFeatureVariableStringWithAttr() {
GENERIC_USER_ID,
Collections.singletonMap("house", "Gryffindor")
));
verifyZeroInteractions(logger);
verifyNoInteractions(logger);
}

//FeatureVariableString Scenario#3 if feature not found
Expand Down Expand Up @@ -1841,7 +1841,7 @@ public void testGetFeatureVariableJsonWithAttr() {
);

assertTrue(compareJsonStrings(json.toString(), defaultValueOfStringVar));
verifyZeroInteractions(logger);
verifyNoInteractions(logger);
}

//FeatureVariableJSON Scenario#3 if feature not found
Expand Down Expand Up @@ -1953,7 +1953,7 @@ public void testGetAllFeatureVariablesWithAttr() {
);

assertTrue(compareJsonStrings(json.toString(), defaultValueOfStringVar));
verifyZeroInteractions(logger);
verifyNoInteractions(logger);
}

//GetAllFeatureVariables Scenario#3 if feature not found
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -824,7 +824,7 @@ public void initializeAsyncCallbackInBackgroundThread() throws InterruptedExcept
}
);

boolean completed = latch.await(1, TimeUnit.SECONDS);
boolean completed = latch.await(5, TimeUnit.SECONDS);
if (!completed) {
fail("OptimizelyStartListener thread checking failed");
}
Expand Down Expand Up @@ -855,7 +855,7 @@ public void initializeAsyncCallbackInMainThread() throws InterruptedException {
}
);

boolean completed = latch.await(1, TimeUnit.SECONDS);
boolean completed = latch.await(5, TimeUnit.SECONDS);
if (!completed) {
fail("OptimizelyStartListener thread checking failed");
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
com.android.dx.mockito.inline.InlineDexmakerMockMaker
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -97,13 +97,13 @@ ext {
build_tools_version = "35.0.0"
min_sdk_version = 21
target_sdk_version = 35
java_core_ver = "4.3.1"
java_core_ver = "4.4.0"
android_logger_ver = "1.3.6"
jacksonversion= "2.11.2"
annotations_ver = "1.2.0"
junit_ver = "4.12"
mockito_ver = "4.11.0"
mockito_ver_sdk_module = "2.28.2"
mockito_ver_sdk_module = "3.6.28"
powermock_ver = "2.0.9"
support_test_runner_ver = "0.5"
dexmaker_ver = "1.4"
Expand Down
14 changes: 11 additions & 3 deletions datafile-handler/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,12 @@ android {
minifyEnabled false
}
debug {
testCoverageEnabled true
testCoverageEnabled false
}
}
packagingOptions {
resources {
pickFirsts += ['mockito-extensions/org.mockito.plugins.MockMaker', 'mockito-extensions/org.mockito.plugins.StackTraceCleanerProvider']
}
}
}
Expand All @@ -60,8 +65,11 @@ dependencies {
androidTestImplementation "androidx.test:core:$androidx_test_core"
androidTestImplementation "androidx.test:core-ktx:$androidx_test_core"

androidTestImplementation "org.mockito:mockito-core:$mockito_ver_sdk_module"
androidTestImplementation "org.mockito:mockito-android:$mockito_ver_sdk_module"
androidTestImplementation("org.mockito:mockito-core:$mockito_ver_sdk_module") { exclude group: 'org.objenesis' }
androidTestImplementation("org.mockito:mockito-android:$mockito_ver_sdk_module") { exclude group: 'org.objenesis' }
androidTestImplementation("com.linkedin.dexmaker:dexmaker-mockito-inline:2.28.3") { exclude group: 'org.objenesis' }
androidTestImplementation("com.linkedin.dexmaker:dexmaker-mockito:2.28.3") { exclude group: 'org.objenesis' }
androidTestImplementation "org.objenesis:objenesis:2.6"
androidTestImplementation "com.noveogroup.android:android-logger:$android_logger_ver"
androidTestImplementation "com.fasterxml.jackson.core:jackson-databind:$jacksonversion"
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public void setup() {

@After
public void tearDown() {
cache.delete(BackgroundWatchersCache.BACKGROUND_WATCHERS_FILE_NAME);
if (cache != null) cache.delete(BackgroundWatchersCache.BACKGROUND_WATCHERS_FILE_NAME);
}

@Test
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
com.android.dx.mockito.inline.InlineDexmakerMockMaker
Loading
Loading