Skip to content

Commit 28ea4a0

Browse files
Merge pull request #2916 from embrace-io/internal-interface-reduce
Reduce internal interface functions
2 parents 3710c12 + 3b33128 commit 28ea4a0

File tree

15 files changed

+45
-134
lines changed

15 files changed

+45
-134
lines changed

embrace-android-instrumentation-huc/src/test/kotlin/io/embrace/android/embracesdk/instrumentation/huc/EmbraceUrlConnectionDelegateTest.kt

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package io.embrace.android.embracesdk.instrumentation.huc
22

3-
import io.embrace.android.embracesdk.fakes.FakeEmbraceInternalInterface
43
import io.embrace.android.embracesdk.instrumentation.huc.EmbraceUrlConnectionDelegate.CONTENT_ENCODING
54
import io.embrace.android.embracesdk.instrumentation.huc.EmbraceUrlConnectionDelegate.CONTENT_LENGTH
65
import io.embrace.android.embracesdk.internal.config.behavior.NetworkSpanForwardingBehaviorImpl.Companion.TRACEPARENT_HEADER_NAME
@@ -33,7 +32,6 @@ internal class EmbraceUrlConnectionDelegateTest {
3332
fun setup() {
3433
internalApi = FakeInternalNetworkApi(
3534
time = REQUEST_TIME,
36-
internalInterface = FakeEmbraceInternalInterface(captureNetworkBody = true)
3735
)
3836
}
3937

@@ -253,7 +251,7 @@ internal class EmbraceUrlConnectionDelegateTest {
253251
connection = createMockUncompressedConnection(),
254252
wrappedIoStream = true
255253
)
256-
assertEquals(1, internalApi.internalInterface.networkRequests.size)
254+
assertEquals(1, internalApi.networkRequests.size)
257255
}
258256

259257
@Test
@@ -262,7 +260,7 @@ internal class EmbraceUrlConnectionDelegateTest {
262260
connection = createMockUncompressedConnection(),
263261
wrappedIoStream = false
264262
)
265-
assertEquals(1, internalApi.internalInterface.networkRequests.size)
263+
assertEquals(1, internalApi.networkRequests.size)
266264
}
267265

268266
@Test
@@ -272,15 +270,15 @@ internal class EmbraceUrlConnectionDelegateTest {
272270
wrappedIoStream = true,
273271
exceptionOnInputStream = true
274272
)
275-
assertEquals(1, internalApi.internalInterface.networkRequests.size)
273+
assertEquals(1, internalApi.networkRequests.size)
276274
}
277275

278276
@Test
279277
fun `disconnect called with previously not connected connection results in error request capture and no response access`() {
280278
val mockConnection = createMockUncompressedConnection()
281279
EmbraceUrlConnectionDelegate(mockConnection, true, internalApi).disconnect()
282280
verifyIncompleteRequestLogged(mockConnection)
283-
assertEquals(1, internalApi.internalInterface.networkRequests.size)
281+
assertEquals(1, internalApi.networkRequests.size)
284282
}
285283

286284
@Test
@@ -294,7 +292,7 @@ internal class EmbraceUrlConnectionDelegateTest {
294292
errorType = TIMEOUT_ERROR,
295293
noResponseAccess = false
296294
)
297-
assertEquals(1, internalApi.internalInterface.networkRequests.size)
295+
assertEquals(1, internalApi.networkRequests.size)
298296
}
299297

300298
@Test
@@ -308,7 +306,7 @@ internal class EmbraceUrlConnectionDelegateTest {
308306
errorType = TIMEOUT_ERROR,
309307
noResponseAccess = false
310308
)
311-
assertEquals(1, internalApi.internalInterface.networkRequests.size)
309+
assertEquals(1, internalApi.networkRequests.size)
312310
}
313311

314312
@Test
@@ -322,7 +320,7 @@ internal class EmbraceUrlConnectionDelegateTest {
322320
errorType = TIMEOUT_ERROR,
323321
noResponseAccess = false
324322
)
325-
assertEquals(1, internalApi.internalInterface.networkRequests.size)
323+
assertEquals(1, internalApi.networkRequests.size)
326324
}
327325

