Skip to content

Commit a90662e

Browse files
committed
Revert "RUM-9902 - fix tests, getting rid from TraceContext"
This reverts commit 4cfff41 # Conflicts: # integrations/dd-sdk-android-okhttp-otel/src/main/kotlin/com/datadog/android/okhttp/otel/OkHttpExt.kt # integrations/dd-sdk-android-okhttp-otel/src/test/kotlin/com/datadog/android/okhttp/otel/OkHttpExtTest.kt
1 parent c9961a4 commit a90662e

File tree

29 files changed

+389
-172
lines changed

29 files changed

+389
-172
lines changed

features/dd-sdk-android-trace-api/api/apiSurface

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,9 @@ object com.datadog.android.trace.api.DatadogTracingConstants
4646
interface com.datadog.android.trace.api.propagation.DatadogPropagation
4747
fun <C> inject(com.datadog.android.trace.api.span.DatadogSpanContext, C, (C) -> Unit)
4848
fun <C> extract(C, (C) -> Unit): com.datadog.android.trace.api.span.DatadogSpanContext?
49-
fun isExtractedContext(com.datadog.android.trace.api.span.DatadogSpanContext): Boolean
5049
class com.datadog.android.trace.api.propagation.NoOpDatadogPropagation : DatadogPropagation
5150
override fun <C> inject(com.datadog.android.trace.api.span.DatadogSpanContext, C, (C) -> Unit)
5251
override fun <C> extract(C, (C) -> Unit): com.datadog.android.trace.api.span.DatadogSpanContext?
53-
override fun isExtractedContext(com.datadog.android.trace.api.span.DatadogSpanContext)
5452
interface com.datadog.android.trace.api.scope.DatadogScope : java.io.Closeable
5553
override fun close()
5654
interface com.datadog.android.trace.api.span.DatadogSpan

