Skip to content

Commit c633626

Browse files
authored
Merge pull request #3005 from DataDog/kikoveiga/RUM-10805/fix-resolve-methods
RUM-10805: Remove resolveMeta & resolveMetrics methods in tests
2 parents 5cec742 + d312ed9 commit c633626

File tree

3 files changed

+104
-31
lines changed

3 files changed

+104
-31
lines changed

features/dd-sdk-android-trace/src/main/kotlin/com/datadog/android/trace/internal/domain/event/CoreTracerSpanToSpanEventMapper.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,7 @@ internal class CoreTracerSpanToSpanEventMapper(
5858
return DDSpanId.toHexStringPadded(model.parentId)
5959
}
6060

61-
// TODO RUM-10805 - make it back private and re-create objects in tests
62-
internal fun resolveMetrics(event: DDSpan): SpanEvent.Metrics {
61+
private fun resolveMetrics(event: DDSpan): SpanEvent.Metrics {
6362
val metrics = resolveMetricsFromSpanContext(event).apply {
6463
val spanSamplingPriority = event.spanSamplingPriority
6564
if (spanSamplingPriority != PrioritySampling.UNSET.toInt()) {
@@ -74,8 +73,7 @@ internal class CoreTracerSpanToSpanEventMapper(
7473
)
7574
}
7675

77-
// TODO RUM-10805 - make it back private and re-create objects in tests
78-
internal fun resolveMeta(datadogContext: DatadogContext, event: DDSpan): SpanEvent.Meta {
76+
private fun resolveMeta(datadogContext: DatadogContext, event: DDSpan): SpanEvent.Meta {
7977
val deviceInfo = resolveDeviceInfo(datadogContext.deviceInfo)
8078
val osInfo = resolveOsInfo(datadogContext.deviceInfo)
8179
val networkInfoMeta = if (networkInfoEnabled) resolveNetworkInfo(datadogContext.networkInfo) else null

features/dd-sdk-android-trace/src/testFixtures/kotlin/com/datadog/android/trace/api/DatadogTracingTestExt.kt

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
package com.datadog.android.trace.api
88

9-
import com.datadog.android.api.context.DatadogContext
109
import com.datadog.android.trace.GlobalDatadogTracer
1110
import com.datadog.android.trace.api.span.DatadogSpan
1211
import com.datadog.android.trace.api.span.DatadogSpanContext
@@ -20,12 +19,9 @@ import com.datadog.android.trace.internal.DatadogTraceIdAdapter
2019
import com.datadog.android.trace.internal.DatadogTracerAdapter
2120
import com.datadog.android.trace.internal.DatadogTracerBuilderAdapter
2221
import com.datadog.android.trace.internal.DatadogTracingToolkit
23-
import com.datadog.android.trace.internal.domain.event.CoreTracerSpanToSpanEventMapper
2422
import com.datadog.trace.api.DDTraceId
2523
import com.datadog.trace.core.CoreTracer
26-
import com.datadog.trace.core.DDSpan
2724
import com.datadog.trace.core.DDSpanContext
28-
import com.google.gson.JsonElement
2925

3026
val DatadogTracer.partialFlushMinSpans: Int?
3127
get() = coreTracer?.partialFlushMinSpans
@@ -47,18 +43,6 @@ fun DatadogTraceId.Companion.from(traceId: String): DatadogTraceId {
4743
return DatadogTraceIdAdapter(DDTraceId.from(traceId))
4844
}
4945

50-
fun DatadogSpan.resolveMeta(datadogContext: DatadogContext): JsonElement {
51-
val mapper = CoreTracerSpanToSpanEventMapper(false)
52-
val ddSpan = (this as DatadogSpanAdapter).delegate as DDSpan
53-
return mapper.resolveMeta(datadogContext, ddSpan).toJson()
54-
}
55-
56-
fun DatadogSpan.resolveMetrics(): JsonElement {
57-
val mapper = CoreTracerSpanToSpanEventMapper(false)
58-
val ddSpan = (this as DatadogSpanAdapter).delegate as DDSpan
59-
return mapper.resolveMetrics(ddSpan).toJson()
60-
}
61-
6246
fun DatadogSpan.forceSamplingDecision() {
6347
(this as DatadogSpanAdapter).delegate.forceSamplingDecision()
6448
}

instrumented/integration/src/androidTest/kotlin/com/datadog/android/sdk/integration/trace/TracesTest.kt

Lines changed: 102 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ import com.datadog.android.sdk.rules.HandledRequest
1616
import com.datadog.android.sdk.rules.MockServerActivityTestRule
1717
import com.datadog.android.sdk.utils.isLogsUrl
1818
import com.datadog.android.sdk.utils.isTracesUrl
19-
import com.datadog.android.trace.api.resolveMeta
20-
import com.datadog.android.trace.api.resolveMetrics
2119
import com.datadog.android.trace.api.span.DatadogSpan
2220
import com.datadog.android.trace.internal.DatadogTracingToolkit
2321
import com.datadog.tools.unit.assertj.JsonObjectAssert.Companion.assertThat
@@ -78,7 +76,7 @@ internal abstract class TracesTest {
7876
val json = sentSpansObjects.first { spanJson ->
7977
val leastSignificantTraceId = spanJson.get(TRACE_ID_KEY).asString
8078
val mostSignificantTraceId = spanJson
81-
.getAsJsonObject("meta")
79+
.getAsJsonObject(META_KEY)
8280
.getAsJsonPrimitive(MOST_SIGNIFICANT_64_BITS_TRACE_ID_KEY).asString
8381

8482
leastSignificantTraceId == span.leastSignificant64BitsTraceId() &&
@@ -119,8 +117,6 @@ internal abstract class TracesTest {
119117
}
120118

121119
private fun assertMatches(jsonObject: JsonObject, span: DatadogSpan, context: DatadogContext) {
122-
val meta = span.resolveMeta(context)
123-
val metrics = span.resolveMetrics()
124120
assertThat(jsonObject)
125121
.hasField(SERVICE_NAME_KEY, span.serviceName)
126122
.hasField(TRACE_ID_KEY, span.leastSignificant64BitsTraceId())
@@ -140,11 +136,42 @@ internal abstract class TracesTest {
140136
.hasField(DURATION_KEY, span.durationNano)
141137
.hasField(RESOURCE_KEY, span.resourceName.orEmpty())
142138
.hasField(OPERATION_NAME_KEY, span.operationName)
143-
.hasField(META_KEY, meta)
144-
.hasField(METRICS_KEY, metrics)
139+
.hasField(ERROR_KEY, 0L)
140+
.hasField(TYPE_KEY, DEFAULT_SPAN_TYPE)
141+
145142
val metaObject = jsonObject.getAsJsonObject(META_KEY)
146143
assertThat(metaObject)
147144
.hasField(MOST_SIGNIFICANT_64_BITS_TRACE_ID_KEY, span.mostSignificant64BitsTraceId())
145+
.hasField(VERSION_KEY, context.version)
146+
.hasField(VARIANT_KEY, context.variant)
147+
.hasField(DD_KEY) {
148+
hasField(SOURCE_KEY, context.source)
149+
}
150+
.hasField(SPAN_KEY) {
151+
hasField(SPAN_KIND_KEY, DEFAULT_SPAN_KIND)
152+
}
153+
.hasField(TRACER_KEY) {
154+
hasField(TRACER_VERSION_KEY, context.sdkVersion)
155+
}
156+
.hasField(USR_KEY) { isEmpty() }
157+
.hasField(DEVICE_KEY) {
158+
hasField(DEVICE_NAME_KEY, context.deviceInfo.deviceName)
159+
hasField(DEVICE_MODEL_KEY, context.deviceInfo.deviceModel)
160+
hasField(DEVICE_BRAND_KEY, context.deviceInfo.deviceBrand)
161+
hasField(DEVICE_ARCHITECTURE_KEY, context.deviceInfo.architecture)
162+
}
163+
.hasField(OS_KEY) {
164+
hasField(OS_NAME_KEY, context.deviceInfo.osName)
165+
hasField(OS_VERSION_KEY, context.deviceInfo.osVersion)
166+
hasField(OS_VERSION_MAJOR_KEY, context.deviceInfo.osMajorVersion)
167+
}
168+
169+
val metricsObject = jsonObject.getAsJsonObject(METRICS_KEY)
170+
assertThat(metricsObject).isNotNull
171+
172+
if (span.parentSpanId == 0L) {
173+
assertThat(metricsObject).hasField(TOP_LEVEL_KEY, 1L)
174+
}
148175
}
149176

150177
private fun tracesPayloadToJsonArray(payload: String): List<JsonElement> {
@@ -160,17 +187,81 @@ internal abstract class TracesTest {
160187
}
161188

162189
companion object {
163-
const val START_TIMESTAMP_KEY = "start"
164-
const val DURATION_KEY = "duration"
165-
const val SERVICE_NAME_KEY = "service"
190+
// region SpanEvent
191+
166192
const val TRACE_ID_KEY = "trace_id"
167-
const val MOST_SIGNIFICANT_64_BITS_TRACE_ID_KEY = "_dd.p.id"
168193
const val SPAN_ID_KEY = "span_id"
169194
const val PARENT_ID_KEY = "parent_id"
170195
const val RESOURCE_KEY = "resource"
171196
const val OPERATION_NAME_KEY = "name"
197+
const val SERVICE_NAME_KEY = "service"
198+
const val DURATION_KEY = "duration"
199+
const val START_TIMESTAMP_KEY = "start"
200+
const val ERROR_KEY = "error"
201+
const val TYPE_KEY = "type"
172202
const val META_KEY = "meta"
173203
const val METRICS_KEY = "metrics"
204+
const val DEFAULT_SPAN_TYPE = "custom"
205+
206+
// endregion
207+
208+
// region SpanEvent.Meta
209+
210+
const val VERSION_KEY = "version"
211+
const val DD_KEY = "_dd"
212+
const val SPAN_KEY = "span"
213+
const val TRACER_KEY = "tracer"
214+
const val USR_KEY = "usr"
215+
const val DEVICE_KEY = "device"
216+
const val OS_KEY = "os"
217+
218+
const val MOST_SIGNIFICANT_64_BITS_TRACE_ID_KEY = "_dd.p.id"
219+
const val VARIANT_KEY = "variant"
220+
221+
// endregion
222+
223+
// region SpanEvent.Dd
224+
225+
const val SOURCE_KEY = "source"
226+
227+
// endregion
228+
229+
// region SpanEvent.Span
230+
231+
const val SPAN_KIND_KEY = "kind"
232+
const val DEFAULT_SPAN_KIND = "client"
233+
234+
// endregion
235+
236+
// region SpanEvent.Tracer
237+
238+
const val TRACER_VERSION_KEY = "version"
239+
240+
//endregion
241+
242+
// region SpanEvent.Device
243+
244+
const val DEVICE_NAME_KEY = "name"
245+
const val DEVICE_MODEL_KEY = "model"
246+
const val DEVICE_BRAND_KEY = "brand"
247+
const val DEVICE_ARCHITECTURE_KEY = "architecture"
248+
249+
//endregion
250+
251+
// region SpanEvent.Os
252+
253+
const val OS_NAME_KEY = "name"
254+
const val OS_VERSION_KEY = "version"
255+
const val OS_VERSION_MAJOR_KEY = "version_major"
256+
257+
//endregion
258+
259+
// region SpanEvent.Metrics
260+
261+
const val TOP_LEVEL_KEY = "_top_level"
262+
263+
//endregion
264+
174265
internal val INITIAL_WAIT_MS = TimeUnit.SECONDS.toMillis(60)
175266

176267
private const val TAG_STATUS = "status"

0 commit comments

Comments
 (0)