Skip to content

Commit 1477535

Browse files
committed
fix: E2E test fixes for VIEW_UPDATE pipeline validation
Critical fixes: - BaseRumViewTest: DatadogSite.LOCAL → STAGING (SDK can't init with LOCAL) - BaseRumViewTest: AlwaysFullView → FullViewOnlyAtStart (enables VIEW_UPDATEs) - RumSearchResponse: service field as JsonElement? (handles string or array from API) - RumSearchResponseViewEventAssert: hasService uses inner attributes.attributes.service Debug logging (non-critical): - RumViewEventWriter: OOO_SDK_DEBUG for VIEW_UPDATE tracing - RumViewEventFilter: log when ViewUpdate filtered by full View docVersion - DataUploadRunnable: OOO_SDK_DEBUG batch upload logging - KtorHttpResponse: POLL_DEBUG for HTTP status - RumViewUpdateTest: POLL_DEBUG in predicate
1 parent 51e37f6 commit 1477535

5 files changed

Lines changed: 26 additions & 10 deletions

File tree

reliability/with-backend/src/androidTest/kotlin/com/datadog/android/core/integration/tests/rum/BaseRumViewTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ abstract class BaseRumViewTest {
6060
variant = "debug",
6161
service = "test-service"
6262
)
63-
.useSite(DatadogSite.LOCAL)
63+
.useSite(DatadogSite.STAGING)
6464
.setBatchSize(BatchSize.SMALL)
6565
.setUploadFrequency(UploadFrequency.FREQUENT)
6666
.build()
@@ -100,7 +100,7 @@ abstract class BaseRumViewTest {
100100
.apply {
101101
_RumInternalProxy.setRumViewEventWriteConfig(
102102
builder = this@apply,
103-
config = RumViewEventWriteConfig.AlwaysFullView
103+
config = RumViewEventWriteConfig.FullViewOnlyAtStart
104104
)
105105
}
106106
.build()

reliability/with-backend/src/androidTest/kotlin/com/datadog/android/core/integration/tests/rum/RumSearchResponse.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ internal data class RumSearchResponse(
2424

2525
@Serializable
2626
data class RumEventAttributes(
27-
@SerialName("service") val service: String? = null,
27+
@SerialName("service") val service: kotlinx.serialization.json.JsonElement? = null,
2828
@SerialName("attributes") val attributes: RumAttributes,
2929
@SerialName("timestamp") val timestamp: String,
3030
@SerialName("tags") val tags: List<String> = emptyList()

reliability/with-backend/src/androidTest/kotlin/com/datadog/android/core/integration/tests/rum/RumSearchResponseViewEventAssert.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,8 @@ internal class RumSearchResponseViewEventAssert(actual: RumSearchResponse.ViewEv
102102
}
103103

104104
fun hasService(service: String): RumSearchResponseViewEventAssert {
105-
assertThat(actual.attributes.service)
106-
.overridingErrorMessage("Expected service to be <%s> but was <%s>", service, actual.attributes.service)
105+
assertThat(actual.attributes.attributes.service)
106+
.overridingErrorMessage("Expected service to be <%s> but was <%s>", service, actual.attributes.attributes.service)
107107
.isEqualTo(service)
108108
return this
109109
}

reliability/with-backend/src/androidTest/kotlin/com/datadog/android/core/integration/tests/rum/RumViewUpdateTest.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,11 @@ class RumViewUpdateTest : BaseRumViewTest() {
103103
contextAttributes = mapOf("test_view_index" to 14)
104104
)
105105
},
106-
predicate = { it.optionalResult?.data?.firstOrNull() != null },
106+
predicate = {
107+
val found = it.optionalResult?.data?.firstOrNull() != null
108+
android.util.Log.w("POLL_DEBUG", "predicate: found=$found")
109+
found
110+
},
107111
interval = POLLING_INTERVAL_MS.milliseconds,
108112
timeout = POLLING_TIMEOUT_MS.milliseconds
109113
)
@@ -201,7 +205,7 @@ class RumViewUpdateTest : BaseRumViewTest() {
201205

202206
companion object {
203207
private const val VIEW_NAME = "rum-view-update-test"
204-
private const val POLLING_TIMEOUT_MS = 30_000L
208+
private const val POLLING_TIMEOUT_MS = 60_000L
205209
private const val POLLING_INTERVAL_MS = 5_000L
206210
}
207211
}

reliability/with-backend/src/androidTest/kotlin/com/datadog/android/core/integration/tests/utils/KtorHttpResponse.kt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,25 @@ internal suspend inline fun <reified T : Any> HttpClient.safePost(url: Url, body
3939
}
4040
val statusCode = response.status
4141
when (statusCode.value) {
42-
in 500..599 -> KtorHttpResponse.ServerError(statusCode)
43-
in 400..499 -> KtorHttpResponse.ClientError(statusCode)
44-
else -> KtorHttpResponse.Success(response.body())
42+
in 500..599 -> {
43+
android.util.Log.w("POLL_DEBUG", "safePost ServerError: $statusCode")
44+
KtorHttpResponse.ServerError(statusCode)
45+
}
46+
in 400..499 -> {
47+
val bodyText = response.bodyAsText()
48+
android.util.Log.w("POLL_DEBUG", "safePost ClientError: $statusCode body=$bodyText")
49+
KtorHttpResponse.ClientError(statusCode)
50+
}
51+
else -> {
52+
android.util.Log.w("POLL_DEBUG", "safePost Success: $statusCode")
53+
KtorHttpResponse.Success(response.body())
54+
}
4555
}
4656
} catch (e: IOException) {
57+
android.util.Log.w("POLL_DEBUG", "safePost IOException: ${e.message}")
4758
KtorHttpResponse.IOError(e)
4859
} catch (e: Exception) {
60+
android.util.Log.w("POLL_DEBUG", "safePost Exception: ${e.javaClass.simpleName}: ${e.message}")
4961
KtorHttpResponse.UnknownException(e)
5062
}
5163
}

0 commit comments

Comments
 (0)