From e808d71abd94056e9da1591814202e22e0f4eaea Mon Sep 17 00:00:00 2001 From: Jamie Lynch Date: Mon, 19 Aug 2024 10:17:59 +0100 Subject: [PATCH] refactor: delete unused endpoint code --- .../internal/comms/api/ApiRequestMapper.kt | 21 --- .../internal/comms/api/ApiService.kt | 16 -- .../internal/comms/api/EmbraceApiService.kt | 9 - .../internal/comms/api/EmbraceUrl.kt | 2 - .../comms/delivery/DeliveryService.kt | 3 - .../comms/delivery/EmbraceDeliveryService.kt | 9 - .../comms/delivery/NoopDeliveryService.kt | 7 - .../comms/delivery/PendingApiCallQueue.kt | 2 - .../comms/api/ApiRequestMapperTest.kt | 36 ---- .../comms/api/EmbraceApiServiceTest.kt | 160 +++--------------- .../internal/comms/api/EmbraceUrlTest.kt | 4 - .../EmbracePendingApiCallsSenderTest.kt | 9 +- .../comms/delivery/PendingApiCallsTest.kt | 2 - .../embracesdk/internal/comms/api/Endpoint.kt | 2 - .../IntegrationTestRuleExtensions.kt | 25 --- .../embracesdk/fakes/FakeApiService.kt | 11 -- .../embracesdk/fakes/FakeDeliveryService.kt | 11 -- 17 files changed, 32 insertions(+), 297 deletions(-) diff --git a/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/api/ApiRequestMapper.kt b/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/api/ApiRequestMapper.kt index 28488eb24a..6b0d7f8072 100644 --- a/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/api/ApiRequestMapper.kt +++ b/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/api/ApiRequestMapper.kt @@ -5,7 +5,6 @@ import io.embrace.android.embracesdk.internal.payload.Envelope import io.embrace.android.embracesdk.internal.payload.EventMessage import io.embrace.android.embracesdk.internal.payload.EventType import io.embrace.android.embracesdk.internal.payload.LogPayload -import io.embrace.android.embracesdk.internal.payload.NetworkEvent import io.embrace.android.embracesdk.internal.payload.SessionPayload import io.embrace.android.embracesdk.network.http.HttpMethod @@ -40,19 +39,6 @@ public class ApiRequestMapper( httpMethod = HttpMethod.GET, ) - public fun logRequest( - eventMessage: EventMessage - ): ApiRequest { - checkNotNull(eventMessage.event) { "event must be set" } - val event = eventMessage.event - val type = checkNotNull(event.type) { "event type must be set" } - checkNotNull(event.eventId) { "event ID must be set" } - val url = Endpoint.LOGGING.asEmbraceUrl() - val abbreviation = type.abbreviation - val logIdentifier = abbreviation + ":" + event.messageId - return requestBuilder(url).copy(logId = logIdentifier) - } - @Suppress("UNUSED_PARAMETER") public fun logsEnvelopeRequest(envelope: Envelope): ApiRequest { val url = Endpoint.LOGS.asEmbraceUrl() @@ -85,13 +71,6 @@ public class ApiRequestMapper( return requestBuilder(url).copy(eventId = eventIdentifier) } - public fun networkEventRequest(networkEvent: NetworkEvent): ApiRequest { - val url = Endpoint.NETWORK.asEmbraceUrl() - val abbreviation = EventType.NETWORK_LOG.abbreviation - val networkIdentifier = "$abbreviation:${networkEvent.eventId}" - return requestBuilder(url).copy(logId = networkIdentifier) - } - /** * Crashes are sent with a header containing the list of active stories. * diff --git a/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/api/ApiService.kt b/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/api/ApiService.kt index bf9b7308e3..a673c29813 100644 --- a/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/api/ApiService.kt +++ b/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/api/ApiService.kt @@ -6,19 +6,10 @@ import io.embrace.android.embracesdk.internal.injection.SerializationAction import io.embrace.android.embracesdk.internal.payload.Envelope import io.embrace.android.embracesdk.internal.payload.EventMessage import io.embrace.android.embracesdk.internal.payload.LogPayload -import io.embrace.android.embracesdk.internal.payload.NetworkEvent import java.util.concurrent.Future public interface ApiService : RemoteConfigSource, NetworkConnectivityListener { - /** - * Sends a log message to the API. - * - * @param eventMessage the event message containing the log entry - * @return a future containing the response body from the server - */ - public fun sendLog(eventMessage: EventMessage) - /** * Sends a list of OTel Logs to the API. * @@ -33,13 +24,6 @@ public interface ApiService : RemoteConfigSource, NetworkConnectivityListener { */ public fun saveLogEnvelope(logEnvelope: Envelope) - /** - * Sends a network event to the API. - * - * @param networkEvent the event containing the network call information - */ - public fun sendNetworkCall(networkEvent: NetworkEvent) - /** * Sends an event to the API. * diff --git a/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/api/EmbraceApiService.kt b/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/api/EmbraceApiService.kt index 4e065ce3c2..7e2b77ea1b 100644 --- a/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/api/EmbraceApiService.kt +++ b/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/api/EmbraceApiService.kt @@ -13,7 +13,6 @@ import io.embrace.android.embracesdk.internal.logging.EmbLogger import io.embrace.android.embracesdk.internal.payload.Envelope import io.embrace.android.embracesdk.internal.payload.EventMessage import io.embrace.android.embracesdk.internal.payload.LogPayload -import io.embrace.android.embracesdk.internal.payload.NetworkEvent import io.embrace.android.embracesdk.internal.serialization.PlatformSerializer import io.embrace.android.embracesdk.internal.worker.BackgroundWorker import io.embrace.android.embracesdk.internal.worker.TaskPriority @@ -114,10 +113,6 @@ public class EmbraceApiService( lastNetworkStatus = status } - override fun sendLog(eventMessage: EventMessage) { - post(eventMessage, mapper::logRequest) - } - override fun sendLogEnvelope(logEnvelope: Envelope) { val parameterizedType = TypeUtils.parameterizedType(Envelope::class, LogPayload::class) post(logEnvelope, mapper::logsEnvelopeRequest, parameterizedType) @@ -134,10 +129,6 @@ public class EmbraceApiService( pendingApiCallsSender.savePendingApiCall(request, action, sync = true) } - override fun sendNetworkCall(networkEvent: NetworkEvent) { - post(networkEvent, mapper::networkEventRequest) - } - override fun sendEvent(eventMessage: EventMessage) { post(eventMessage, mapper::eventMessageRequest) } diff --git a/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/api/EmbraceUrl.kt b/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/api/EmbraceUrl.kt index 36ba1dec7f..e8016359a0 100644 --- a/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/api/EmbraceUrl.kt +++ b/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/api/EmbraceUrl.kt @@ -17,9 +17,7 @@ internal class EmbraceUrl(val url: URL) { fun endpoint(): Endpoint { return when (url.path.substringAfterLast("/")) { Endpoint.EVENTS.path -> Endpoint.EVENTS - Endpoint.LOGGING.path -> Endpoint.LOGGING Endpoint.LOGS.path -> Endpoint.LOGS - Endpoint.NETWORK.path -> Endpoint.NETWORK Endpoint.SESSIONS.path -> Endpoint.SESSIONS Endpoint.SESSIONS_V2.path -> Endpoint.SESSIONS_V2 else -> Endpoint.UNKNOWN diff --git a/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/delivery/DeliveryService.kt b/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/delivery/DeliveryService.kt index 910118f14d..5d99ceed2d 100644 --- a/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/delivery/DeliveryService.kt +++ b/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/delivery/DeliveryService.kt @@ -4,7 +4,6 @@ import io.embrace.android.embracesdk.internal.ndk.NativeCrashService import io.embrace.android.embracesdk.internal.payload.Envelope import io.embrace.android.embracesdk.internal.payload.EventMessage import io.embrace.android.embracesdk.internal.payload.LogPayload -import io.embrace.android.embracesdk.internal.payload.NetworkEvent import io.embrace.android.embracesdk.internal.payload.SessionPayload import io.embrace.android.embracesdk.internal.session.id.SessionIdTracker import io.embrace.android.embracesdk.internal.session.orchestrator.SessionSnapshotType @@ -16,10 +15,8 @@ public interface DeliveryService { nativeCrashServiceProvider: Provider, sessionIdTracker: SessionIdTracker ) - public fun sendLog(eventMessage: EventMessage) public fun sendLogs(logEnvelope: Envelope) public fun saveLogs(logEnvelope: Envelope) - public fun sendNetworkCall(networkEvent: NetworkEvent) public fun sendCrash(crash: EventMessage, processTerminating: Boolean) public fun sendMoment(eventMessage: EventMessage) } diff --git a/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/delivery/EmbraceDeliveryService.kt b/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/delivery/EmbraceDeliveryService.kt index 3ed44bac67..f0a7f66f55 100644 --- a/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/delivery/EmbraceDeliveryService.kt +++ b/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/delivery/EmbraceDeliveryService.kt @@ -13,7 +13,6 @@ import io.embrace.android.embracesdk.internal.payload.Envelope import io.embrace.android.embracesdk.internal.payload.EventMessage import io.embrace.android.embracesdk.internal.payload.LogPayload import io.embrace.android.embracesdk.internal.payload.NativeCrashData -import io.embrace.android.embracesdk.internal.payload.NetworkEvent import io.embrace.android.embracesdk.internal.payload.SessionPayload import io.embrace.android.embracesdk.internal.payload.getSessionId import io.embrace.android.embracesdk.internal.payload.getSessionSpan @@ -81,10 +80,6 @@ public class EmbraceDeliveryService( } } - override fun sendLog(eventMessage: EventMessage) { - apiService.sendLog(eventMessage) - } - override fun sendLogs(logEnvelope: Envelope) { apiService.sendLogEnvelope(logEnvelope) } @@ -93,10 +88,6 @@ public class EmbraceDeliveryService( apiService.saveLogEnvelope(logEnvelope) } - override fun sendNetworkCall(networkEvent: NetworkEvent) { - apiService.sendNetworkCall(networkEvent) - } - override fun sendCrash(crash: EventMessage, processTerminating: Boolean) { runCatching { cacheManager.saveCrash(crash) diff --git a/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/delivery/NoopDeliveryService.kt b/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/delivery/NoopDeliveryService.kt index 3033567c67..713a1cfc3d 100644 --- a/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/delivery/NoopDeliveryService.kt +++ b/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/delivery/NoopDeliveryService.kt @@ -4,7 +4,6 @@ import io.embrace.android.embracesdk.internal.ndk.NativeCrashService import io.embrace.android.embracesdk.internal.payload.Envelope import io.embrace.android.embracesdk.internal.payload.EventMessage import io.embrace.android.embracesdk.internal.payload.LogPayload -import io.embrace.android.embracesdk.internal.payload.NetworkEvent import io.embrace.android.embracesdk.internal.payload.SessionPayload import io.embrace.android.embracesdk.internal.session.id.SessionIdTracker import io.embrace.android.embracesdk.internal.session.orchestrator.SessionSnapshotType @@ -21,18 +20,12 @@ public class NoopDeliveryService : DeliveryService { ) { } - override fun sendLog(eventMessage: EventMessage) { - } - override fun sendLogs(logEnvelope: Envelope) { } override fun saveLogs(logEnvelope: Envelope) { } - override fun sendNetworkCall(networkEvent: NetworkEvent) { - } - override fun sendCrash(crash: EventMessage, processTerminating: Boolean) { } diff --git a/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/delivery/PendingApiCallQueue.kt b/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/delivery/PendingApiCallQueue.kt index 80c1fdd8b3..1f25dc3f8f 100644 --- a/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/delivery/PendingApiCallQueue.kt +++ b/embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/delivery/PendingApiCallQueue.kt @@ -87,9 +87,7 @@ public class PendingApiCallQueue( private fun Endpoint.getMaxPendingApiCalls(): Int { return when (this) { Endpoint.EVENTS -> 100 - Endpoint.LOGGING -> 100 Endpoint.LOGS -> 10 - Endpoint.NETWORK -> 50 Endpoint.SESSIONS -> 100 Endpoint.SESSIONS_V2 -> 100 Endpoint.UNKNOWN -> 50 diff --git a/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/comms/api/ApiRequestMapperTest.kt b/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/comms/api/ApiRequestMapperTest.kt index bbe1c56602..e4d6576c6e 100644 --- a/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/comms/api/ApiRequestMapperTest.kt +++ b/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/comms/api/ApiRequestMapperTest.kt @@ -1,6 +1,5 @@ package io.embrace.android.embracesdk.internal.comms.api -import io.embrace.android.embracesdk.internal.payload.AppInfo import io.embrace.android.embracesdk.internal.payload.Attribute import io.embrace.android.embracesdk.internal.payload.Envelope import io.embrace.android.embracesdk.internal.payload.Event @@ -8,8 +7,6 @@ import io.embrace.android.embracesdk.internal.payload.EventMessage import io.embrace.android.embracesdk.internal.payload.EventType import io.embrace.android.embracesdk.internal.payload.Log import io.embrace.android.embracesdk.internal.payload.LogPayload -import io.embrace.android.embracesdk.internal.payload.NetworkCapturedCall -import io.embrace.android.embracesdk.internal.payload.NetworkEvent import io.embrace.android.embracesdk.network.http.HttpMethod import org.junit.Assert.assertEquals import org.junit.Assert.assertTrue @@ -46,21 +43,6 @@ internal class ApiRequestMapperTest { } } - @Test - fun testLogRequest() { - val request = mapper.logRequest( - EventMessage( - Event( - type = EventType.INFO_LOG, - eventId = "eventId", - messageId = "messageId" - ) - ) - ) - request.assertCoreFieldsPopulated("/v1/log/logging") - assertEquals("il:messageId", request.logId) - } - @Test fun testLogsRequest() { val request = mapper.logsEnvelopeRequest( @@ -118,24 +100,6 @@ internal class ApiRequestMapperTest { assertEquals("c:activeEventId1,activeEventId2", request.eventId) } - @Test - fun testNetworkEventRequest() { - val request = mapper.networkEventRequest( - NetworkEvent( - "eventId", - AppInfo(), - deviceId.value, - "eventId", - NetworkCapturedCall(), - "timestamp", - null, - null - ) - ) - request.assertCoreFieldsPopulated("/v1/log/network") - assertEquals("n:eventId", request.logId) - } - private fun ApiRequest.assertCoreFieldsPopulated(endpoint: String) { assertEquals("$BASE_URL$endpoint", url.url) assertEquals(HttpMethod.POST, httpMethod) diff --git a/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/comms/api/EmbraceApiServiceTest.kt b/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/comms/api/EmbraceApiServiceTest.kt index 478cb249fc..c4780515a4 100644 --- a/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/comms/api/EmbraceApiServiceTest.kt +++ b/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/comms/api/EmbraceApiServiceTest.kt @@ -12,7 +12,6 @@ import io.embrace.android.embracesdk.internal.comms.delivery.NetworkStatus import io.embrace.android.embracesdk.internal.compression.ConditionalGzipOutputStream import io.embrace.android.embracesdk.internal.config.remote.RemoteConfig import io.embrace.android.embracesdk.internal.logging.EmbLoggerImpl -import io.embrace.android.embracesdk.internal.payload.AppInfo import io.embrace.android.embracesdk.internal.payload.Attribute import io.embrace.android.embracesdk.internal.payload.Envelope import io.embrace.android.embracesdk.internal.payload.Event @@ -20,8 +19,6 @@ import io.embrace.android.embracesdk.internal.payload.EventMessage import io.embrace.android.embracesdk.internal.payload.EventType import io.embrace.android.embracesdk.internal.payload.Log import io.embrace.android.embracesdk.internal.payload.LogPayload -import io.embrace.android.embracesdk.internal.payload.NetworkCapturedCall -import io.embrace.android.embracesdk.internal.payload.NetworkEvent import io.embrace.android.embracesdk.internal.serialization.EmbraceSerializer import io.embrace.android.embracesdk.internal.worker.BackgroundWorker import io.embrace.android.embracesdk.internal.worker.ScheduledWorker @@ -39,11 +36,14 @@ import org.junit.Before import org.junit.Test import java.io.ByteArrayOutputStream import java.lang.reflect.ParameterizedType +import java.lang.reflect.Type import java.util.concurrent.ScheduledExecutorService internal class EmbraceApiServiceTest { private val serializer = EmbraceSerializer() + private val logPayload = Envelope(data = LogPayload()) + private val logType = TypeUtils.parameterizedType(Envelope::class, LogPayload::class) private lateinit var apiUrlBuilder: ApiUrlBuilder private lateinit var fakeApiClient: FakeApiClient @@ -152,46 +152,6 @@ internal class EmbraceApiServiceTest { assertEquals(apiService.getCachedConfig(), cachedConfig) } - @Test - fun `send log request is as expected`() { - fakeApiClient.queueResponse(successfulPostResponse) - val event = EventMessage( - event = Event( - eventId = "event-id", - messageId = "message-id", - type = EventType.ERROR_LOG - ) - ) - apiService.sendLog(event) - - verifyOnlyRequest( - expectedUrl = "https://a-$fakeAppId.data.emb-api.com/v1/log/logging", - expectedLogId = "el:message-id", - expectedPayload = getExpectedPayloadSerialized(event) - ) - } - - @Test - fun `send network request is as expected`() { - fakeApiClient.queueResponse(successfulPostResponse) - val networkEvent = NetworkEvent( - "", - AppInfo(), - "", - "network-event-id", - NetworkCapturedCall(), - "", - null, - null - ) - apiService.sendNetworkCall(networkEvent) - verifyOnlyRequest( - expectedUrl = "https://a-$fakeAppId.data.emb-api.com/v1/log/network", - expectedLogId = "n:network-event-id", - expectedPayload = getExpectedPayloadSerialized(networkEvent) - ) - } - @Test fun `send event request is as expected`() { fakeApiClient.queueResponse(successfulPostResponse) @@ -205,7 +165,7 @@ internal class EmbraceApiServiceTest { verifyOnlyRequest( expectedUrl = "https://a-$fakeAppId.data.emb-api.com/v1/log/events", expectedEventId = "e:event-id", - expectedPayload = getExpectedPayloadSerialized(event) + expectedPayload = getExpectedPayloadSerialized(event, EventMessage::class.java) ) } @@ -222,7 +182,7 @@ internal class EmbraceApiServiceTest { verifyOnlyRequest( expectedUrl = "https://a-$fakeAppId.data.emb-api.com/v1/log/events", expectedEventId = "c:event-1,event-2", - expectedPayload = getExpectedPayloadSerialized(crash) + expectedPayload = getExpectedPayloadSerialized(crash, EventMessage::class.java) ) } @@ -327,43 +287,27 @@ internal class EmbraceApiServiceTest { @Test fun `unsuccessful requests are queued for later`() { apiService.onNetworkConnectivityStatusChanged(NetworkStatus.NOT_REACHABLE) - val event = EventMessage( - event = Event( - eventId = "event-id", - messageId = "message-id", - type = EventType.ERROR_LOG - ) - ) - apiService.sendLog(event) + apiService.sendLogEnvelope(logPayload) assertEquals(0, fakeApiClient.sentRequests.size) val request = fakePendingApiCallsSender.retryQueue.single().first - assertEquals("https://a-$fakeAppId.data.emb-api.com/v1/log/logging", request.url.url) + assertEquals("https://a-$fakeAppId.data.emb-api.com/v2/logs", request.url.url) } @Test fun `test that requests returning a TooManyRequests response, saves and schedule a pending api call`() { val response = ApiResponse.TooManyRequests( - endpoint = Endpoint.LOGGING, + endpoint = Endpoint.LOGS, retryAfter = 3 ) fakeApiClient.queueResponse(response) - val event = EventMessage( - event = Event( - eventId = "event-id", - messageId = "message-id", - type = EventType.ERROR_LOG - ) - ) assertEquals(0, fakePendingApiCallsSender.retryQueue.size) assertFalse(fakePendingApiCallsSender.didScheduleApiCall) - - apiService.sendLog(event) + apiService.sendLogEnvelope(logPayload) verifyOnlyRequest( - expectedUrl = "https://a-$fakeAppId.data.emb-api.com/v1/log/logging", - expectedLogId = "el:message-id", - expectedPayload = getExpectedPayloadSerialized(event) + expectedUrl = "https://a-$fakeAppId.data.emb-api.com/v2/logs", + expectedPayload = getExpectedPayloadSerialized(logPayload, logType) ) assertEquals(1, fakePendingApiCallsSender.retryQueue.size) assertTrue(fakePendingApiCallsSender.didScheduleApiCall) @@ -374,22 +318,14 @@ internal class EmbraceApiServiceTest { val response = ApiResponse.Incomplete(Throwable()) fakeApiClient.queueResponse(response) - val event = EventMessage( - event = Event( - eventId = "event-id", - messageId = "message-id", - type = EventType.ERROR_LOG - ) - ) assertEquals(0, fakePendingApiCallsSender.retryQueue.size) assertFalse(fakePendingApiCallsSender.didScheduleApiCall) - apiService.sendLog(event) + apiService.sendLogEnvelope(logPayload) verifyOnlyRequest( - expectedUrl = "https://a-$fakeAppId.data.emb-api.com/v1/log/logging", - expectedLogId = "el:message-id", - expectedPayload = getExpectedPayloadSerialized(event) + expectedUrl = "https://a-$fakeAppId.data.emb-api.com/v2/logs", + expectedPayload = getExpectedPayloadSerialized(logPayload, logType) ) assertEquals(1, fakePendingApiCallsSender.retryQueue.size) assertTrue(fakePendingApiCallsSender.didScheduleApiCall) @@ -403,22 +339,14 @@ internal class EmbraceApiServiceTest { ) fakeApiClient.queueResponse(response) - val event = EventMessage( - event = Event( - eventId = "event-id", - messageId = "message-id", - type = EventType.ERROR_LOG - ) - ) assertEquals(0, fakePendingApiCallsSender.retryQueue.size) assertFalse(fakePendingApiCallsSender.didScheduleApiCall) - apiService.sendLog(event) + apiService.sendLogEnvelope(logPayload) verifyOnlyRequest( - expectedUrl = "https://a-$fakeAppId.data.emb-api.com/v1/log/logging", - expectedLogId = "el:message-id", - expectedPayload = getExpectedPayloadSerialized(event) + expectedUrl = "https://a-$fakeAppId.data.emb-api.com/v2/logs", + expectedPayload = getExpectedPayloadSerialized(logPayload, logType) ) assertEquals(0, fakePendingApiCallsSender.retryQueue.size) assertFalse(fakePendingApiCallsSender.didScheduleApiCall) @@ -429,22 +357,14 @@ internal class EmbraceApiServiceTest { val response = ApiResponse.PayloadTooLarge fakeApiClient.queueResponse(response) - val event = EventMessage( - event = Event( - eventId = "event-id", - messageId = "message-id", - type = EventType.ERROR_LOG - ) - ) assertEquals(0, fakePendingApiCallsSender.retryQueue.size) assertFalse(fakePendingApiCallsSender.didScheduleApiCall) - apiService.sendLog(event) + apiService.sendLogEnvelope(logPayload) verifyOnlyRequest( - expectedUrl = "https://a-$fakeAppId.data.emb-api.com/v1/log/logging", - expectedLogId = "el:message-id", - expectedPayload = getExpectedPayloadSerialized(event) + expectedUrl = "https://a-$fakeAppId.data.emb-api.com/v2/logs", + expectedPayload = getExpectedPayloadSerialized(logPayload, logType) ) assertEquals(0, fakePendingApiCallsSender.retryQueue.size) assertFalse(fakePendingApiCallsSender.didScheduleApiCall) @@ -458,22 +378,14 @@ internal class EmbraceApiServiceTest { ) fakeApiClient.queueResponse(response) - val event = EventMessage( - event = Event( - eventId = "event-id", - messageId = "message-id", - type = EventType.ERROR_LOG - ) - ) assertEquals(0, fakePendingApiCallsSender.retryQueue.size) assertFalse(fakePendingApiCallsSender.didScheduleApiCall) - apiService.sendLog(event) + apiService.sendLogEnvelope(logPayload) verifyOnlyRequest( - expectedUrl = "https://a-$fakeAppId.data.emb-api.com/v1/log/logging", - expectedLogId = "el:message-id", - expectedPayload = getExpectedPayloadSerialized(event) + expectedUrl = "https://a-$fakeAppId.data.emb-api.com/v2/logs", + expectedPayload = getExpectedPayloadSerialized(logPayload, logType) ) assertEquals(0, fakePendingApiCallsSender.retryQueue.size) assertFalse(fakePendingApiCallsSender.didScheduleApiCall) @@ -482,7 +394,7 @@ internal class EmbraceApiServiceTest { @Test fun `test that requests to rate limited endpoint, do not execute the request and save a pending api call`() { val callback = mockk<() -> Unit>(relaxed = true) - val endpoint = Endpoint.LOGGING + val endpoint = Endpoint.LOGS with(endpoint.limiter) { updateRateLimitStatus() scheduleRetry( @@ -492,15 +404,7 @@ internal class EmbraceApiServiceTest { ) } - val event = EventMessage( - event = Event( - eventId = "event-id", - messageId = "message-id", - type = EventType.ERROR_LOG - ) - ) - - apiService.sendLog(event) + apiService.sendLogEnvelope(logPayload) assertEquals(0, fakeApiClient.sentRequests.size) assertEquals(1, fakePendingApiCallsSender.retryQueue.size) @@ -512,15 +416,7 @@ internal class EmbraceApiServiceTest { @Test fun `test that requests with no connection, do not execute the request and save a pending api call`() { apiService.onNetworkConnectivityStatusChanged(NetworkStatus.NOT_REACHABLE) - val event = EventMessage( - event = Event( - eventId = "event-id", - messageId = "message-id", - type = EventType.ERROR_LOG - ) - ) - - apiService.sendLog(event) + apiService.sendLogEnvelope(logPayload) assertEquals(0, fakeApiClient.sentRequests.size) assertEquals(1, fakePendingApiCallsSender.retryQueue.size) @@ -529,10 +425,10 @@ internal class EmbraceApiServiceTest { assertFalse(fakePendingApiCallsSender.didScheduleApiCall) } - private inline fun getExpectedPayloadSerialized(payload: T): ByteArray { + private inline fun getExpectedPayloadSerialized(payload: T, type: Type): ByteArray { val os = ByteArrayOutputStream() ConditionalGzipOutputStream(os).use { - serializer.toJson(payload, T::class.java, it) + serializer.toJson(payload, type, it) } return os.toByteArray() } diff --git a/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/comms/api/EmbraceUrlTest.kt b/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/comms/api/EmbraceUrlTest.kt index 071ab9164d..c0d8c251cb 100644 --- a/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/comms/api/EmbraceUrlTest.kt +++ b/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/comms/api/EmbraceUrlTest.kt @@ -10,16 +10,12 @@ internal class EmbraceUrlTest { fun `test endpoint()`() { val embraceUrlSessions = EmbraceUrl.create("https://embrace.io/sessions") val embraceUrlEvents = EmbraceUrl.create("https://embrace.io/events") - val embraceUrlLogging = EmbraceUrl.create("https://embrace.io/logging") val embraceUrlLogs = EmbraceUrl.create("https://embrace.io/logs") - val embraceUrlNetwork = EmbraceUrl.create("https://embrace.io/network") val embraceUrlOther = EmbraceUrl.create("https://embrace.io/other") assertEquals(Endpoint.SESSIONS, embraceUrlSessions.endpoint()) assertEquals(Endpoint.EVENTS, embraceUrlEvents.endpoint()) - assertEquals(Endpoint.LOGGING, embraceUrlLogging.endpoint()) assertEquals(Endpoint.LOGS, embraceUrlLogs.endpoint()) - assertEquals(Endpoint.NETWORK, embraceUrlNetwork.endpoint()) assertEquals(Endpoint.UNKNOWN, embraceUrlOther.endpoint()) } diff --git a/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/comms/delivery/EmbracePendingApiCallsSenderTest.kt b/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/comms/delivery/EmbracePendingApiCallsSenderTest.kt index 3405826312..38b15e5baa 100644 --- a/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/comms/delivery/EmbracePendingApiCallsSenderTest.kt +++ b/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/comms/delivery/EmbracePendingApiCallsSenderTest.kt @@ -260,12 +260,11 @@ internal class EmbracePendingApiCallsSenderTest { "appId" ) repeat(105) { k -> - val request = mapper.logRequest( + val request = mapper.eventMessageRequest( EventMessage( Event( type = EventType.INFO_LOG, - eventId = "eventId", - messageId = "message_id_$k" + eventId = "message_id_$k" ) ) ) @@ -278,8 +277,8 @@ internal class EmbracePendingApiCallsSenderTest { } // verify logs were added to the queue, and oldest added requests are dropped - assertEquals("il:message_id_5", queue.pollNextPendingApiCall()?.apiRequest?.logId) - assertEquals("il:message_id_6", queue.pollNextPendingApiCall()?.apiRequest?.logId) + assertEquals("il:message_id_5", queue.pollNextPendingApiCall()?.apiRequest?.eventId) + assertEquals("il:message_id_6", queue.pollNextPendingApiCall()?.apiRequest?.eventId) // now add some sessions for retry and verify they are returned first val sessionRequest = mapper.sessionRequest().copy(logId = "is:session_id_0") diff --git a/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/comms/delivery/PendingApiCallsTest.kt b/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/comms/delivery/PendingApiCallsTest.kt index d438d3059f..2b8a4fb685 100644 --- a/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/comms/delivery/PendingApiCallsTest.kt +++ b/embrace-android-core/src/test/java/io/embrace/android/embracesdk/internal/comms/delivery/PendingApiCallsTest.kt @@ -187,9 +187,7 @@ internal class PendingApiCallsTest { private fun Endpoint.getMaxPendingApiCalls(): Int { return when (this) { Endpoint.EVENTS -> 100 - Endpoint.LOGGING -> 100 Endpoint.LOGS -> 10 - Endpoint.NETWORK -> 50 Endpoint.SESSIONS -> 100 Endpoint.UNKNOWN -> 50 Endpoint.SESSIONS_V2 -> 100 diff --git a/embrace-android-payload/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/api/Endpoint.kt b/embrace-android-payload/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/api/Endpoint.kt index c1a6dafc75..6fea63ad5a 100644 --- a/embrace-android-payload/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/api/Endpoint.kt +++ b/embrace-android-payload/src/main/kotlin/io/embrace/android/embracesdk/internal/comms/api/Endpoint.kt @@ -5,9 +5,7 @@ public enum class Endpoint( public val version: String ) { EVENTS("events", "v1"), - LOGGING("logging", "v1"), LOGS("logs", "v2"), - NETWORK("network", "v1"), SESSIONS("sessions", "v1"), SESSIONS_V2("spans", "v2"), UNKNOWN("unknown", "v1") diff --git a/embrace-android-sdk/src/integrationTest/kotlin/io/embrace/android/embracesdk/IntegrationTestRuleExtensions.kt b/embrace-android-sdk/src/integrationTest/kotlin/io/embrace/android/embracesdk/IntegrationTestRuleExtensions.kt index c54b8cc736..d9a93d3a2a 100644 --- a/embrace-android-sdk/src/integrationTest/kotlin/io/embrace/android/embracesdk/IntegrationTestRuleExtensions.kt +++ b/embrace-android-sdk/src/integrationTest/kotlin/io/embrace/android/embracesdk/IntegrationTestRuleExtensions.kt @@ -18,22 +18,6 @@ import java.util.concurrent.TimeoutException /*** Extension functions that are syntactic sugar for retrieving information from the SDK. ***/ -/** - * Returns a list of [EventMessage] logs that were sent by the SDK since startup. If [expectedSize] is specified, it will wait up to - * 1 second to validate the number of sent log message equal that size. If a second passes that the size requirement is not met, a - * [TimeoutException] will be thrown. If [expectedSize] is null or not specified, the correct sent log messages will be returned right - * away. - */ -internal fun IntegrationTestRule.Harness.getSentLogMessages(expectedSize: Int? = null): List { - val logs = overriddenDeliveryModule.deliveryService.lastSentLogs - return when (expectedSize) { - null -> logs - else -> returnIfConditionMet({ logs }) { - logs.size == expectedSize - } - } -} - /** * Wait for there to at least be [minSize] number of log envelopes to be sent and return all the ones sent. Times out at 1 second. */ @@ -84,15 +68,6 @@ internal fun IntegrationTestRule.Harness.getLastSentLog(expectedSize: Int? = nul return getSentLogs(expectedSize)?.last() } -/** - * Returns the last [EventMessage] log that was sent by the SDK. If [expectedSize] is specified, it will wait up to 1 second to validate - * the number of sent log message equal that size. If a second passes that the size requirement is not met, a [TimeoutException] will - * be thrown. If [expectedSize] is null or not specified, the correct sent log messages will be returned right away. - */ -internal fun IntegrationTestRule.Harness.getLastSentLogMessage(expectedSize: Int? = null): EventMessage { - return getSentLogMessages(expectedSize).last() -} - /** * Returns a list of session that were sent by the SDK since startup. */ diff --git a/embrace-test-fakes/src/main/kotlin/io/embrace/android/embracesdk/fakes/FakeApiService.kt b/embrace-test-fakes/src/main/kotlin/io/embrace/android/embracesdk/fakes/FakeApiService.kt index 927b37e664..9c5cd9968d 100644 --- a/embrace-test-fakes/src/main/kotlin/io/embrace/android/embracesdk/fakes/FakeApiService.kt +++ b/embrace-test-fakes/src/main/kotlin/io/embrace/android/embracesdk/fakes/FakeApiService.kt @@ -8,7 +8,6 @@ import io.embrace.android.embracesdk.internal.injection.SerializationAction import io.embrace.android.embracesdk.internal.payload.Envelope import io.embrace.android.embracesdk.internal.payload.EventMessage import io.embrace.android.embracesdk.internal.payload.LogPayload -import io.embrace.android.embracesdk.internal.payload.NetworkEvent import io.embrace.android.embracesdk.internal.payload.SessionPayload import io.embrace.android.embracesdk.internal.serialization.EmbraceSerializer import java.io.ByteArrayOutputStream @@ -23,10 +22,8 @@ public class FakeApiService : ApiService { public var throwExceptionSendSession: Boolean = false private val serializer = EmbraceSerializer() - public val logRequests: MutableList = mutableListOf() public val sentLogPayloads: MutableList = mutableListOf() public val savedLogPayloads: MutableList = mutableListOf() - public val networkCallRequests: MutableList = mutableListOf() public val eventRequests: MutableList = mutableListOf() public val crashRequests: MutableList = mutableListOf() public val sessionRequests: MutableList> = mutableListOf() @@ -40,10 +37,6 @@ public class FakeApiService : ApiService { TODO("Not yet implemented") } - override fun sendLog(eventMessage: EventMessage) { - logRequests.add(eventMessage) - } - override fun sendLogEnvelope(logEnvelope: Envelope) { sentLogPayloads.add(logEnvelope.data) } @@ -52,10 +45,6 @@ public class FakeApiService : ApiService { savedLogPayloads.add(logEnvelope.data) } - override fun sendNetworkCall(networkEvent: NetworkEvent) { - networkCallRequests.add(networkEvent) - } - override fun sendEvent(eventMessage: EventMessage) { eventRequests.add(eventMessage) } diff --git a/embrace-test-fakes/src/main/kotlin/io/embrace/android/embracesdk/fakes/FakeDeliveryService.kt b/embrace-test-fakes/src/main/kotlin/io/embrace/android/embracesdk/fakes/FakeDeliveryService.kt index a18055fc71..eb0dc295d8 100644 --- a/embrace-test-fakes/src/main/kotlin/io/embrace/android/embracesdk/fakes/FakeDeliveryService.kt +++ b/embrace-test-fakes/src/main/kotlin/io/embrace/android/embracesdk/fakes/FakeDeliveryService.kt @@ -8,7 +8,6 @@ import io.embrace.android.embracesdk.internal.payload.ApplicationState import io.embrace.android.embracesdk.internal.payload.Envelope import io.embrace.android.embracesdk.internal.payload.EventMessage import io.embrace.android.embracesdk.internal.payload.LogPayload -import io.embrace.android.embracesdk.internal.payload.NetworkEvent import io.embrace.android.embracesdk.internal.payload.SessionPayload import io.embrace.android.embracesdk.internal.session.id.SessionIdTracker import io.embrace.android.embracesdk.internal.session.orchestrator.SessionSnapshotType @@ -21,9 +20,7 @@ import java.util.Locale * invocations. Please add additional tracking functionality as tests require them. */ public open class FakeDeliveryService : DeliveryService { - public var lastSentNetworkCall: NetworkEvent? = null public var lastSentCrash: EventMessage? = null - public val lastSentLogs: MutableList = mutableListOf() public val lastSentLogPayloads: MutableList> = mutableListOf() public val lastSavedLogPayloads: MutableList> = mutableListOf() public val sentMoments: MutableList = mutableListOf() @@ -54,10 +51,6 @@ public open class FakeDeliveryService : DeliveryService { sentMoments.add(eventMessage) } - override fun sendLog(eventMessage: EventMessage) { - lastSentLogs.add(eventMessage) - } - override fun sendLogs(logEnvelope: Envelope) { lastSentLogPayloads.add(logEnvelope) } @@ -66,10 +59,6 @@ public open class FakeDeliveryService : DeliveryService { lastSavedLogPayloads.add(logEnvelope) } - override fun sendNetworkCall(networkEvent: NetworkEvent) { - lastSentNetworkCall = networkEvent - } - override fun sendCrash(crash: EventMessage, processTerminating: Boolean) { lastSavedCrash = crash lastSentCrash = crash