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
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ class DdSdk(

@Suppress("ComplexMethod", "UnsafeCallOnNullableType")
private fun buildConfiguration(configuration: DdSdkConfiguration): Configuration {
val additionalConfig = configuration.additionalConfig?.toMutableMap();
val additionalConfig = configuration.additionalConfig?.toMutableMap()

val versionSuffix = configuration.additionalConfig?.get(DD_VERSION_SUFFIX) as? String
if (versionSuffix != null && additionalConfig != null) {
Expand All @@ -189,7 +189,9 @@ class DdSdk(
}

configBuilder.useSite(buildSite(configuration.site))
configBuilder.setVitalsUpdateFrequency(buildVitalUpdateFrequency(configuration.vitalsUpdateFrequency))
configBuilder.setVitalsUpdateFrequency(
buildVitalUpdateFrequency(configuration.vitalsUpdateFrequency)
)

val telemetrySampleRate = (configuration.telemetrySampleRate as? Number)?.toFloat()
telemetrySampleRate?.let { configBuilder.sampleTelemetry(it) }
Expand Down Expand Up @@ -317,7 +319,12 @@ class DdSdk(
val frameTimeCallback = buildFrameTimeCallback(vitalsUpdateFrequency)
reactContext.runOnJSQueueThread {
val vitalFrameCallback =
VitalFrameCallback(frameTimeCallback, ::handlePostFrameCallbackError) { initialized.get() }
VitalFrameCallback(
frameTimeCallback,
::handlePostFrameCallbackError
) {
initialized.get()
}
try {
Choreographer.getInstance().postFrameCallback(vitalFrameCallback)
} catch (e: IllegalStateException) {
Expand All @@ -327,11 +334,15 @@ class DdSdk(
}
}

private fun buildFrameTimeCallback(vitalsUpdateFrequency: VitalsUpdateFrequency): (frameTime: Double) -> Unit {
private fun buildFrameTimeCallback(vitalsUpdateFrequency: VitalsUpdateFrequency):
(frameTime: Double) -> Unit {
val monitorJsRefreshRate = vitalsUpdateFrequency != VitalsUpdateFrequency.NEVER
return {
if (monitorJsRefreshRate && it > 0.0) {
GlobalRum.get()._getInternal()?.updatePerformanceMetric(RumPerformanceMetric.JS_FRAME_TIME, it)
GlobalRum.get()._getInternal()?.updatePerformanceMetric(
RumPerformanceMetric.JS_FRAME_TIME,
it
)
}
if (it > longTaskThresholdNs) {
// TODO: report long task
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@

package com.datadog.reactnative

import com.datadog.android.core.configuration.VitalsUpdateFrequency

/**
* A configuration object to initialize Datadog's features.
* @param clientToken A valid Datadog client token.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
package com.datadog.reactnative

import android.view.Choreographer
import java.util.concurrent.TimeUnit

/**
* Reads the javascript framerate based on the [Choreographer.FrameCallback].
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import fr.xgouchet.elmyr.Forge
import fr.xgouchet.elmyr.annotation.DoubleForgery
import fr.xgouchet.elmyr.annotation.Forgery
import fr.xgouchet.elmyr.annotation.IntForgery
import fr.xgouchet.elmyr.annotation.LongForgery
import fr.xgouchet.elmyr.annotation.StringForgery
import fr.xgouchet.elmyr.annotation.StringForgeryType
import fr.xgouchet.elmyr.junit5.ForgeConfiguration
Expand Down Expand Up @@ -281,7 +280,13 @@ internal class DdRumTest {
)

// Then
verify(mockRumMonitor).stopResource(key, statusCode, resourceSize.toLong(), kind, updatedContext)
verify(mockRumMonitor).stopResource(
key,
statusCode,
resourceSize.toLong(),
kind,
updatedContext
)
}

@Test
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
/*
* Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
* This product includes software developed at Datadog (https://www.datadoghq.com/).
* Copyright 2016-Present Datadog, Inc.
*/

package com.datadog.reactnative

import android.util.Log
import android.content.pm.PackageInfo
import android.util.Log
import com.datadog.android.DatadogEndpoint
import com.datadog.android.core.configuration.BatchSize
import com.datadog.android.core.configuration.Configuration
Expand Down Expand Up @@ -46,8 +52,8 @@ import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import org.junit.jupiter.api.extension.Extensions
import org.mockito.Mock
import org.mockito.Answers
import org.mockito.Mock
import org.mockito.junit.jupiter.MockitoExtension
import org.mockito.junit.jupiter.MockitoSettings
import org.mockito.quality.Strictness
Expand Down Expand Up @@ -81,7 +87,12 @@ internal class DdSdkTest {
fun `set up`() {
whenever(mockContext.applicationContext) doReturn mockContext
whenever(mockContext.packageName) doReturn "packageName"
whenever(mockContext.packageManager.getPackageInfo("packageName", 0)) doReturn mockPackageInfo
whenever(
mockContext.packageManager.getPackageInfo(
"packageName",
0
)
) doReturn mockPackageInfo
testedBridgeSdk = DdSdk(mockContext, mockDatadog)
}

Expand Down Expand Up @@ -278,7 +289,10 @@ internal class DdSdkTest {
.hasField("rumConfig") {
it.hasFieldEqualTo("plugins", emptyList<DatadogPlugin>())
it.hasFieldEqualTo("samplingRate", expectedRumSampleRate)
it.hasFieldEqualTo("vitalsMonitorUpdateFrequency", VitalsUpdateFrequency.AVERAGE)
it.hasFieldEqualTo(
"vitalsMonitorUpdateFrequency",
VitalsUpdateFrequency.AVERAGE
)
}
.hasFieldEqualTo(
"additionalConfig",
Expand Down Expand Up @@ -1219,14 +1233,14 @@ internal class DdSdkTest {

@Test
fun `𝕄 set version 𝕎 initialize() {versionSuffix}`(
@Forgery configuration: DdSdkConfiguration,
@StringForgery versionSuffix: String
@Forgery configuration: DdSdkConfiguration,
@StringForgery versionSuffix: String
) {
// Given
val bridgeConfiguration = configuration.copy(
additionalConfig = mapOf(
DdSdk.DD_VERSION_SUFFIX to versionSuffix
)
additionalConfig = mapOf(
DdSdk.DD_VERSION_SUFFIX to versionSuffix
)
)
val configCaptor = argumentCaptor<Configuration>()

Expand All @@ -1235,19 +1249,19 @@ internal class DdSdkTest {

// Then
verify(mockDatadog).initialize(
same(mockContext),
any(),
configCaptor.capture(),
eq(configuration.trackingConsent.asTrackingConsent())
same(mockContext),
any(),
configCaptor.capture(),
eq(configuration.trackingConsent.asTrackingConsent())
)
assertThat(configCaptor.firstValue)
.hasFieldEqualTo(
"additionalConfig",
mapOf(
DdSdk.DD_VERSION_SUFFIX to versionSuffix,
DdSdk.DD_VERSION to mockPackageInfo.versionName + versionSuffix
)
.hasFieldEqualTo(
"additionalConfig",
mapOf(
DdSdk.DD_VERSION_SUFFIX to versionSuffix,
DdSdk.DD_VERSION to mockPackageInfo.versionName + versionSuffix
)
)
}

// endregion
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,11 @@ internal class DdTraceTest {
@BeforeEach
fun `set up`() {
whenever(mockTracer.buildSpan(fakeOperation)) doReturn mockSpanBuilder
whenever(mockSpanBuilder.withStartTimestamp(fakeTimestamp.toLong() * 1000)) doReturn mockSpanBuilder
whenever(
mockSpanBuilder.withStartTimestamp(
fakeTimestamp.toLong() * 1000
)
) doReturn mockSpanBuilder
whenever(mockSpanBuilder.start()) doReturn mockSpan
whenever(mockSpan.context()) doReturn mockSpanContext
whenever(mockSpanContext.toSpanId()) doReturn fakeSpanId
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* This product includes software developed at Datadog (https://www.datadoghq.com/).
* Copyright 2016-Present Datadog, Inc.
*/

package com.datadog.tools.unit

import com.datadog.android.core.configuration.VitalsUpdateFrequency
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* This product includes software developed at Datadog (https://www.datadoghq.com/).
* Copyright 2016-Present Datadog, Inc.
*/

package com.datadog.tools.unit

import org.assertj.core.api.AbstractAssert
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* This product includes software developed at Datadog (https://www.datadoghq.com/).
* Copyright 2016-Present Datadog, Inc.
*/

package com.datadog.tools.unit

import com.facebook.react.bridge.JavaOnlyMap
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,9 @@
* This product includes software developed at Datadog (https://www.datadoghq.com/).
* Copyright 2016-Present Datadog, Inc.
*/

package com.datadog.tools.unit.forge

import com.datadog.android.core.configuration.VitalsUpdateFrequency
import com.datadog.reactnative.DdSdkConfiguration
import fr.xgouchet.elmyr.Forge
import fr.xgouchet.elmyr.ForgeryFactory
Expand All @@ -21,7 +20,14 @@ class DdSdkConfigurationForgeryFactory : ForgeryFactory<DdSdkConfiguration> {
nativeCrashReportEnabled = forge.aNullable { aBool() },
sampleRate = forge.aNullable { aDouble(0.0, 100.0) },
telemetrySampleRate = forge.aNullable { aDouble(0.0, 100.0) },
vitalsUpdateFrequency = forge.aNullable { anElementFrom("RARE", "NEVER", "FREQUENT", "AVERAGE") },
vitalsUpdateFrequency = forge.aNullable {
anElementFrom(
"RARE",
"NEVER",
"FREQUENT",
"AVERAGE"
)
},
site = forge.aNullable { anElementFrom("US", "EU", "GOV") },
additionalConfig = forge.aMap {
forge.anAsciiString() to forge.anElementFrom(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,16 @@
* This product includes software developed at Datadog (https://www.datadoghq.com/).
* Copyright 2016-Present Datadog, Inc.
*/

package com.datadog.tools.unit.forge

import android.content.pm.PackageInfo
import fr.xgouchet.elmyr.Forge
import fr.xgouchet.elmyr.ForgeryFactory
import java.util.UUID

class PackageInfoForgeryFactory : ForgeryFactory<PackageInfo> {
override fun getForgery(forge: Forge): PackageInfo {
val packageInfo = PackageInfo();
val packageInfo = PackageInfo()
packageInfo.versionName = forge.aStringMatching("[0-9]\\.[0-9]\\.[0-9]")
return packageInfo
}
Expand Down