Skip to content

Commit 5f7e7fe

Browse files
committed
refactor: use kotlin api for TracerProvider
1 parent 2058d65 commit 5f7e7fe

File tree

19 files changed

+97
-54
lines changed

19 files changed

+97
-54
lines changed

embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/injection/OpenTelemetryModuleImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ internal class OpenTelemetryModuleImpl(
157157

158158
override val externalTracerProvider: OtelJavaTracerProvider by lazy {
159159
EmbOtelJavaTracerProvider(
160-
sdkTracerProvider = otelSdkWrapper.sdkTracerProvider,
160+
sdkTracerProvider = otelSdkWrapper.kotlinApi.tracerProvider,
161161
spanService = spanService,
162162
clock = openTelemetryClock,
163163
)

embrace-android-otel/src/main/kotlin/io/embrace/android/embracesdk/internal/otel/impl/EmbOtelJavaTracer.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@ import io.embrace.android.embracesdk.internal.otel.schema.EmbType
44
import io.embrace.android.embracesdk.internal.otel.sdk.otelSpanCreator
55
import io.embrace.android.embracesdk.internal.otel.spans.SpanService
66
import io.embrace.android.embracesdk.internal.otel.spans.getEmbraceSpan
7+
import io.embrace.opentelemetry.kotlin.ExperimentalApi
78
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaClock
89
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaContext
910
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaSpanBuilder
1011
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaTracer
11-
import io.embrace.opentelemetry.kotlin.k2j.ClockAdapter
12+
import io.embrace.opentelemetry.kotlin.tracing.Tracer
1213

14+
@OptIn(ExperimentalApi::class)
1315
class EmbOtelJavaTracer(
14-
private val sdkTracer: OtelJavaTracer,
16+
private val sdkTracer: Tracer,
1517
private val spanService: SpanService,
1618
private val clock: OtelJavaClock,
1719
) : OtelJavaTracer {
@@ -24,7 +26,6 @@ class EmbOtelJavaTracer(
2426
private = false,
2527
internal = false,
2628
parent = OtelJavaContext.current().getEmbraceSpan(),
27-
clock = ClockAdapter(clock),
2829
),
2930
spanService = spanService,
3031
clock = clock,

embrace-android-otel/src/main/kotlin/io/embrace/android/embracesdk/internal/otel/impl/EmbOtelJavaTracerProvider.kt

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,18 @@ package io.embrace.android.embracesdk.internal.otel.impl
22

33
import io.embrace.android.embracesdk.internal.otel.sdk.TracerKey
44
import io.embrace.android.embracesdk.internal.otel.spans.SpanService
5+
import io.embrace.opentelemetry.kotlin.ExperimentalApi
56
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaClock
67
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaTracer
78
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaTracerBuilder
89
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaTracerProvider
10+
import io.embrace.opentelemetry.kotlin.tracing.Tracer
11+
import io.embrace.opentelemetry.kotlin.tracing.TracerProvider
912
import java.util.concurrent.ConcurrentHashMap
1013

14+
@OptIn(ExperimentalApi::class)
1115
class EmbOtelJavaTracerProvider(
12-
private val sdkTracerProvider: OtelJavaTracerProvider,
16+
private val sdkTracerProvider: TracerProvider,
1317
private val spanService: SpanService,
1418
private val clock: OtelJavaClock,
1519
) : OtelJavaTracerProvider {
@@ -45,14 +49,11 @@ class EmbOtelJavaTracerProvider(
4549
return tracer
4650
}
4751

48-
private fun buildSdkTracer(key: TracerKey): OtelJavaTracer {
49-
val builder = sdkTracerProvider.tracerBuilder(key.instrumentationScopeName)
50-
key.instrumentationScopeVersion?.apply {
51-
builder.setInstrumentationVersion(this)
52-
}
53-
key.schemaUrl?.apply {
54-
builder.setSchemaUrl(this)
55-
}
56-
return builder.build()
52+
private fun buildSdkTracer(key: TracerKey): Tracer {
53+
return sdkTracerProvider.getTracer(
54+
name = key.instrumentationScopeName,
55+
version = key.instrumentationScopeVersion,
56+
schemaUrl = key.schemaUrl
57+
)
5758
}
5859
}

embrace-android-otel/src/main/kotlin/io/embrace/android/embracesdk/internal/otel/sdk/OtelSdkWrapper.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class OtelSdkWrapper(
4141
System.setProperty("io.opentelemetry.context.contextStorageProvider", "default")
4242
}
4343

44-
val sdkTracerProvider: OtelJavaSdkTracerProvider by lazy {
44+
private val otelJavaSdkTracerProvider: OtelJavaSdkTracerProvider by lazy {
4545
EmbTrace.trace("otel-tracer-provider-init") {
4646
OtelJavaSdkTracerProvider
4747
.builder()
@@ -78,7 +78,7 @@ class OtelSdkWrapper(
7878
EmbTrace.trace("otel-sdk-init") {
7979
OtelJavaOpenTelemetrySdk
8080
.builder()
81-
.setTracerProvider(sdkTracerProvider)
81+
.setTracerProvider(otelJavaSdkTracerProvider)
8282
.setLoggerProvider(
8383
OtelJavaSdkLoggerProvider
8484
.builder()

embrace-android-otel/src/test/kotlin/io/embrace/android/embracesdk/internal/otel/impl/EmbOpenTelemetryTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package io.embrace.android.embracesdk.internal.otel.impl
22

3-
import io.embrace.android.embracesdk.fakes.FakeTracerProvider
3+
import io.embrace.android.embracesdk.fakes.FakeOtelJavaTracerProvider
44
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaContextPropagators
55
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaLoggerProvider
66
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaOpenTelemetry
@@ -12,12 +12,12 @@ import org.junit.Before
1212
import org.junit.Test
1313

1414
internal class EmbOpenTelemetryTest {
15-
private lateinit var tracerProvider: FakeTracerProvider
15+
private lateinit var tracerProvider: FakeOtelJavaTracerProvider
1616
private lateinit var openTelemetry: EmbOtelJavaOpenTelemetry
1717

1818
@Before
1919
fun setup() {
20-
tracerProvider = FakeTracerProvider()
20+
tracerProvider = FakeOtelJavaTracerProvider()
2121
openTelemetry = EmbOtelJavaOpenTelemetry { tracerProvider }
2222
}
2323

embrace-android-otel/src/test/kotlin/io/embrace/android/embracesdk/internal/otel/impl/EmbSpanBuilderTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ package io.embrace.android.embracesdk.internal.otel.impl
33
import io.embrace.android.embracesdk.fakes.FakeClock
44
import io.embrace.android.embracesdk.fakes.FakeEmbraceSdkSpan
55
import io.embrace.android.embracesdk.fakes.FakeOpenTelemetryClock
6+
import io.embrace.android.embracesdk.fakes.FakeOtelJavaTracer
67
import io.embrace.android.embracesdk.fakes.FakeSpanService
7-
import io.embrace.android.embracesdk.fakes.FakeTracer
88
import io.embrace.android.embracesdk.fixtures.fakeContextKey
99
import io.embrace.android.embracesdk.internal.otel.schema.EmbType
1010
import io.embrace.android.embracesdk.internal.otel.spans.OtelSpanCreator
@@ -41,7 +41,7 @@ internal class EmbSpanBuilderTest {
4141
@Before
4242
fun setup() {
4343
spanService = FakeSpanService()
44-
tracer = TracerAdapter(FakeTracer(), ClockAdapter(openTelemetryClock))
44+
tracer = TracerAdapter(FakeOtelJavaTracer(), ClockAdapter(openTelemetryClock))
4545
creator = OtelSpanCreator(
4646
tracer = tracer,
4747
spanStartArgs = OtelSpanStartArgs(

embrace-android-otel/src/test/kotlin/io/embrace/android/embracesdk/internal/otel/impl/EmbTracerBuilderTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package io.embrace.android.embracesdk.internal.otel.impl
22

3-
import io.embrace.android.embracesdk.fakes.FakeTracer
3+
import io.embrace.android.embracesdk.fakes.FakeOtelJavaTracer
44
import io.embrace.android.embracesdk.internal.otel.sdk.TracerKey
55
import org.junit.Assert.assertEquals
66
import org.junit.Test
@@ -15,9 +15,9 @@ internal class EmbTracerBuilderTest {
1515
tracerSupplier = ::createTracer
1616
)
1717

18-
val tracer = embTracerBuilder.setSchemaUrl("url").setInstrumentationVersion("v1").build() as FakeTracer
18+
val tracer = embTracerBuilder.setSchemaUrl("url").setInstrumentationVersion("v1").build() as FakeOtelJavaTracer
1919
assertEquals(expectedKey, tracer.tracerKey)
2020
}
2121

22-
private fun createTracer(key: TracerKey): FakeTracer = FakeTracer(tracerKey = key)
22+
private fun createTracer(key: TracerKey): FakeOtelJavaTracer = FakeOtelJavaTracer(tracerKey = key)
2323
}

embrace-android-otel/src/test/kotlin/io/embrace/android/embracesdk/internal/otel/impl/EmbTracerProviderTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ import io.embrace.android.embracesdk.fakes.FakeClock
44
import io.embrace.android.embracesdk.fakes.FakeOpenTelemetryClock
55
import io.embrace.android.embracesdk.fakes.FakeSpanService
66
import io.embrace.android.embracesdk.fakes.FakeTracerProvider
7+
import io.embrace.opentelemetry.kotlin.ExperimentalApi
78
import org.junit.Assert.assertNotSame
89
import org.junit.Assert.assertSame
910
import org.junit.Assert.assertTrue
1011
import org.junit.Before
1112
import org.junit.Test
1213

14+
@OptIn(ExperimentalApi::class)
1315
internal class EmbTracerProviderTest {
1416
private val clock = FakeClock()
1517
private val openTelemetryClock = FakeOpenTelemetryClock(clock)

embrace-android-otel/src/test/kotlin/io/embrace/android/embracesdk/internal/otel/impl/EmbTracerTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ import io.embrace.android.embracesdk.fakes.FakeOpenTelemetryClock
55
import io.embrace.android.embracesdk.fakes.FakeSpanService
66
import io.embrace.android.embracesdk.fakes.FakeTracer
77
import io.embrace.android.embracesdk.internal.otel.schema.EmbType
8+
import io.embrace.opentelemetry.kotlin.ExperimentalApi
89
import org.junit.Assert.assertEquals
910
import org.junit.Assert.assertNull
1011
import org.junit.Before
1112
import org.junit.Test
1213

14+
@OptIn(ExperimentalApi::class)
1315
internal class EmbTracerTest {
1416
private val clock = FakeClock()
1517
private val openTelemetryClock = FakeOpenTelemetryClock(clock)

embrace-android-otel/src/test/kotlin/io/embrace/android/embracesdk/internal/otel/sdk/OpenTelemetrySdkTest.kt

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -85,14 +85,12 @@ internal class OpenTelemetrySdkTest {
8585

8686
@Test
8787
fun `instrumentation scope set properly on external tracer`() {
88-
sdk.sdkTracerProvider
89-
.tracerBuilder("testScope")
90-
.setInstrumentationVersion("v1")
91-
.setSchemaUrl("url")
92-
.build()
93-
.spanBuilder("test")
94-
.startSpan()
95-
.end()
88+
val tracer = sdk.kotlinApi.tracerProvider.getTracer(
89+
name = "testScope",
90+
version = "v1",
91+
schemaUrl = "url"
92+
)
93+
tracer.createSpan("test").end()
9694
with(spanExporter.exportedSpans.single().instrumentationScopeInfo) {
9795
assertEquals("testScope", name)
9896
assertEquals("v1", version)

0 commit comments

Comments
 (0)