Skip to content

Commit 99a684b

Browse files
authored
Merge pull request #2773 from DataDog/tvaleev/feature/RUM-9902-removing-unused-code
[RUM-9902] Isolating implementation layer from integration modules
2 parents 90edcf0 + d475363 commit 99a684b

File tree

270 files changed

+6191
-15056
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

270 files changed

+6191
-15056
lines changed

dd-sdk-android-internal/api/apiSurface

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ class com.datadog.android.internal.thread.NamedRunnable : NamedExecutionUnit, Ru
8282
class com.datadog.android.internal.thread.NamedCallable<V> : NamedExecutionUnit, java.util.concurrent.Callable<V>
8383
constructor(String, java.util.concurrent.Callable<V>)
8484
fun ByteArray.toHexString(): String
85-
fun <R> Any.tryCastTo(): R?
8685
object com.datadog.android.internal.utils.ImageViewUtils
8786
fun resolveParentRectAbsPosition(android.view.View, Boolean = true): android.graphics.Rect
8887
fun calculateClipping(android.graphics.Rect, android.graphics.Rect, Float): android.graphics.Rect

dd-sdk-android-internal/src/main/java/com/datadog/android/internal/utils/CastExt.kt

Lines changed: 0 additions & 28 deletions
This file was deleted.

detekt_custom.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -752,6 +752,7 @@ datadog:
752752
- "java.util.concurrent.atomic.AtomicReference.compareAndSet(com.datadog.trace.core.CoreTracer?, com.datadog.trace.core.CoreTracer?)"
753753
- "java.util.concurrent.atomic.AtomicReference.compareAndSet(com.datadog.android.api.SdkCore?, com.datadog.android.api.SdkCore?)"
754754
- "java.util.concurrent.atomic.AtomicReference.compareAndSet(com.datadog.trace.bootstrap.instrumentation.api.AgentTracer.TracerAPI?, com.datadog.trace.bootstrap.instrumentation.api.AgentTracer.TracerAPI?)"
755+
- "java.util.concurrent.atomic.AtomicReference.compareAndSet(com.datadog.android.trace.api.tracer.DatadogTracer?, com.datadog.android.trace.api.tracer.DatadogTracer?)"
755756
- "java.util.concurrent.atomic.AtomicReference.compareAndSet(io.opentracing.Tracer?, io.opentracing.Tracer?)"
756757
- "java.util.concurrent.atomic.AtomicReference.compareAndSet(UNKNOWN, UNKNOWN)"
757758
- "java.util.concurrent.atomic.AtomicReference.constructor()"
@@ -766,6 +767,7 @@ datadog:
766767
- "java.util.concurrent.atomic.AtomicReference.set(com.datadog.android.api.SdkCore?)"
767768
- "java.util.concurrent.atomic.AtomicReference.set(com.datadog.android.api.feature.FeatureEventReceiver?)"
768769
- "java.util.concurrent.atomic.AtomicReference.set(com.datadog.android.rum.internal.domain.RumContext?)"
770+
- "java.util.concurrent.atomic.AtomicReference.set(com.datadog.android.trace.api.tracer.DatadogTracer?)"
769771
- "java.util.concurrent.atomic.AtomicReference.set(com.datadog.trace.bootstrap.instrumentation.api.AgentTracer.TracerAPI?)"
770772
- "java.util.concurrent.atomic.AtomicReference.set(com.datadog.trace.core.CoreTracer?)"
771773
- "java.util.concurrent.atomic.AtomicReference.set(io.opentracing.Tracer?)"
@@ -847,6 +849,7 @@ datadog:
847849
- "java.util.HashSet.addAll(kotlin.collections.Collection)"
848850
- "java.util.HashSet.find(kotlin.Function1)"
849851
- "java.util.Properties.constructor()"
852+
- "java.util.Properties.contains(kotlin.Any?)"
850853
- "java.util.Properties.setProperty(kotlin.String?, kotlin.String?)"
851854
- "java.util.UUID.constructor(kotlin.Long, kotlin.Long)"
852855
- "java.util.UUID.randomUUID()"
@@ -989,6 +992,7 @@ datadog:
989992
- "kotlin.collections.Map.forEach(kotlin.Function1)"
990993
- "kotlin.collections.Map.forEach(kotlin.Function1)" # one of our usage is with <*, *> which doesn't get captured
991994
- "kotlin.collections.Map.get(kotlin.String)"
995+
- "kotlin.collections.Map.get(kotlin.String?)"
992996
- "kotlin.collections.Map.isEmpty()"
993997
- "kotlin.collections.Map.isNotEmpty()"
994998
- "kotlin.collections.Map.isNullOrEmpty()"
@@ -1079,6 +1083,7 @@ datadog:
10791083
- "kotlin.collections.MutableMap.isEmpty()"
10801084
- "kotlin.collections.MutableMap.isNotEmpty()"
10811085
- "kotlin.collections.MutableMap.iterator()"
1086+
- "kotlin.collections.MutableMap.orEmpty()"
10821087
- "kotlin.collections.MutableMap.map(kotlin.Function1)"
10831088
- "kotlin.collections.MutableMap.mapValues(kotlin.Function1)"
10841089
- "kotlin.collections.MutableMap.put(kotlin.Any?, kotlin.Any?)"
@@ -1466,6 +1471,7 @@ datadog:
14661471
- "io.opentelemetry.api.trace.SpanBuilder.setAttribute(kotlin.String?, kotlin.String?)"
14671472
- "io.opentelemetry.api.trace.TracerBuilder.setInstrumentationVersion(kotlin.String?)"
14681473
- "io.opentelemetry.api.trace.TracerProvider.noop()"
1474+
- "io.opentelemetry.context.propagation.ContextPropagators.noop()"
14691475
- "io.opentelemetry.context.Context.get(io.opentelemetry.context.ContextKey?)"
14701476
- "io.opentelemetry.context.Context.makeCurrent()"
14711477
- "io.opentelemetry.context.Context.root()"

