@@ -12,7 +12,6 @@ import android.os.SystemClock
1212import com.datadog.android.core.internal.system.BuildSdkVersionProvider
1313import com.datadog.android.internal.time.TimeProvider
1414import com.datadog.android.rum.DdRumContentProvider
15- import fr.xgouchet.elmyr.Forge
1615import fr.xgouchet.elmyr.annotation.IntForgery
1716import fr.xgouchet.elmyr.annotation.LongForgery
1817import 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