Skip to content

Commit 988fca2

Browse files
committed
RUM-10363: Fix changes according to develop branch
1 parent 2ac6668 commit 988fca2

File tree

3 files changed

+22
-62
lines changed

3 files changed

+22
-62
lines changed

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

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import com.datadog.android.core.internal.logger.SdkInternalLogger
3434
import com.datadog.android.core.internal.net.FirstPartyHostHeaderTypeResolver
3535
import com.datadog.android.core.internal.system.BuildSdkVersionProvider
3636
import com.datadog.android.core.internal.time.DefaultAppStartTimeProvider
37+
import com.datadog.android.core.internal.time.composeTimeInfo
3738
import com.datadog.android.core.internal.utils.executeSafe
3839
import com.datadog.android.core.internal.utils.getSafe
3940
import com.datadog.android.core.internal.utils.scheduleSafe
@@ -101,17 +102,7 @@ internal class DatadogCore(
101102
/** @inheritDoc */
102103
override val time: TimeInfo
103104
get() {
104-
return with(coreFeature.timeProvider) {
105-
val deviceTimeMs = getDeviceTimestamp()
106-
val serverTimeMs = getServerTimestamp()
107-
TimeInfo(
108-
deviceTimeNs = TimeUnit.MILLISECONDS.toNanos(deviceTimeMs),
109-
serverTimeNs = TimeUnit.MILLISECONDS.toNanos(serverTimeMs),
110-
serverTimeOffsetNs = TimeUnit.MILLISECONDS
111-
.toNanos(serverTimeMs - deviceTimeMs),
112-
serverTimeOffsetMs = serverTimeMs - deviceTimeMs
113-
)
114-
}
105+
return timeProvider.composeTimeInfo()
115106
}
116107

117108
/** @inheritDoc */

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ internal object NoOpInternalSdkCore : InternalSdkCore {
4848
override val name: String = "no-op"
4949

5050
override val time: TimeInfo = with(timeProvider.getDeviceTimestamp()) {
51-
TimeInfo(
51+
TimeInfo.EMPTY.copy(
5252
deviceTimeNs = TimeUnit.MILLISECONDS.toNanos(this),
5353
serverTimeNs = TimeUnit.MILLISECONDS.toNanos(this),
5454
serverTimeOffsetNs = 0L,

dd-sdk-android-core/src/test/kotlin/com/datadog/android/core/internal/time/DefaultAppStartTimeProviderTest.kt

Lines changed: 19 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import android.os.SystemClock
1212
import com.datadog.android.core.internal.system.BuildSdkVersionProvider
1313
import com.datadog.android.internal.time.TimeProvider
1414
import com.datadog.android.rum.DdRumContentProvider
15-
import fr.xgouchet.elmyr.Forge
1615
import fr.xgouchet.elmyr.annotation.IntForgery
1716
import fr.xgouchet.elmyr.annotation.LongForgery
1817
import fr.xgouchet.elmyr.junit5.ForgeExtension
@@ -40,55 +39,23 @@ class DefaultAppStartTimeProviderTest {
4039
@Test
4140
fun `M return process start time W appStartTime { N+ }`(
4241
@IntForgery(min = Build.VERSION_CODES.N) apiVersion: Int,
43-
@LongForgery(min = 0L) fakeCurrentTimeNs: Long,
44-
forge: Forge
42+
@LongForgery(min = 0L) fakeCurrentTimeNs: Long
4543
) {
4644
// Given
4745
whenever(mockBuildSdkVersionProvider.version).thenReturn(apiVersion)
4846
whenever(mockTimeProvider.getDeviceElapsedTimeNs()).thenReturn(fakeCurrentTimeNs)
4947
val diffMs = SystemClock.elapsedRealtime() - Process.getStartElapsedRealtime()
50-
val startTimeNs = fakeCurrentTimeNs - TimeUnit.MILLISECONDS.toNanos(diffMs)
51-
52-
DdRumContentProvider.createTimeNs = startTimeNs +
53-
forge.aLong(min = 0, max = DefaultAppStartTimeProvider.PROCESS_START_TO_CP_START_DIFF_THRESHOLD_NS)
54-
55-
val testedProvider = DefaultAppStartTimeProvider(
56-
mockTimeProvider,
57-
mockBuildSdkVersionProvider
58-
)
48+
val expectedStartTimeNs = fakeCurrentTimeNs - TimeUnit.MILLISECONDS.toNanos(diffMs)
5949

6050
// When
61-
val providedStartTime = testedProvider.appStartTimeNs
62-
63-
// Then
64-
assertThat(providedStartTime).isEqualTo(startTimeNs)
65-
}
66-
67-
@Test
68-
fun `M fall back to DdRumContentProvider W appStartTime { N+ getStartElapsedRealtime returns buggy value }`(
69-
@IntForgery(min = Build.VERSION_CODES.N) apiVersion: Int,
70-
@LongForgery(min = 0L) fakeCurrentTimeNs: Long,
71-
forge: Forge
72-
) {
73-
// GIVEN
74-
whenever(mockBuildSdkVersionProvider.version).thenReturn(apiVersion)
75-
76-
val diffMs = SystemClock.elapsedRealtime() - Process.getStartElapsedRealtime()
77-
val startTimeNs = fakeCurrentTimeNs - TimeUnit.MILLISECONDS.toNanos(diffMs)
78-
79-
DdRumContentProvider.createTimeNs = startTimeNs +
80-
forge.aLong(min = DefaultAppStartTimeProvider.PROCESS_START_TO_CP_START_DIFF_THRESHOLD_NS)
81-
82-
// WHEN
83-
val testedProvider = DefaultAppStartTimeProvider(
51+
val testedAppStartTimeProvider = DefaultAppStartTimeProvider(
8452
mockTimeProvider,
8553
mockBuildSdkVersionProvider
8654
)
55+
val providedStartTime = testedAppStartTimeProvider.appStartTimeNs
8756

88-
val providedStartTime = testedProvider.appStartTimeNs
89-
90-
// THEN
91-
assertThat(providedStartTime).isEqualTo(DdRumContentProvider.createTimeNs)
57+
// Then
58+
assertThat(providedStartTime).isEqualTo(expectedStartTimeNs)
9259
}
9360

9461
@Test
@@ -98,13 +65,13 @@ class DefaultAppStartTimeProviderTest {
9865
// Given
9966
whenever(mockBuildSdkVersionProvider.version).thenReturn(apiVersion)
10067
val startTimeNs = DdRumContentProvider.createTimeNs
101-
val testedProvider = DefaultAppStartTimeProvider(
68+
69+
// When
70+
val testedAppStartTimeProvider = DefaultAppStartTimeProvider(
10271
mockTimeProvider,
10372
mockBuildSdkVersionProvider
10473
)
105-
106-
// When
107-
val providedStartTime = testedProvider.appStartTimeNs
74+
val providedStartTime = testedAppStartTimeProvider.appStartTimeNs
10875

10976
// Then
11077
assertThat(providedStartTime).isEqualTo(startTimeNs)
@@ -125,12 +92,13 @@ class DefaultAppStartTimeProviderTest {
12592
.thenReturn(fakeStartTimeNs + fakeUptimeNs)
12693

12794
// When
128-
val testedProvider = DefaultAppStartTimeProvider(
95+
val testedAppStartTimeProvider = DefaultAppStartTimeProvider(
12996
mockTimeProvider,
13097
mockBuildSdkVersionProvider
13198
)
132-
testedProvider.appStartTimeNs
133-
val uptime = testedProvider.appUptimeNs
99+
// First call initializes appStartTimeNs
100+
testedAppStartTimeProvider.appStartTimeNs
101+
val uptime = testedAppStartTimeProvider.appUptimeNs
134102

135103
// Then
136104
assertThat(uptime).isEqualTo(fakeUptimeNs)
@@ -151,13 +119,14 @@ class DefaultAppStartTimeProviderTest {
151119
.thenReturn(fakeStartTimeNs + 200L)
152120

153121
// When
154-
val testedProvider = DefaultAppStartTimeProvider(
122+
val testedAppStartTimeProvider = DefaultAppStartTimeProvider(
155123
mockTimeProvider,
156124
mockBuildSdkVersionProvider
157125
)
158-
testedProvider.appStartTimeNs
159-
val uptime1 = testedProvider.appUptimeNs
160-
val uptime2 = testedProvider.appUptimeNs
126+
// First call initializes appStartTimeNs
127+
testedAppStartTimeProvider.appStartTimeNs
128+
val uptime1 = testedAppStartTimeProvider.appUptimeNs
129+
val uptime2 = testedAppStartTimeProvider.appUptimeNs
161130

162131
// Then
163132
assertThat(uptime2).isGreaterThan(uptime1)

0 commit comments

Comments
 (0)