features/dd-sdk-android-rum/build.gradle.kts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,13 +77,15 @@ dependencies {
7777
)
7878
}
7979
}
80-
testImplementation(testFixtures(project(":dd-sdk-android-core")))
81-
testImplementation(testFixtures(project(":dd-sdk-android-internal")))
80+
8281
testImplementation(libs.bundles.jUnit5)
8382
testImplementation(libs.bundles.testTools)
8483
testImplementation(libs.okHttp)
8584
testImplementation(libs.okHttpMock)
86-
testImplementation(libs.bundles.openTracing)
85+
testImplementation(project(":features:dd-sdk-android-trace"))
86+
testImplementation(testFixtures(project(":dd-sdk-android-core")))
87+
testImplementation(testFixtures(project(":dd-sdk-android-internal")))
88+
testImplementation(testFixtures(project(":features:dd-sdk-android-trace")))
8789
unmock(libs.robolectric)
8890
}
8991

features/dd-sdk-android-rum/src/main/kotlin/com/datadog/android/telemetry/internal/TelemetryEventHandler.kt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -436,20 +436,21 @@ internal class TelemetryEventHandler(
436436
}
437437

438438
private fun isGlobalTracerRegistered(): Boolean {
439-
// We don't reference io.opentracing from RUM directly, so using reflection for this.
440-
// Would be nice to add the test with the flavor which is has no io.opentracing and test
439+
// We don't reference com.datadog.android.trace from RUM directly, so using reflection for this.
440+
// Would be nice to add the test with the flavor which is has no com.datadog.android.trace and test
441441
// for obfuscation enabled case.
442442
return try {
443-
val globalTracerClass = Class.forName("io.opentracing.util.GlobalTracer")
443+
val globalDatadogTracer =
444+
Class.forName("com.datadog.android.trace.GlobalDatadogTracer")
444445
return try {
445-
globalTracerClass.getMethod("isRegistered")
446-
.invoke(null) as Boolean
446+
val holderInstance = globalDatadogTracer.getDeclaredField("INSTANCE").get(null)
447+
globalDatadogTracer.getDeclaredMethod("getOrNull").invoke(holderInstance) != null
447448
} catch (@Suppress("TooGenericExceptionCaught") t: Throwable) {
448449
sdkCore.internalLogger.log(
449450
InternalLogger.Level.ERROR,
450451
InternalLogger.Target.TELEMETRY,
451452
{
452-
"GlobalTracer class exists in the runtime classpath, " +
453+
"GlobalDatadogTracer class exists in the runtime classpath, " +
453454
"but there is an error invoking isRegistered method"
454455
},
455456
t

features/dd-sdk-android-rum/src/test/kotlin/com/datadog/android/telemetry/internal/TelemetryEventHandlerTest.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,16 +45,15 @@ import com.datadog.android.telemetry.model.TelemetryConfigurationEvent
4545
import com.datadog.android.telemetry.model.TelemetryDebugEvent
4646
import com.datadog.android.telemetry.model.TelemetryErrorEvent
4747
import com.datadog.android.telemetry.model.TelemetryUsageEvent
48+
import com.datadog.android.trace.GlobalDatadogTracer
49+
import com.datadog.android.trace.api.tracer.DatadogTracer
4850
import com.datadog.tools.unit.forge.aThrowable
49-
import com.datadog.tools.unit.setStaticValue
5051
import fr.xgouchet.elmyr.Forge
5152
import fr.xgouchet.elmyr.annotation.FloatForgery
5253
import fr.xgouchet.elmyr.annotation.Forgery
5354
import fr.xgouchet.elmyr.annotation.StringForgery
5455
import fr.xgouchet.elmyr.junit5.ForgeConfiguration
5556
import fr.xgouchet.elmyr.junit5.ForgeExtension
56-
import io.opentracing.Tracer
57-
import io.opentracing.util.GlobalTracer
5857
import org.assertj.core.api.Assertions.assertThat
5958
import org.assertj.core.api.Assertions.within
6059
import org.junit.jupiter.api.AfterEach
@@ -224,7 +223,7 @@ internal class TelemetryEventHandlerTest {
224223

225224
@AfterEach
226225
fun `tear down`() {
227-
GlobalTracer::class.java.setStaticValue("isRegistered", false)
226+
GlobalDatadogTracer.clear()
228227
}
229228

230229
// region Debug Event
@@ -615,7 +614,7 @@ internal class TelemetryEventHandlerTest {
615614
if (useTracer) {
616615
whenever(mockSdkCore.getFeature(Feature.TRACING_FEATURE_NAME)) doReturn mock()
617616
if (tracerApi == TelemetryEventHandler.TracerApi.OpenTracing) {
618-
GlobalTracer.registerIfAbsent(mock<Tracer>())
617+
GlobalDatadogTracer.registerIfAbsent(mock<DatadogTracer>())
619618
} else if (tracerApi == TelemetryEventHandler.TracerApi.OpenTelemetry) {
620619
fakeDatadogContext = fakeDatadogContext.copy(
621620
featuresContext = fakeDatadogContext.featuresContext.toMutableMap().apply {
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Built application files
2+
*.apk
3+
*.ap_
4+
*.aab
5+
6+
# Files for the ART/Dalvik VM
7+
*.dex
8+
9+
# Java class files
10+
*.class
11+
12+
# Generated files
13+
bin/
14+
gen/
15+
out/
16+
17+
# Gradle files
18+
build/
Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
object com.datadog.android.trace.api.DatadogTracingConstants
2+
const val DEFAULT_ASYNC_PROPAGATING: Boolean
3+
object Tags
4+
const val KEY_HTTP_URL: String
5+
const val KEY_SPAN_KIND: String
6+
const val KEY_HTTP_METHOD: String
7+
const val KEY_HTTP_STATUS: String
8+
const val KEY_ERROR_MSG: String
9+
const val KEY_ERROR_TYPE: String
10+
const val KEY_ERROR_STACK: String
11+
const val VALUE_SPAN_KIND_CLIENT: String
12+
const val VALUE_SPAN_KIND_SERVER: String
13+
const val VALUE_SPAN_KIND_PRODUCER: String
14+
const val VALUE_SPAN_KIND_CONSUMER: String
15+
const val KEY_ANALYTICS_SAMPLE_RATE: String
16+
const val RESOURCE_NAME: String
17+
const val ERROR_MSG: String
18+
const val ERROR_TYPE: String
19+
object PrioritySampling
20+
const val UNSET: Int
21+
const val SAMPLER_DROP: Int
22+
const val SAMPLER_KEEP: Int
23+
const val USER_DROP: Int
24+
const val USER_KEEP: Int
25+
object TracerConfig
26+
const val SPAN_TAGS: String
27+
const val TRACE_RATE_LIMIT: String
28+
const val PARTIAL_FLUSH_MIN_SPANS: String
29+
const val TRACE_SAMPLE_RATE: String
30+
const val PROPAGATION_STYLE_EXTRACT: String
31+
const val PROPAGATION_STYLE_INJECT: String
32+
const val SERVICE_NAME: String
33+
const val URL_AS_RESOURCE_NAME: String
34+
const val TAGS: String
35+
object LogAttributes
36+
const val ERROR_KIND: String
37+
const val ERROR_OBJECT: String
38+
const val EVENT: String
39+
const val MESSAGE: String
40+
const val STACK: String
41+
const val STATUS: String
42+
object ErrorPriorities
43+
const val UNSET: Byte
44+
const val HTTP_SERVER_DECORATOR: Byte
45+
const val DEFAULT: Byte
46+
interface com.datadog.android.trace.api.propagation.DatadogPropagation
47+
fun <C> inject(com.datadog.android.trace.api.span.DatadogSpanContext, C, (C) -> Unit)
48+
fun <C> extract(C, (C) -> Unit): com.datadog.android.trace.api.span.DatadogSpanContext?
49+
class com.datadog.android.trace.api.propagation.NoOpDatadogPropagation : DatadogPropagation
50+
override fun <C> inject(com.datadog.android.trace.api.span.DatadogSpanContext, C, (C) -> Unit)
51+
override fun <C> extract(C, (C) -> Unit): com.datadog.android.trace.api.span.DatadogSpanContext?
52+
interface com.datadog.android.trace.api.scope.DatadogScope : java.io.Closeable
53+
override fun close()
54+
interface com.datadog.android.trace.api.span.DatadogSpan
55+
var isError: Boolean?
56+
val isRootSpan: Boolean
57+
val samplingPriority: Int?
58+
val traceId: com.datadog.android.trace.api.trace.DatadogTraceId
59+
val parentSpanId: Long?
60+
var resourceName: String?
61+
var serviceName: String
62+
var operationName: String
63+
val durationNano: Long
64+
val startTimeNanos: Long
65+
val localRootSpan: DatadogSpan?
66+
fun context(): DatadogSpanContext
67+
fun finish()
68+
fun finish(Long)
69+
fun drop()
70+
fun setErrorMessage(String?)
71+
fun addThrowable(Throwable)
72+
fun addThrowable(Throwable, Byte)
73+
fun setTag(String?, String?)
74+
fun setTag(String?, Boolean)
75+
fun setTag(String?, Number?)
76+
fun setTag(String?, Any?)
77+
fun getTag(String?): Any?
78+
fun setMetric(String, Int)
79+
fun logThrowable(Throwable)
80+
fun logErrorMessage(String)
81+
fun logMessage(String)
82+
fun logAttributes(Map<String, Any>)
83+
interface com.datadog.android.trace.api.span.DatadogSpanBuilder
84+
fun start(): DatadogSpan
85+
fun withOrigin(String?): DatadogSpanBuilder
86+
fun withTag(String, Double?): DatadogSpanBuilder
87+
fun withTag(String, Long?): DatadogSpanBuilder
88+
fun withTag(String, Any?): DatadogSpanBuilder
89+
fun withResourceName(String?): DatadogSpanBuilder
90+
fun withParentContext(DatadogSpanContext?): DatadogSpanBuilder
91+
fun withParentSpan(DatadogSpan?): DatadogSpanBuilder
92+
fun withStartTimestamp(Long): DatadogSpanBuilder
93+
fun ignoreActiveSpan(): DatadogSpanBuilder
94+
fun withLink(DatadogSpanLink): DatadogSpanBuilder
95+
interface com.datadog.android.trace.api.span.DatadogSpanContext
96+
val traceId: com.datadog.android.trace.api.trace.DatadogTraceId
97+
val spanId: Long
98+
val samplingPriority: Int
99+
val tags: Map<String, Any?>
100+
fun setSamplingPriority(Int): Boolean
101+
fun setMetric(CharSequence?, Double)
102+
interface com.datadog.android.trace.api.span.DatadogSpanLink
103+
val spanId: Long
104+
val sampled: Boolean
105+
val traceId: com.datadog.android.trace.api.trace.DatadogTraceId
106+
val traceStrace: String
107+
val attributes: Map<String, String>?
108+
interface com.datadog.android.trace.api.span.DatadogSpanWriter
109+
interface com.datadog.android.trace.api.trace.DatadogTraceId
110+
fun toHexStringPadded(Int): String
111+
fun toHexString(): String
112+
fun toLong(): Long
113+
companion object
114+
interface com.datadog.android.trace.api.tracer.DatadogTracer
115+
fun activeSpan(): com.datadog.android.trace.api.span.DatadogSpan?
116+
fun propagate(): com.datadog.android.trace.api.propagation.DatadogPropagation
117+
fun activateSpan(com.datadog.android.trace.api.span.DatadogSpan): com.datadog.android.trace.api.scope.DatadogScope?
118+
fun activateSpan(com.datadog.android.trace.api.span.DatadogSpan, Boolean): com.datadog.android.trace.api.scope.DatadogScope?
119+
fun buildSpan(CharSequence): com.datadog.android.trace.api.span.DatadogSpanBuilder
120+
fun buildSpan(String, CharSequence): com.datadog.android.trace.api.span.DatadogSpanBuilder
121+
fun addScopeListener(com.datadog.android.trace.api.scope.DatadogScopeListener)
122+
interface com.datadog.android.trace.api.tracer.DatadogTracerBuilder
123+
fun build(): DatadogTracer
124+
fun withTracingHeadersTypes(Set<com.datadog.android.trace.TracingHeaderType>): DatadogTracerBuilder
125+
fun withServiceName(String): DatadogTracerBuilder
126+
fun withSampleRate(Double): DatadogTracerBuilder
127+
fun withPartialFlushMinSpans(Int): DatadogTracerBuilder
128+
fun withTag(String, String): DatadogTracerBuilder
129+
fun setBundleWithRumEnabled(Boolean): DatadogTracerBuilder

0 commit comments

Comments
 (0)