From 0b2e495c8578791f3358feff08cc11fc91501a61 Mon Sep 17 00:00:00 2001 From: Arif Burak Demiray Date: Mon, 8 Sep 2025 11:11:52 +0300 Subject: [PATCH 1/3] fix: tests --- .../android/sdk/BreadcrumbHelperTests.java | 4 +- .../android/sdk/ModuleRemoteConfigTests.java | 30 ++++++++++--- .../sdk/RemoteConfigVariantControlTests.java | 45 ++++++++++++++----- .../java/ly/count/android/sdk/TestUtils.java | 21 ++++++++- 4 files changed, 80 insertions(+), 20 deletions(-) diff --git a/sdk/src/androidTest/java/ly/count/android/sdk/BreadcrumbHelperTests.java b/sdk/src/androidTest/java/ly/count/android/sdk/BreadcrumbHelperTests.java index 4b851b030..a3e4fda01 100644 --- a/sdk/src/androidTest/java/ly/count/android/sdk/BreadcrumbHelperTests.java +++ b/sdk/src/androidTest/java/ly/count/android/sdk/BreadcrumbHelperTests.java @@ -18,7 +18,7 @@ public class BreadcrumbHelperTests { @Test public void addBreadcrumb() { BreadcrumbHelper breadcrumbHelper = new BreadcrumbHelper(5, new ModuleLog()); - breadcrumbHelper.addBreadcrumb("test", 10); + breadcrumbHelper.addBreadcrumb("test", 10, 5); Assert.assertEquals(list("test"), breadcrumbHelper.getBreadcrumbs()); } @@ -75,7 +75,7 @@ public void addBreadcrumb_exceedsLimit() { @Test public void clearBreadcrumbs() { BreadcrumbHelper breadcrumbHelper = new BreadcrumbHelper(2, new ModuleLog()); - breadcrumbHelper.addBreadcrumb("Test", 3); + breadcrumbHelper.addBreadcrumb("Test", 3, 2); Assert.assertEquals(list("Tes"), breadcrumbHelper.getBreadcrumbs()); breadcrumbHelper.clearBreadcrumbs(); Assert.assertEquals(list(), breadcrumbHelper.getBreadcrumbs()); diff --git a/sdk/src/androidTest/java/ly/count/android/sdk/ModuleRemoteConfigTests.java b/sdk/src/androidTest/java/ly/count/android/sdk/ModuleRemoteConfigTests.java index ca7f7bfba..e300270d8 100644 --- a/sdk/src/androidTest/java/ly/count/android/sdk/ModuleRemoteConfigTests.java +++ b/sdk/src/androidTest/java/ly/count/android/sdk/ModuleRemoteConfigTests.java @@ -74,11 +74,25 @@ public void automaticRCTriggers() { config.setRequiresConsent(true); config.setConsentEnabled(new String[] { Countly.CountlyFeatureNames.remoteConfig }); } - config.immediateRequestGenerator = () -> (ImmediateRequestI) (requestData, customEndpoint, cp, requestShouldBeDelayed, networkingIsEnabled, callback, log) -> { - if (!requestData.endsWith("method=sc")) { // this is server config, disabling it for this test - triggerCounter[0]++; + + config.immediateRequestGenerator = new ImmediateRequestGenerator() { + @Override public ImmediateRequestI CreateImmediateRequestMaker() { + return (requestData, customEndpoint, cp, requestShouldBeDelayed, networkingIsEnabled, callback, log) -> { + if (!requestData.endsWith("method=sc")) { // this is server config, disabling it for this test + triggerCounter[0]++; + } + }; + } + + @Override public ImmediateRequestI CreatePreflightRequestMaker() { + return (requestData, customEndpoint, cp, requestShouldBeDelayed, networkingIsEnabled, callback, log) -> { + if (!requestData.endsWith("method=sc")) { // this is server config, disabling it for this test + triggerCounter[0]++; + } + }; } }; + Countly countly = (new Countly()).init(config); Assert.assertEquals(++intendedCount, triggerCounter[0]);//init should create a request @@ -281,8 +295,14 @@ public void rcGlobalCallback() { config.RemoteConfigRegisterGlobalCallback(c1); config.RemoteConfigRegisterGlobalCallback(c2); config.setRemoteConfigAutomaticDownload(true, oldRCC); - config.immediateRequestGenerator = () -> (ImmediateRequestI) (requestData, customEndpoint, cp, requestShouldBeDelayed, networkingIsEnabled, callback, log) -> { - callback.callback(null); + config.immediateRequestGenerator = new ImmediateRequestGenerator() { + @Override public ImmediateRequestI CreateImmediateRequestMaker() { + return (requestData, customEndpoint, cp, requestShouldBeDelayed, networkingIsEnabled, callback, log) -> callback.callback(null); + } + + @Override public ImmediateRequestI CreatePreflightRequestMaker() { + return (requestData, customEndpoint, cp, requestShouldBeDelayed, networkingIsEnabled, callback, log) -> callback.callback(null); + } }; Countly countly = new Countly().init(config); diff --git a/sdk/src/androidTest/java/ly/count/android/sdk/RemoteConfigVariantControlTests.java b/sdk/src/androidTest/java/ly/count/android/sdk/RemoteConfigVariantControlTests.java index aca945ec8..3cf57340a 100644 --- a/sdk/src/androidTest/java/ly/count/android/sdk/RemoteConfigVariantControlTests.java +++ b/sdk/src/androidTest/java/ly/count/android/sdk/RemoteConfigVariantControlTests.java @@ -235,21 +235,44 @@ public void testFilteringWrongKeys() { } ImmediateRequestGenerator createIRGForSpecificResponse(final String targetResponse) { - return () -> (requestData, customEndpoint, cp, requestShouldBeDelayed, networkingIsEnabled, callback, log) -> { - if (targetResponse == null) { - callback.callback(null); - return; + return new ImmediateRequestGenerator() { + @Override public ImmediateRequestI CreateImmediateRequestMaker() { + return (requestData, customEndpoint, cp, requestShouldBeDelayed, networkingIsEnabled, callback, log) -> { + if (targetResponse == null) { + callback.callback(null); + return; + } + + JSONObject jobj = null; + + try { + jobj = new JSONObject(targetResponse); + } catch (JSONException e) { + e.printStackTrace(); + } + + callback.callback(jobj); + }; } - JSONObject jobj = null; + @Override public ImmediateRequestI CreatePreflightRequestMaker() { + return (requestData, customEndpoint, cp, requestShouldBeDelayed, networkingIsEnabled, callback, log) -> { + if (targetResponse == null) { + callback.callback(null); + return; + } - try { - jobj = new JSONObject(targetResponse); - } catch (JSONException e) { - e.printStackTrace(); - } + JSONObject jobj = null; + + try { + jobj = new JSONObject(targetResponse); + } catch (JSONException e) { + e.printStackTrace(); + } - callback.callback(jobj); + callback.callback(jobj); + }; + } }; } diff --git a/sdk/src/androidTest/java/ly/count/android/sdk/TestUtils.java b/sdk/src/androidTest/java/ly/count/android/sdk/TestUtils.java index f7608aa03..ae7448fa0 100644 --- a/sdk/src/androidTest/java/ly/count/android/sdk/TestUtils.java +++ b/sdk/src/androidTest/java/ly/count/android/sdk/TestUtils.java @@ -66,7 +66,16 @@ public static CountlyConfig createConsentCountlyConfig(boolean requiresConsent, .disableHealthCheck();//mocked tests fail without disabling this cc.testModuleListener = testModuleListener; cc.requestQueueProvider = rqp; - cc.immediateRequestGenerator = () -> (ImmediateRequestI) (requestData, customEndpoint, cp, requestShouldBeDelayed, networkingIsEnabled, callback, log) -> { + cc.immediateRequestGenerator = new ImmediateRequestGenerator() { + @Override public ImmediateRequestI CreateImmediateRequestMaker() { + return (requestData, customEndpoint, cp, requestShouldBeDelayed, networkingIsEnabled, callback, log) -> { + }; + } + + @Override public ImmediateRequestI CreatePreflightRequestMaker() { + return (requestData, customEndpoint, cp, requestShouldBeDelayed, networkingIsEnabled, callback, log) -> { + }; + } }; return cc; } @@ -84,8 +93,16 @@ public static CountlyConfig createAttributionCountlyConfig(boolean requiresConse .disableHealthCheck();//mocked tests fail without disabling this cc.testModuleListener = testModuleListener; cc.requestQueueProvider = rqp; - cc.immediateRequestGenerator = () -> (ImmediateRequestI) (requestData, customEndpoint, cp, requestShouldBeDelayed, networkingIsEnabled, callback, log) -> { + cc.immediateRequestGenerator = new ImmediateRequestGenerator() { + @Override public ImmediateRequestI CreateImmediateRequestMaker() { + return (requestData, customEndpoint, cp, requestShouldBeDelayed, networkingIsEnabled, callback, log) -> { + }; + } + @Override public ImmediateRequestI CreatePreflightRequestMaker() { + return (requestData, customEndpoint, cp, requestShouldBeDelayed, networkingIsEnabled, callback, log) -> { + }; + } }; return cc; } From c0936e42e3c3be6c797aa017773bec2e6eb2e31c Mon Sep 17 00:00:00 2001 From: Arif Burak Demiray Date: Mon, 8 Sep 2025 11:39:18 +0300 Subject: [PATCH 2/3] fix: upgrade java v --- .github/workflows/build_and_test_sdk.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test_sdk.yml b/.github/workflows/build_and_test_sdk.yml index c4b9e82ad..739552e61 100644 --- a/.github/workflows/build_and_test_sdk.yml +++ b/.github/workflows/build_and_test_sdk.yml @@ -2,7 +2,7 @@ name: The Countly Android SDK Unit Test env: EMULATOR_REPO: us-docker.pkg.dev/android-emulator-268719/images/28-playstore-x64:30.1.2 - JAVA_V: 11 + JAVA_V: 17 JAVA_DIST: corretto permissions: From 8074831aae66e752310db04ca51881833071fcc9 Mon Sep 17 00:00:00 2001 From: Arif Burak Demiray Date: Mon, 8 Sep 2025 12:11:50 +0300 Subject: [PATCH 3/3] fix: sbs param count --- .../java/ly/count/android/sdk/ModuleConfigurationTests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/src/androidTest/java/ly/count/android/sdk/ModuleConfigurationTests.java b/sdk/src/androidTest/java/ly/count/android/sdk/ModuleConfigurationTests.java index dfc7bc3c5..f87647231 100644 --- a/sdk/src/androidTest/java/ly/count/android/sdk/ModuleConfigurationTests.java +++ b/sdk/src/androidTest/java/ly/count/android/sdk/ModuleConfigurationTests.java @@ -644,7 +644,7 @@ public void invalidConfigResponses_AreRejected() { */ @Test public void configurationParameterCount() { - int configParameterCount = 26; // plus config, timestamp and version parameters + int configParameterCount = 31; // plus config, timestamp and version parameters int count = 0; for (Field field : ModuleConfiguration.class.getDeclaredFields()) { if (field.getName().startsWith("keyR")) {