features/dd-sdk-android-trace-api/api/dd-sdk-android-trace-api.api

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,12 @@ public final class com/datadog/android/trace/api/DatadogTracingConstants$TracerC
6464
public abstract interface class com/datadog/android/trace/api/propagation/DatadogPropagation {
6565
public abstract fun extract (Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Lcom/datadog/android/trace/api/span/DatadogSpanContext;
6666
public abstract fun inject (Lcom/datadog/android/trace/api/span/DatadogSpanContext;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;)V
67-
public abstract fun isExtractedContext (Lcom/datadog/android/trace/api/span/DatadogSpanContext;)Z
6867
}
6968

7069
public final class com/datadog/android/trace/api/propagation/NoOpDatadogPropagation : com/datadog/android/trace/api/propagation/DatadogPropagation {
7170
public fun <init> ()V
7271
public fun extract (Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Lcom/datadog/android/trace/api/span/DatadogSpanContext;
7372
public fun inject (Lcom/datadog/android/trace/api/span/DatadogSpanContext;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;)V
74-
public fun isExtractedContext (Lcom/datadog/android/trace/api/span/DatadogSpanContext;)Z
7573
}
7674

7775
public abstract interface class com/datadog/android/trace/api/scope/DataScopeListener {

features/dd-sdk-android-trace-api/src/main/kotlin/com/datadog/android/trace/api/propagation/DatadogPropagation.kt

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,4 @@ interface DatadogPropagation {
4747
carrier: C,
4848
getter: (carrier: C, classifier: (String, String) -> Boolean) -> Unit
4949
): DatadogSpanContext?
50-
51-
/**
52-
* Determines if the provided [DatadogSpanContext] represents an extracted context.
53-
*
54-
* @param context The DatadogSpanContext to be evaluated.
55-
* @return True if the context is identified as an extracted context, otherwise false.
56-
*/
57-
fun isExtractedContext(context: DatadogSpanContext): Boolean
5850
}

features/dd-sdk-android-trace-api/src/main/kotlin/com/datadog/android/trace/api/propagation/NoOpDatadogPropagation.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,4 @@ class NoOpDatadogPropagation : DatadogPropagation {
2525
carrier: C,
2626
getter: (carrier: C, classifier: (String, String) -> Boolean) -> Unit
2727
): DatadogSpanContext? = null
28-
29-
override fun isExtractedContext(context: DatadogSpanContext) = false
3028
}

features/dd-sdk-android-trace-internal/api/dd-sdk-android-trace-internal.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@ public final class com/datadog/trace/api/DDSpanId {
191191
public static fun from (Ljava/lang/String;)J
192192
public static fun fromHex (Ljava/lang/String;)J
193193
public static fun fromHex (Ljava/lang/String;IIZ)J
194+
public static fun fromHexOrDefault (Ljava/lang/String;J)J
194195
public static fun toHexString (J)Ljava/lang/String;
195196
public static fun toHexStringPadded (J)Ljava/lang/String;
196197
public static fun toString (J)Ljava/lang/String;

features/dd-sdk-android-trace-internal/src/main/java/com/datadog/trace/api/DDSpanId.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,21 @@ public static long fromHex(String s) throws NumberFormatException {
3636
return LongStringUtils.parseUnsignedLongHex(s);
3737
}
3838

39+
/**
40+
* Parse the span id from the given {@code String} hex representation of the unsigned 64 bit id.
41+
*
42+
* @param s String in hex of unsigned 64 bit id
43+
* @return long created from parsing sting or defaultValue if there was NumberFormatException during parsing
44+
*/
45+
public static long fromHexOrDefault(String s, long defaultValue) {
46+
try {
47+
return fromHex(s);
48+
} catch (NumberFormatException e) {
49+
return defaultValue;
50+
}
51+
52+
}
53+
3954
/**
4055
* Parse the span id from the given {@code String} hex representation of the unsigned 64 bit id.
4156
*

features/dd-sdk-android-trace/api/apiSurface

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,16 @@ data class com.datadog.android.trace.TraceConfiguration
2222
fun build(): TraceConfiguration
2323
interface com.datadog.android.trace.event.SpanEventMapper : com.datadog.android.event.EventMapper<com.datadog.android.trace.model.SpanEvent>
2424
override fun map(com.datadog.android.trace.model.SpanEvent): com.datadog.android.trace.model.SpanEvent
25-
interface com.datadog.android.trace.internal.DatadogSpanIdConverter
25+
class com.datadog.android.trace.internal.DatadogPropagationHelper
26+
fun isExtractedContext(com.datadog.android.trace.api.span.DatadogSpanContext): Boolean
27+
fun createExtractedContext(String, String, Int): com.datadog.android.trace.api.span.DatadogSpanContext
28+
class com.datadog.android.trace.internal.DatadogSpanIdConverter
2629
fun fromHex(String): Long
2730
fun toHexStringPadded(Long): String
2831
fun com.datadog.android.trace.api.trace.DatadogTraceId.Companion.fromHex(String): com.datadog.android.trace.api.trace.DatadogTraceId
2932
object com.datadog.android.trace.internal.DatadogTracingToolkit
3033
val spanIdConverter: DatadogSpanIdConverter
34+
var propagationHelper: DatadogPropagationHelper
3135
var spanLogger: com.datadog.android.trace.api.span.DatadogSpanLogger
3236
fun setTracingSamplingPriorityIfNecessary(com.datadog.android.trace.api.span.DatadogSpanContext)
3337
fun setTraceId128BitGenerationEnabled(com.datadog.android.trace.api.tracer.DatadogTracerBuilder): com.datadog.android.trace.api.tracer.DatadogTracerBuilder

features/dd-sdk-android-trace/api/dd-sdk-android-trace.api

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,14 @@ public abstract interface class com/datadog/android/trace/event/SpanEventMapper
5252
public abstract fun map (Lcom/datadog/android/trace/model/SpanEvent;)Lcom/datadog/android/trace/model/SpanEvent;
5353
}
5454

55-
public abstract interface class com/datadog/android/trace/internal/DatadogSpanIdConverter {
56-
public abstract fun fromHex (Ljava/lang/String;)J
57-
public abstract fun toHexStringPadded (J)Ljava/lang/String;
55+
public final class com/datadog/android/trace/internal/DatadogPropagationHelper {
56+
public final fun createExtractedContext (Ljava/lang/String;Ljava/lang/String;I)Lcom/datadog/android/trace/api/span/DatadogSpanContext;
57+
public final fun isExtractedContext (Lcom/datadog/android/trace/api/span/DatadogSpanContext;)Z
58+
}
59+
60+
public final class com/datadog/android/trace/internal/DatadogSpanIdConverter {
61+
public final fun fromHex (Ljava/lang/String;)J
62+
public final fun toHexStringPadded (J)Ljava/lang/String;
5863
}
5964

6065
public final class com/datadog/android/trace/internal/DatadogTraceExtKt {
@@ -64,6 +69,7 @@ public final class com/datadog/android/trace/internal/DatadogTraceExtKt {
6469
public final class com/datadog/android/trace/internal/DatadogTracingToolkit {
6570
public static final field INSTANCE Lcom/datadog/android/trace/internal/DatadogTracingToolkit;
6671
public static final field spanIdConverter Lcom/datadog/android/trace/internal/DatadogSpanIdConverter;
72+
public final fun getPropagationHelper ()Lcom/datadog/android/trace/internal/DatadogPropagationHelper;
6773
public final fun getSpanLogger ()Lcom/datadog/android/trace/api/span/DatadogSpanLogger;
6874
public final fun setTraceId128BitGenerationEnabled (Lcom/datadog/android/trace/api/tracer/DatadogTracerBuilder;)Lcom/datadog/android/trace/api/tracer/DatadogTracerBuilder;
6975
public final fun setTracingSamplingPriorityIfNecessary (Lcom/datadog/android/trace/api/span/DatadogSpanContext;)V

features/dd-sdk-android-trace/src/main/kotlin/com/datadog/android/trace/internal/DatadogPropagationAdapter.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ package com.datadog.android.trace.internal
99
import com.datadog.android.trace.api.propagation.DatadogPropagation
1010
import com.datadog.android.trace.api.span.DatadogSpanContext
1111
import com.datadog.trace.bootstrap.instrumentation.api.AgentPropagation
12-
import com.datadog.trace.core.propagation.ExtractedContext
1312

1413
internal class DatadogPropagationAdapter(private val delegate: AgentPropagation) : DatadogPropagation {
1514

@@ -29,9 +28,4 @@ internal class DatadogPropagationAdapter(private val delegate: AgentPropagation)
2928
return delegate.extract(carrier) { car, cls -> getter(car, cls::accept) }
3029
?.let { DatadogSpanContextAdapter(it) }
3130
}
32-
33-
override fun isExtractedContext(context: DatadogSpanContext): Boolean {
34-
if (context !is DatadogSpanContextAdapter) return false
35-
return context.delegate is ExtractedContext
36-
}
3731
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/*
2+
* Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
3+
* This product includes software developed at Datadog (https://www.datadoghq.com/).
4+
* Copyright 2016-Present Datadog, Inc.
5+
*/
6+
package com.datadog.android.trace.internal
7+
8+
import com.datadog.android.lint.InternalApi
9+
import com.datadog.android.trace.api.span.DatadogSpanContext
10+
import com.datadog.trace.api.DDSpanId
11+
import com.datadog.trace.api.DDTraceId
12+
import com.datadog.trace.core.propagation.ExtractedContext
13+
14+
/**
15+
* For internal usage only.
16+
* Helper class for handling Datadog context propagation.
17+
*/
18+
@InternalApi
19+
class DatadogPropagationHelper internal constructor() {
20+
/**
21+
* Determines if the provided [DatadogSpanContext] represents an extracted context.
22+
*
23+
* @param context The DatadogSpanContext to be evaluated.
24+
* @return True if the context is identified as an extracted context, otherwise false.
25+
*/
26+
fun isExtractedContext(context: DatadogSpanContext): Boolean {
27+
if (context !is DatadogSpanContextAdapter) return false
28+
return context.delegate is ExtractedContext
29+
}
30+
31+
/**
32+
* Creates a `DatadogSpanContext` object that represents an extracted context from the given parameters.
33+
*
34+
* @param traceId The unique identifier for the trace.
35+
* @param spanId The unique identifier for the span.
36+
* @param samplingPriority The sampling priority value for determining the trace's sampling behavior.
37+
* @return A `DatadogSpanContext` instance containing the extracted context.
38+
*/
39+
fun createExtractedContext(
40+
traceId: String,
41+
spanId: String,
42+
samplingPriority: Int
43+
): DatadogSpanContext = DatadogSpanContextAdapter(
44+
ExtractedContext(
45+
DDTraceId.fromHexOrDefault(traceId, DDTraceId.ZERO),
46+
DDSpanId.fromHexOrDefault(spanId, DDSpanId.ZERO),
47+
samplingPriority,
48+
null,
49+
null,
50+
null
51+
)
52+
)
53+
}

0 commit comments

Comments
 (0)