328326
@Test
@@ -364,7 +362,7 @@ internal class EmbraceUrlConnectionDelegateTest {
364362

365363
@Test
366364
fun `check traceparents are forwarded if feature flag is on`() {
367-
internalApi.internalInterface.networkSpanForwardingEnabled = true
365+
internalApi.networkSpanForwardingEnabled = true
368366
executeRequest(
369367
connection = createMockConnectionWithTraceparent(),
370368
wrappedIoStream = true
@@ -376,7 +374,7 @@ internal class EmbraceUrlConnectionDelegateTest {
376374

377375
@Test
378376
fun `check traceparents are forwarded on errors if feature flag is on`() {
379-
internalApi.internalInterface.networkSpanForwardingEnabled = true
377+
internalApi.networkSpanForwardingEnabled = true
380378
executeRequest(
381379
connection = createMockConnectionWithTraceparent(),
382380
wrappedIoStream = true,
@@ -580,7 +578,7 @@ internal class EmbraceUrlConnectionDelegateTest {
580578
assertEquals(errorType, request.errorType)
581579
}
582580

583-
private fun retrieveNetworkRequest() = internalApi.internalInterface.networkRequests.single()
581+
private fun retrieveNetworkRequest() = internalApi.networkRequests.single()
584582

585583
companion object {
586584
private fun String.toGzipByteArray(): ByteArray {

embrace-android-instrumentation-huc/src/test/kotlin/io/embrace/android/embracesdk/instrumentation/huc/EmbraceUrlStreamHandlerTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ internal class EmbraceUrlStreamHandlerTest {
5757

5858
@Test
5959
fun `check traceparent is injected into http request if feature flag is on`() {
60-
internalApi.internalInterface.networkSpanForwardingEnabled = true
60+
internalApi.networkSpanForwardingEnabled = true
6161
val url = URL(
6262
"http",
6363
"embrace.io",
@@ -74,7 +74,7 @@ internal class EmbraceUrlStreamHandlerTest {
7474

7575
@Test
7676
fun `check traceparent is injected into https request if feature flag is on`() {
77-
internalApi.internalInterface.networkSpanForwardingEnabled = true
77+
internalApi.networkSpanForwardingEnabled = true
7878
val url = URL(
7979
"https",
8080
"embrace.io",
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
package io.embrace.android.embracesdk.instrumentation.huc
22

3-
import io.embrace.android.embracesdk.fakes.FakeEmbraceInternalInterface
43
import io.embrace.android.embracesdk.network.EmbraceNetworkRequest
54

65
internal class FakeInternalNetworkApi(
7-
var internalInterface: FakeEmbraceInternalInterface = FakeEmbraceInternalInterface(),
86
var time: Long = 0,
9-
var started: Boolean = true,
7+
var captureNetworkBody: Boolean = true,
8+
var networkSpanForwardingEnabled: Boolean = false,
109
) : InternalNetworkApi {
10+
11+
val networkRequests: MutableList<EmbraceNetworkRequest> = mutableListOf()
12+
1113
override fun getSdkCurrentTimeMs(): Long = time
12-
override fun isNetworkSpanForwardingEnabled(): Boolean = internalInterface.isNetworkSpanForwardingEnabled()
13-
override fun recordNetworkRequest(
14-
embraceNetworkRequest: EmbraceNetworkRequest,
15-
) = internalInterface.recordNetworkRequest(
16-
embraceNetworkRequest
17-
)
14+
override fun isNetworkSpanForwardingEnabled(): Boolean = networkSpanForwardingEnabled
15+
override fun recordNetworkRequest(embraceNetworkRequest: EmbraceNetworkRequest) {
16+
networkRequests.add(embraceNetworkRequest)
17+
}
1818

1919
override fun shouldCaptureNetworkBody(
2020
url: String,
2121
method: String,
22-
): Boolean = internalInterface.shouldCaptureNetworkBody(url, method)
22+
): Boolean = captureNetworkBody
2323

24-
override fun logInternalError(error: Throwable) = internalInterface.logInternalError(error)
24+
override fun logInternalError(error: Throwable) {}
2525
}

embrace-android-sdk/src/integrationTest/kotlin/io/embrace/android/embracesdk/testcases/EmbraceInternalInterfaceTest.kt

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import io.embrace.android.embracesdk.internal.config.remote.NetworkCaptureRuleRe
66
import io.embrace.android.embracesdk.internal.config.remote.RemoteConfig
77
import io.embrace.android.embracesdk.testframework.SdkIntegrationTestRule
88
import org.junit.Assert.assertFalse
9-
import org.junit.Assert.assertTrue
109
import org.junit.Rule
1110
import org.junit.Test
1211
import org.junit.runner.RunWith
@@ -28,7 +27,6 @@ internal class EmbraceInternalInterfaceTest {
2827
testCaseAction = {
2928
assertFalse(embrace.isStarted)
3029
with(EmbraceInternalApi.internalInterface) {
31-
assertFalse(shouldCaptureNetworkBody("", ""))
3230
assertFalse(isNetworkSpanForwardingEnabled())
3331
}
3432
assertFalse(embrace.isStarted)
@@ -53,19 +51,6 @@ internal class EmbraceInternalInterfaceTest {
5351
),
5452
testCaseAction = {
5553
recordSession {
56-
assertTrue(
57-
EmbraceInternalApi.internalInterface.shouldCaptureNetworkBody(
58-
"capture.me",
59-
"GET"
60-
)
61-
)
62-
assertFalse(
63-
EmbraceInternalApi.internalInterface.shouldCaptureNetworkBody(
64-
"capture.me",
65-
"POST"
66-
)
67-
)
68-
assertFalse(EmbraceInternalApi.internalInterface.shouldCaptureNetworkBody(URL, "GET"))
6954
assertFalse(EmbraceInternalApi.internalInterface.isNetworkSpanForwardingEnabled())
7055
}
7156
}
@@ -82,8 +67,4 @@ internal class EmbraceInternalInterfaceTest {
8267
}
8368
)
8469
}
85-
86-
companion object {
87-
private const val URL = "https://embrace.io"
88-
}
8970
}

embrace-android-sdk/src/integrationTest/kotlin/io/embrace/android/embracesdk/testcases/features/InternalErrorLogTest.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package io.embrace.android.embracesdk.testcases.features
22

33
import androidx.test.ext.junit.runners.AndroidJUnit4
4-
import io.embrace.android.embracesdk.EmbraceImpl
54
import io.embrace.android.embracesdk.assertions.getLogWithAttributeValue
5+
import io.embrace.android.embracesdk.internal.logging.EmbLogger
6+
import io.embrace.android.embracesdk.internal.logging.InternalErrorType
67
import io.embrace.android.embracesdk.internal.otel.sdk.findAttributeValue
78
import io.embrace.android.embracesdk.testframework.SdkIntegrationTestRule
89
import org.junit.Assert.assertEquals
@@ -20,14 +21,16 @@ internal class InternalErrorLogTest {
2021

2122
@Test
2223
fun `internal error log delivered`() {
24+
lateinit var logger: EmbLogger
25+
2326
testRule.runTest(
2427
setupAction = {
2528
getEmbLogger().throwOnInternalError = false
26-
29+
logger = getEmbLogger()
2730
},
2831
testCaseAction = {
2932
recordSession {
30-
(embrace as EmbraceImpl).internalInterface.logInternalError(RuntimeException("Some error message"))
33+
logger.trackInternalError(InternalErrorType.INTERNAL_INTERFACE_FAIL, RuntimeException("Some error message"))
3134
}
3235
},
3336
assertAction = {

embrace-android-sdk/src/integrationTest/kotlin/io/embrace/android/embracesdk/testcases/features/PayloadTypesHeaderTest.kt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import io.embrace.android.embracesdk.fakes.config.FakeInstrumentedConfig
66
import io.embrace.android.embracesdk.fakes.config.FakeProjectConfig
77
import io.embrace.android.embracesdk.internal.EmbraceInternalApi
88
import io.embrace.android.embracesdk.internal.arch.schema.EmbType
9+
import io.embrace.android.embracesdk.internal.logging.EmbLogger
10+
import io.embrace.android.embracesdk.internal.logging.InternalErrorType
911
import io.embrace.android.embracesdk.testframework.SdkIntegrationTestRule
1012
import org.junit.Assert.assertEquals
1113
import org.junit.Rule
@@ -47,13 +49,16 @@ internal class PayloadTypesHeaderTest {
4749

4850
@Test
4951
fun `batched logs of different types send a list of header types`() {
52+
lateinit var logger: EmbLogger
53+
5054
testRule.runTest(
5155
setupAction = {
5256
getEmbLogger().throwOnInternalError = false
57+
logger = getEmbLogger()
5358
},
5459
testCaseAction = {
5560
embrace.logInfo("some message")
56-
(embrace as EmbraceImpl).internalInterface.logInternalError(RuntimeException("some internal error"))
61+
logger.trackInternalError(InternalErrorType.INTERNAL_INTERFACE_FAIL, RuntimeException("some internal error"))
5762
embrace.logWarning("uh oh!")
5863
clock.tick(2000L)
5964
},
@@ -78,14 +83,17 @@ internal class PayloadTypesHeaderTest {
7883
appFramework = "flutter"
7984
)
8085
)
86+
lateinit var logger: EmbLogger
87+
8188
testRule.runTest(
8289
instrumentedConfig = instrumentedConfig,
8390
setupAction = {
8491
getEmbLogger().throwOnInternalError = false
92+
logger = getEmbLogger()
8593
},
8694
testCaseAction = {
8795
embrace.logInfo("log message")
88-
(embrace as EmbraceImpl).internalInterface.logInternalError(RuntimeException("internal error"))
96+
logger.trackInternalError(InternalErrorType.INTERNAL_INTERFACE_FAIL, RuntimeException("some internal error"))
8997
EmbraceInternalApi.flutterInternalInterface.logUnhandledDartException(
9098
"Flutter stacktrace",
9199
"FlutterException",
@@ -122,14 +130,17 @@ internal class PayloadTypesHeaderTest {
122130
appFramework = "unity"
123131
)
124132
)
133+
lateinit var logger: EmbLogger
134+
125135
testRule.runTest(
126136
instrumentedConfig = instrumentedConfig,
127137
setupAction = {
128138
getEmbLogger().throwOnInternalError = false
139+
logger = getEmbLogger()
129140
},
130141
testCaseAction = {
131142
embrace.logInfo("log message")
132-
(embrace as EmbraceImpl).internalInterface.logInternalError(RuntimeException("internal error"))
143+
logger.trackInternalError(InternalErrorType.INTERNAL_INTERFACE_FAIL, RuntimeException("some internal error"))
133144
EmbraceInternalApi.unityInternalInterface.logUnhandledUnityException(
134145
"UnityException",
135146
"Unity error occurred",

embrace-android-sdk/src/integrationTest/kotlin/io/embrace/android/embracesdk/testframework/actions/EmbraceSetupInterface.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import io.embrace.android.embracesdk.concurrency.BlockingScheduledExecutorServic
77
import io.embrace.android.embracesdk.fakes.FakeClock
88
import io.embrace.android.embracesdk.fakes.FakeEmbLogger
99
import io.embrace.android.embracesdk.fakes.FakeJniDelegate
10-
import io.embrace.android.embracesdk.fakes.FakeKeyValueStore
1110
import io.embrace.android.embracesdk.fakes.FakeNetworkConnectivityService
1211
import io.embrace.android.embracesdk.fakes.FakePayloadStorageService
1312
import io.embrace.android.embracesdk.fakes.FakeSharedObjectLoader
@@ -201,8 +200,6 @@ internal class EmbraceSetupInterface(
201200

202201
fun getFakedWorkerExecutor(): BlockingScheduledExecutorService = (workerThreadModule as FakeWorkerThreadModule).executor
203202

204-
fun getPreferencesService(): PreferencesService = coreModule.preferencesService
205-
206203
fun getStore(): KeyValueStore = coreModule.store
207204

208205
private companion object {

embrace-android-sdk/src/main/kotlin/io/embrace/android/embracesdk/EmbraceImpl.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,6 @@ internal class EmbraceImpl(
113113
bootstrapper.initModule,
114114
bootstrapper.configModule,
115115
bootstrapper.payloadSourceModule,
116-
bootstrapper.instrumentationModule,
117116
this,
118117
bootstrapper
119118
)
Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,12 @@
11
package io.embrace.android.embracesdk.internal.api.delegate
22

3-
import io.embrace.android.embracesdk.EmbraceImpl
43
import io.embrace.android.embracesdk.internal.EmbraceInternalInterface
54
import io.embrace.android.embracesdk.internal.config.ConfigService
6-
import io.embrace.android.embracesdk.internal.injection.InitModule
7-
import io.embrace.android.embracesdk.internal.instrumentation.network.NetworkCaptureDataSource
8-
import io.embrace.android.embracesdk.internal.logging.InternalErrorType
9-
import io.embrace.android.embracesdk.network.EmbraceNetworkRequest
105

116
internal class EmbraceInternalInterfaceImpl(
12-
private val embraceImpl: EmbraceImpl,
13-
private val initModule: InitModule,
14-
private val networkCaptureDataSourceProvider: () -> NetworkCaptureDataSource?,
157
private val configService: ConfigService,
168
) : EmbraceInternalInterface {
179

1810
override fun isNetworkSpanForwardingEnabled(): Boolean =
1911
configService.networkSpanForwardingBehavior.isNetworkSpanForwardingEnabled()
20-
21-
override fun shouldCaptureNetworkBody(url: String, method: String): Boolean {
22-
return networkCaptureDataSourceProvider()?.shouldCaptureNetworkBody(url, method) == true
23-
}
24-
25-
override fun recordNetworkRequest(networkRequest: EmbraceNetworkRequest) {
26-
embraceImpl.recordNetworkRequest(networkRequest)
27-
}
28-
29-
override fun logInternalError(error: Throwable) {
30-
initModule.logger.trackInternalError(InternalErrorType.INTERNAL_INTERFACE_FAIL, error)
31-
}
3212
}

embrace-android-sdk/src/main/kotlin/io/embrace/android/embracesdk/internal/injection/InternalInterfaceModuleImpl.kt

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,17 @@ import io.embrace.android.embracesdk.internal.api.delegate.EmbraceInternalInterf
99
import io.embrace.android.embracesdk.internal.api.delegate.FlutterInternalInterfaceImpl
1010
import io.embrace.android.embracesdk.internal.api.delegate.ReactNativeInternalInterfaceImpl
1111
import io.embrace.android.embracesdk.internal.api.delegate.UnityInternalInterfaceImpl
12-
import io.embrace.android.embracesdk.internal.instrumentation.network.NetworkCaptureDataSource
1312

1413
internal class InternalInterfaceModuleImpl(
1514
initModule: InitModule,
1615
configModule: ConfigModule,
1716
payloadSourceModule: PayloadSourceModule,
18-
instrumentationModule: InstrumentationModule,
1917
embrace: EmbraceImpl,
2018
bootstrapper: ModuleInitBootstrapper,
2119
) : InternalInterfaceModule {
2220

2321
override val embraceInternalInterface: EmbraceInternalInterface by singleton {
24-
EmbraceInternalInterfaceImpl(
25-
embrace,
26-
initModule,
27-
{ instrumentationModule.instrumentationRegistry.findByType(NetworkCaptureDataSource::class) },
28-
configModule.configService,
29-
)
22+
EmbraceInternalInterfaceImpl(configModule.configService)
3023
}
3124

3225
override val reactNativeInternalInterface: ReactNativeInternalInterface by singleton {

0 commit comments

Comments
 (0)