Skip to content

Commit 211e111

Browse files
committed
iterate
1 parent 0e8acfb commit 211e111

File tree

15 files changed

+218
-564
lines changed

15 files changed

+218
-564
lines changed

dd-sdk-android-core/src/main/kotlin/com/datadog/android/api/feature/FeatureSdkCore.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ package com.datadog.android.api.feature
88

99
import com.datadog.android.api.InternalLogger
1010
import com.datadog.android.api.SdkCore
11+
import okhttp3.Call
12+
import okhttp3.OkHttpClient
1113
import java.util.UUID
1214
import java.util.concurrent.ExecutorService
1315
import java.util.concurrent.ScheduledExecutorService
@@ -132,10 +134,10 @@ interface FeatureSdkCore : SdkCore {
132134
* }
133135
* ```
134136
*
135-
* @param block Configuration block to customize the [okhttp3.OkHttpClient.Builder]
136-
* @return A [okhttp3.Call.Factory] instance configured with shared resources
137+
* @param block Configuration block to customize the [OkHttpClient.Builder]
138+
* @return A [Call.Factory] instance configured with shared resources
137139
*/
138-
fun createOkHttpCallFactory(block: okhttp3.OkHttpClient.Builder.() -> Unit): okhttp3.Call.Factory
140+
fun createOkHttpCallFactory(block: OkHttpClient.Builder.() -> Unit): Call.Factory
139141

140142
/**
141143
* Allows the given feature to set the anonymous ID for the SDK.

dd-sdk-android-core/src/main/kotlin/com/datadog/android/core/internal/NoOpInternalSdkCore.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,11 @@ import com.datadog.android.privacy.TrackingConsent
2323
import com.google.gson.JsonObject
2424
import okhttp3.Call
2525
import okhttp3.OkHttpClient
26+
import okhttp3.Protocol
2627
import okhttp3.Request
2728
import okhttp3.Response
29+
import okio.Timeout
2830
import java.io.File
29-
import java.net.HttpURLConnection
3031
import java.util.UUID
3132
import java.util.concurrent.Callable
3233
import java.util.concurrent.Delayed
@@ -322,8 +323,7 @@ internal object NoOpInternalSdkCore : InternalSdkCore {
322323
// to be set, otherwise it throws IllegalStateException
323324
return Response.Builder()
324325
.request(originalRequest)
325-
.protocol(okhttp3.Protocol.HTTP_1_1)
326-
.code(HttpURLConnection.HTTP_OK)
326+
.protocol(Protocol.HTTP_1_1)
327327
.message("OK")
328328
.build()
329329
}
@@ -340,8 +340,8 @@ internal object NoOpInternalSdkCore : InternalSdkCore {
340340
return originalRequest
341341
}
342342

343-
override fun timeout(): okio.Timeout {
344-
return okio.Timeout.NONE
343+
override fun timeout(): Timeout {
344+
return Timeout.NONE
345345
}
346346
}
347347
}

dd-sdk-android-core/src/test/kotlin/com/datadog/android/core/DatadogCoreTest.kt

Lines changed: 72 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,10 @@ internal class DatadogCoreTest {
179179
}
180180

181181
@Test
182-
fun `M register feature W registerFeature()`(@Mock mockFeature: Feature, @StringForgery fakeFeatureName: String) {
182+
fun `M register feature W registerFeature()`(
183+
@Mock mockFeature: Feature,
184+
@StringForgery fakeFeatureName: String
185+
) {
183186
// Given
184187
whenever(mockFeature.name) doReturn fakeFeatureName
185188

@@ -192,7 +195,9 @@ internal class DatadogCoreTest {
192195
}
193196

194197
@Test
195-
fun `M handle NDK crash for RUM W registerFeature() {RUM feature}`(@Mock mockFeature: Feature) {
198+
fun `M handle NDK crash for RUM W registerFeature() {RUM feature}`(
199+
@Mock mockFeature: Feature
200+
) {
196201
// Given
197202
val mockNdkCrashHandler = mock<NdkCrashHandler>()
198203
testedCore.coreFeature.ndkCrashHandler = mockNdkCrashHandler
@@ -206,7 +211,9 @@ internal class DatadogCoreTest {
206211
}
207212

208213
@Test
209-
fun `M do nothing W registerFeature() {Logs feature}`(@Mock mockFeature: Feature) {
214+
fun `M do nothing W registerFeature() {Logs feature}`(
215+
@Mock mockFeature: Feature
216+
) {
210217
// Given
211218
val mockNdkCrashHandler = mock<NdkCrashHandler>()
212219
testedCore.coreFeature.ndkCrashHandler = mockNdkCrashHandler
@@ -241,7 +248,9 @@ internal class DatadogCoreTest {
241248
}
242249

243250
@Test
244-
fun `M update anonymousId W setAnonymousId()`(forge: Forge) {
251+
fun `M update anonymousId W setAnonymousId()`(
252+
forge: Forge
253+
) {
245254
// Given
246255
val uuid = forge.getForgery<UUID>()
247256
testedCore.coreFeature = mock()
@@ -725,7 +734,9 @@ internal class DatadogCoreTest {
725734
// endregion
726735

727736
@Test
728-
fun `M set event receiver W setEventReceiver()`(@StringForgery feature: String) {
737+
fun `M set event receiver W setEventReceiver()`(
738+
@StringForgery feature: String
739+
) {
729740
// Given
730741
val mockFeature = mock<SdkFeature>()
731742
val mockEventReceiverRef = mock<AtomicReference<FeatureEventReceiver>>()
@@ -785,7 +796,9 @@ internal class DatadogCoreTest {
785796
}
786797

787798
@Test
788-
fun `M remove receiver W removeEventReceiver()`(@StringForgery feature: String) {
799+
fun `M remove receiver W removeEventReceiver()`(
800+
@StringForgery feature: String
801+
) {
789802
// Given
790803
val mockFeature = mock<SdkFeature>()
791804
val mockEventReceiverRef = mock<AtomicReference<FeatureEventReceiver>>()
@@ -831,7 +844,9 @@ internal class DatadogCoreTest {
831844
}
832845

833846
@Test
834-
fun `M not throw W concurrent access to featureContextUpdateReceivers`(forge: Forge) {
847+
fun `M not throw W concurrent access to featureContextUpdateReceivers`(
848+
forge: Forge
849+
) {
835850
// Given
836851
val mockListeners = forge.aList(size = forge.anInt(min = 2, max = 10)) {
837852
mock<FeatureContextUpdateReceiver>()
@@ -1019,7 +1034,9 @@ internal class DatadogCoreTest {
10191034
}
10201035

10211036
@Test
1022-
fun `M provide service W service()`(@StringForgery fakeService: String) {
1037+
fun `M provide service W service()`(
1038+
@StringForgery fakeService: String
1039+
) {
10231040
// Given
10241041
testedCore.coreFeature = mock()
10251042
whenever(testedCore.coreFeature.serviceName) doReturn fakeService
@@ -1046,7 +1063,9 @@ internal class DatadogCoreTest {
10461063
}
10471064

10481065
@Test
1049-
fun `M provide network info W networkInfo()`(@Forgery fakeNetworkInfo: NetworkInfo) {
1066+
fun `M provide network info W networkInfo()`(
1067+
@Forgery fakeNetworkInfo: NetworkInfo
1068+
) {
10501069
// Given
10511070
testedCore.coreFeature = mock()
10521071
val mockNetworkInfoProvider = mock<NetworkInfoProvider>()
@@ -1061,7 +1080,9 @@ internal class DatadogCoreTest {
10611080
}
10621081

10631082
@Test
1064-
fun `M provide last view event W lastViewEvent()`(@Forgery fakeLastViewEvent: JsonObject) {
1083+
fun `M provide last view event W lastViewEvent()`(
1084+
@Forgery fakeLastViewEvent: JsonObject
1085+
) {
10651086
// Given
10661087
testedCore.coreFeature = mock()
10671088
whenever(testedCore.coreFeature.lastViewEvent) doReturn fakeLastViewEvent
@@ -1074,7 +1095,9 @@ internal class DatadogCoreTest {
10741095
}
10751096

10761097
@Test
1077-
fun `M provide last fatal ANR sent W lastFatalAnrSent()`(@LongForgery(min = 0L) fakeLastFatalAnrSent: Long) {
1098+
fun `M provide last fatal ANR sent W lastFatalAnrSent()`(
1099+
@LongForgery(min = 0L) fakeLastFatalAnrSent: Long
1100+
) {
10781101
// Given
10791102
testedCore.coreFeature = mock()
10801103
whenever(testedCore.coreFeature.lastFatalAnrSent) doReturn fakeLastFatalAnrSent
@@ -1087,7 +1110,9 @@ internal class DatadogCoreTest {
10871110
}
10881111

10891112
@Test
1090-
fun `M provide app start time W appStartTimeNs()`(@LongForgery(min = 0L) fakeAppStartTimeNs: Long) {
1113+
fun `M provide app start time W appStartTimeNs()`(
1114+
@LongForgery(min = 0L) fakeAppStartTimeNs: Long
1115+
) {
10911116
// Given
10921117
testedCore.coreFeature = mock()
10931118
whenever(testedCore.coreFeature.appStartTimeNs) doReturn fakeAppStartTimeNs
@@ -1100,7 +1125,9 @@ internal class DatadogCoreTest {
11001125
}
11011126

11021127
@Test
1103-
fun `M return tracking consent W trackingConsent()`(@Forgery fakeTrackingConsent: TrackingConsent) {
1128+
fun `M return tracking consent W trackingConsent()`(
1129+
@Forgery fakeTrackingConsent: TrackingConsent
1130+
) {
11041131
// Given
11051132
val mockFuture = mock<Future<TrackingConsent>>()
11061133
whenever(mockFuture.get()) doReturn fakeTrackingConsent
@@ -1116,7 +1143,9 @@ internal class DatadogCoreTest {
11161143
}
11171144

11181145
@Test
1119-
fun `M return default tracking consent W trackingConsent() { failed to get tracking consent }`(forge: Forge) {
1146+
fun `M return default tracking consent W trackingConsent() { failed to get tracking consent }`(
1147+
forge: Forge
1148+
) {
11201149
// Given
11211150
val mockFuture = mock<Future<TrackingConsent>>()
11221151
val fakeThrowable = forge.anElementFrom(
@@ -1143,7 +1172,9 @@ internal class DatadogCoreTest {
11431172
}
11441173

11451174
@Test
1146-
fun `M persist the event W writeLastViewEvent(){ NDK feature registered }`(@StringForgery viewEvent: String) {
1175+
fun `M persist the event W writeLastViewEvent(){ NDK feature registered }`(
1176+
@StringForgery viewEvent: String
1177+
) {
11471178
// Given
11481179
val fakeViewEvent = viewEvent.toByteArray()
11491180
testedCore.features += Feature.NDK_CRASH_REPORTS_FEATURE_NAME to mock()
@@ -1211,7 +1242,9 @@ internal class DatadogCoreTest {
12111242
}
12121243

12131244
@Test
1214-
fun `M write last fatal ANR sent W writeLastFatalAnrSent()`(@LongForgery(min = 0L) fakeLastFatalAnrSent: Long) {
1245+
fun `M write last fatal ANR sent W writeLastFatalAnrSent()`(
1246+
@LongForgery(min = 0L) fakeLastFatalAnrSent: Long
1247+
) {
12151248
// Given
12161249
val mockCoreFeature = mock<CoreFeature>()
12171250
testedCore.coreFeature = mockCoreFeature
@@ -1224,7 +1257,9 @@ internal class DatadogCoreTest {
12241257
}
12251258

12261259
@Test
1227-
fun `M clear data in all features W clearAllData()`(forge: Forge) {
1260+
fun `M clear data in all features W clearAllData()`(
1261+
forge: Forge
1262+
) {
12281263
// Given
12291264
// there are some non-mock features there after initialization
12301265
testedCore.features.clear()
@@ -1250,7 +1285,9 @@ internal class DatadogCoreTest {
12501285
}
12511286

12521287
@Test
1253-
fun `M flush data in all features W flushStoredData()`(forge: Forge) {
1288+
fun `M flush data in all features W flushStoredData()`(
1289+
forge: Forge
1290+
) {
12541291
// Given
12551292
// there are some non-mock features there after initialization
12561293
testedCore.features.clear()
@@ -1272,7 +1309,9 @@ internal class DatadogCoreTest {
12721309
}
12731310

12741311
@Test
1275-
fun `M stop all features W stop()`(@StringForgery fakeFeatureNames: Set<String>) {
1312+
fun `M stop all features W stop()`(
1313+
@StringForgery fakeFeatureNames: Set<String>
1314+
) {
12761315
// Given
12771316
val mockCoreFeature = mock<CoreFeature>()
12781317
whenever(mockCoreFeature.initialized).thenReturn(mock())
@@ -1423,49 +1462,27 @@ internal class DatadogCoreTest {
14231462
}
14241463

14251464
@Test
1426-
fun `M delegate to core feature W createOkHttpCallFactory()`() {
1427-
// Given
1428-
testedCore.initialize(fakeConfiguration)
1429-
1430-
// When
1431-
val callFactory = testedCore.createOkHttpCallFactory {
1432-
callTimeout(45, TimeUnit.SECONDS)
1433-
writeTimeout(30, TimeUnit.SECONDS)
1434-
}
1435-
1436-
// Then
1437-
assertThat(callFactory).isNotNull()
1438-
val request = okhttp3.Request.Builder().url("https://example.com").build()
1439-
val call = callFactory.newCall(request)
1440-
assertThat(call).isNotNull()
1441-
}
1442-
1443-
@Test
1444-
fun `M create call factory with custom config W createOkHttpCallFactory() { with builder block }`() {
1465+
fun `M delegate to core feature W createOkHttpCallFactory() { }`(
1466+
@LongForgery(min = 0, max = 60) customTimeout: Long,
1467+
@LongForgery(min = 0, max = 60) customWriteTimeout: Long
1468+
) {
14451469
// Given
14461470
testedCore.initialize(fakeConfiguration)
1447-
val customTimeout = 60_000L
14481471

14491472
// When
14501473
val callFactory = testedCore.createOkHttpCallFactory {
1451-
callTimeout(customTimeout, TimeUnit.MILLISECONDS)
1474+
callTimeout(customTimeout, TimeUnit.SECONDS)
1475+
writeTimeout(customWriteTimeout, TimeUnit.SECONDS)
14521476
}
14531477

14541478
// Then
14551479
assertThat(callFactory).isNotNull()
1456-
1457-
// Verify the factory can create calls
1458-
val request = okhttp3.Request.Builder().url("https://example.com").build()
1459-
val call = callFactory.newCall(request)
1460-
assertThat(call).isNotNull()
1461-
assertThat(call.request()).isEqualTo(request)
1462-
1463-
// Verify custom timeout was applied
1464-
assertThat(call.timeout().timeoutNanos()).isGreaterThan(0)
14651480
}
14661481

1467-
class ErrorRecordingRunnable(private val collector: MutableList<Throwable>, private val delegate: Runnable) :
1468-
Runnable {
1482+
class ErrorRecordingRunnable(
1483+
private val collector: MutableList<Throwable>,
1484+
private val delegate: Runnable
1485+
) : Runnable {
14691486
override fun run() {
14701487
try {
14711488
delegate.run()
@@ -1478,11 +1495,14 @@ internal class DatadogCoreTest {
14781495
companion object {
14791496

14801497
val msToNs = TimeUnit.MILLISECONDS.toNanos(1)
1498+
val secondsToNs = TimeUnit.SECONDS.toNanos(1)
14811499

14821500
val appContext = ApplicationContextTestConfiguration(Application::class.java)
14831501

14841502
@TestConfigurationsProvider
14851503
@JvmStatic
1486-
fun getTestConfigurations(): List<TestConfiguration> = listOf(appContext)
1504+
fun getTestConfigurations(): List<TestConfiguration> {
1505+
return listOf(appContext)
1506+
}
14871507
}
14881508
}

0 commit comments

Comments
 (0)