Skip to content

Commit

Permalink
Delete EmbraceAttributes.Type and consolidate on EmbType
Browse files Browse the repository at this point in the history
  • Loading branch information
bidetofevil committed Mar 11, 2024
1 parent 3b808fd commit e3c84d8
Show file tree
Hide file tree
Showing 15 changed files with 70 additions and 75 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package io.embrace.android.embracesdk.internal.spans
import io.embrace.android.embracesdk.arch.destination.SessionSpanWriter
import io.embrace.android.embracesdk.arch.destination.SpanAttributeData
import io.embrace.android.embracesdk.arch.destination.SpanEventData
import io.embrace.android.embracesdk.arch.schema.EmbType
import io.embrace.android.embracesdk.internal.clock.nanosToMillis
import io.embrace.android.embracesdk.internal.utils.Provider
import io.embrace.android.embracesdk.spans.EmbraceSpan
Expand Down Expand Up @@ -110,7 +111,7 @@ internal class CurrentSessionSpanImpl(
val spanBuilder = createEmbraceSpanBuilder(
tracer = tracerSupplier(),
name = "session",
type = EmbraceAttributes.Type.SESSION
type = EmbType.Ux.Session
)
.setNoParent()
.setStartTimestamp(startTimeMs, TimeUnit.MILLISECONDS)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.embrace.android.embracesdk.internal.spans

import io.embrace.android.embracesdk.arch.schema.TelemetryType
import io.embrace.android.embracesdk.internal.spans.EmbraceAttributes.Attribute
import io.embrace.android.embracesdk.internal.utils.Provider
import io.embrace.android.embracesdk.spans.EmbraceSpan
Expand Down Expand Up @@ -68,7 +69,7 @@ internal fun Tracer.embraceSpanBuilder(name: String, internal: Boolean): SpanBui
internal fun createEmbraceSpanBuilder(
tracer: Tracer,
name: String,
type: EmbraceAttributes.Type,
type: TelemetryType,
internal: Boolean = true
): SpanBuilder = tracer.embraceSpanBuilder(name, internal).setType(type)

Expand All @@ -78,15 +79,15 @@ internal fun createEmbraceSpanBuilder(
internal fun createRootSpanBuilder(
tracer: Tracer,
name: String,
type: EmbraceAttributes.Type,
type: TelemetryType,
internal: Boolean
): SpanBuilder = createEmbraceSpanBuilder(tracer = tracer, name = name, type = type, internal = internal).setNoParent()

/**
* Sets and returns the [EmbraceAttributes.Type] attribute for the given [SpanBuilder]
*/
internal fun SpanBuilder.setType(value: EmbraceAttributes.Type): SpanBuilder {
setAttribute(value.keyName(), value.typeName)
internal fun SpanBuilder.setType(value: TelemetryType): SpanBuilder {
setAttribute(value.attributeName(), value.description)
return this
}

Expand Down Expand Up @@ -233,25 +234,6 @@ internal fun String.toEmbraceUsageAttributeName(): String = EMBRACE_USAGE_ATTRIB
* in the Embrace world. Each enum defines the attribute name used in the [Span] and specifies the set of valid values it can be set to.
*/
internal object EmbraceAttributes {

/**
* Attribute to categorize a [Span] and give it a distinct semantic meaning. Spans of each [Type] may be treated differently by the
* backend and can be expected to contain a set of attributes to further flesh out the given semantic meanings.
*/
internal enum class Type(val typeName: String) : Attribute {
/**
* Spans that model an Embrace session or background activity.
*/
SESSION("ux.session"),

/**
* A [Span] created by an SDK user to measure the performance of an operation
*/
PERFORMANCE("performance");

override val canonicalName = "type"
}

/**
* The reason for the termination of a process span
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.embrace.android.embracesdk.internal.spans

import io.embrace.android.embracesdk.arch.schema.TelemetryType
import io.embrace.android.embracesdk.internal.utils.Provider
import io.embrace.android.embracesdk.spans.EmbraceSpan
import io.embrace.android.embracesdk.spans.EmbraceSpanEvent
Expand Down Expand Up @@ -42,13 +43,13 @@ internal class EmbraceSpanService(

override fun initialized(): Boolean = currentDelegate is SpanServiceImpl

override fun createSpan(name: String, parent: EmbraceSpan?, type: EmbraceAttributes.Type, internal: Boolean): EmbraceSpan? =
override fun createSpan(name: String, parent: EmbraceSpan?, type: TelemetryType, internal: Boolean): EmbraceSpan? =
currentDelegate.createSpan(name = name, parent = parent, type = type, internal = internal)

override fun <T> recordSpan(
name: String,
parent: EmbraceSpan?,
type: EmbraceAttributes.Type,
type: TelemetryType,
internal: Boolean,
attributes: Map<String, String>,
events: List<EmbraceSpanEvent>,
Expand All @@ -68,7 +69,7 @@ internal class EmbraceSpanService(
startTimeMs: Long,
endTimeMs: Long,
parent: EmbraceSpan?,
type: EmbraceAttributes.Type,
type: TelemetryType,
internal: Boolean,
attributes: Map<String, String>,
events: List<EmbraceSpanEvent>,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package io.embrace.android.embracesdk.internal.spans

import io.embrace.android.embracesdk.arch.schema.EmbType
import io.embrace.android.embracesdk.arch.schema.TelemetryType
import io.embrace.android.embracesdk.internal.Initializable
import io.embrace.android.embracesdk.spans.EmbraceSpan
import io.embrace.android.embracesdk.spans.EmbraceSpanEvent
Expand All @@ -16,7 +18,7 @@ internal interface SpanService : Initializable {
fun createSpan(
name: String,
parent: EmbraceSpan? = null,
type: EmbraceAttributes.Type = EmbraceAttributes.Type.PERFORMANCE,
type: TelemetryType = EmbType.Performance,
internal: Boolean = true
): EmbraceSpan?

Expand All @@ -27,7 +29,7 @@ internal interface SpanService : Initializable {
name: String,
parent: EmbraceSpan? = null,
startTimeMs: Long? = null,
type: EmbraceAttributes.Type = EmbraceAttributes.Type.PERFORMANCE,
type: TelemetryType = EmbType.Performance,
internal: Boolean = true
): EmbraceSpan? {
createSpan(
Expand All @@ -51,7 +53,7 @@ internal interface SpanService : Initializable {
fun <T> recordSpan(
name: String,
parent: EmbraceSpan? = null,
type: EmbraceAttributes.Type = EmbraceAttributes.Type.PERFORMANCE,
type: TelemetryType = EmbType.Performance,
internal: Boolean = true,
attributes: Map<String, String> = emptyMap(),
events: List<EmbraceSpanEvent> = emptyList(),
Expand All @@ -67,7 +69,7 @@ internal interface SpanService : Initializable {
startTimeMs: Long,
endTimeMs: Long,
parent: EmbraceSpan? = null,
type: EmbraceAttributes.Type = EmbraceAttributes.Type.PERFORMANCE,
type: TelemetryType = EmbType.Performance,
internal: Boolean = true,
attributes: Map<String, String> = emptyMap(),
events: List<EmbraceSpanEvent> = emptyList(),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.embrace.android.embracesdk.internal.spans

import io.embrace.android.embracesdk.arch.schema.TelemetryType
import io.embrace.android.embracesdk.spans.EmbraceSpan
import io.embrace.android.embracesdk.spans.EmbraceSpanEvent
import io.embrace.android.embracesdk.spans.ErrorCode
Expand Down Expand Up @@ -27,7 +28,7 @@ internal class SpanServiceImpl(

override fun initialized(): Boolean = initialized.get()

override fun createSpan(name: String, parent: EmbraceSpan?, type: EmbraceAttributes.Type, internal: Boolean): EmbraceSpan? {
override fun createSpan(name: String, parent: EmbraceSpan?, type: TelemetryType, internal: Boolean): EmbraceSpan? {
return if (EmbraceSpanImpl.inputsValid(name) && currentSessionSpan.canStartNewSpan(parent, internal)) {
EmbraceSpanImpl(
spanBuilder = createRootSpanBuilder(tracer = tracer, name = name, type = type, internal = internal),
Expand All @@ -42,7 +43,7 @@ internal class SpanServiceImpl(
override fun <T> recordSpan(
name: String,
parent: EmbraceSpan?,
type: EmbraceAttributes.Type,
type: TelemetryType,
internal: Boolean,
attributes: Map<String, String>,
events: List<EmbraceSpanEvent>,
Expand All @@ -62,7 +63,7 @@ internal class SpanServiceImpl(
startTimeMs: Long,
endTimeMs: Long,
parent: EmbraceSpan?,
type: EmbraceAttributes.Type,
type: TelemetryType,
internal: Boolean,
attributes: Map<String, String>,
events: List<EmbraceSpanEvent>,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.embrace.android.embracesdk.internal.spans

import io.embrace.android.embracesdk.annotation.InternalApi
import io.embrace.android.embracesdk.arch.schema.TelemetryType
import io.embrace.android.embracesdk.spans.EmbraceSpan
import io.embrace.android.embracesdk.spans.EmbraceSpanEvent
import io.embrace.android.embracesdk.spans.ErrorCode
Expand All @@ -21,12 +22,12 @@ internal class UninitializedSdkSpanService : SpanService {

override fun initialized(): Boolean = true

override fun createSpan(name: String, parent: EmbraceSpan?, type: EmbraceAttributes.Type, internal: Boolean): EmbraceSpan? = null
override fun createSpan(name: String, parent: EmbraceSpan?, type: TelemetryType, internal: Boolean): EmbraceSpan? = null

override fun <T> recordSpan(
name: String,
parent: EmbraceSpan?,
type: EmbraceAttributes.Type,
type: TelemetryType,
internal: Boolean,
attributes: Map<String, String>,
events: List<EmbraceSpanEvent>,
Expand All @@ -38,7 +39,7 @@ internal class UninitializedSdkSpanService : SpanService {
startTimeMs: Long,
endTimeMs: Long,
parent: EmbraceSpan?,
type: EmbraceAttributes.Type,
type: TelemetryType,
internal: Boolean,
attributes: Map<String, String>,
events: List<EmbraceSpanEvent>,
Expand Down Expand Up @@ -116,7 +117,7 @@ internal class UninitializedSdkSpanService : SpanService {
val startTimeMs: Long,
val endTimeMs: Long,
val parent: EmbraceSpan?,
val type: EmbraceAttributes.Type,
val type: TelemetryType,
val internal: Boolean,
val attributes: Map<String, String>,
val events: List<EmbraceSpanEvent>,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package io.embrace.android.embracesdk.capture.crumbs

import io.embrace.android.embracesdk.arch.schema.EmbType
import io.embrace.android.embracesdk.fakes.FakeClock
import io.embrace.android.embracesdk.fakes.FakeConfigService
import io.embrace.android.embracesdk.fakes.FakeSpanService
import io.embrace.android.embracesdk.internal.spans.EmbraceAttributes
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
Expand Down Expand Up @@ -35,7 +35,7 @@ internal class FragmentBreadcrumbDataSourceTest {

val span = spanService.createdSpans.single()
assertEquals("view-breadcrumb", span.name)
assertEquals(EmbraceAttributes.Type.PERFORMANCE, span.type)
assertEquals(EmbType.Performance, span.type)
assertTrue(span.isRecording)
assertEquals(
mapOf(
Expand All @@ -54,7 +54,7 @@ internal class FragmentBreadcrumbDataSourceTest {

val span = spanService.createdSpans.single()
assertEquals("view-breadcrumb", span.name)
assertEquals(EmbraceAttributes.Type.PERFORMANCE, span.type)
assertEquals(EmbType.Performance, span.type)
assertFalse(span.isRecording)
assertEquals(
mapOf(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.embrace.android.embracesdk.capture.startup

import io.embrace.android.embracesdk.arch.schema.EmbType
import io.embrace.android.embracesdk.concurrency.BlockableExecutorService
import io.embrace.android.embracesdk.fakes.FakeClock
import io.embrace.android.embracesdk.fakes.injection.FakeInitModule
Expand Down Expand Up @@ -50,8 +51,8 @@ internal class StartupServiceImplTest {
assertEquals(startTimeMillis, startTimeNanos.nanosToMillis())
assertEquals(endTimeMillis, endTimeNanos.nanosToMillis())
assertEquals(
io.embrace.android.embracesdk.internal.spans.EmbraceAttributes.Type.PERFORMANCE.typeName,
attributes[io.embrace.android.embracesdk.internal.spans.EmbraceAttributes.Type.PERFORMANCE.keyName()]
EmbType.Performance.description,
attributes[EmbType.Performance.attributeName()]
)
assertTrue(isPrivate())
assertEquals(StatusCode.OK, status)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
package io.embrace.android.embracesdk.fakes

import io.embrace.android.embracesdk.arch.destination.SpanEventData
import io.embrace.android.embracesdk.arch.schema.EmbType
import io.embrace.android.embracesdk.arch.schema.SchemaType
import io.embrace.android.embracesdk.internal.spans.EmbraceAttributes
import io.embrace.android.embracesdk.arch.schema.TelemetryType
import io.embrace.android.embracesdk.spans.EmbraceSpan
import io.embrace.android.embracesdk.spans.ErrorCode
import io.opentelemetry.sdk.trace.IdGenerator

internal class FakeEmbraceSpan(
override val parent: EmbraceSpan?,
val name: String? = null,
val type: EmbraceAttributes.Type = EmbraceAttributes.Type.PERFORMANCE,
val type: TelemetryType = EmbType.Performance,
val internal: Boolean = true
) : EmbraceSpan {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.embrace.android.embracesdk.fakes

import io.embrace.android.embracesdk.internal.spans.EmbraceAttributes
import io.embrace.android.embracesdk.arch.schema.TelemetryType
import io.embrace.android.embracesdk.internal.spans.SpanService
import io.embrace.android.embracesdk.spans.EmbraceSpan
import io.embrace.android.embracesdk.spans.EmbraceSpanEvent
Expand All @@ -18,7 +18,7 @@ internal class FakeSpanService : SpanService {
override fun createSpan(
name: String,
parent: EmbraceSpan?,
type: EmbraceAttributes.Type,
type: TelemetryType,
internal: Boolean
): EmbraceSpan = FakeEmbraceSpan(null, name, type, internal).apply {
createdSpans.add(this)
Expand All @@ -27,7 +27,7 @@ internal class FakeSpanService : SpanService {
override fun <T> recordSpan(
name: String,
parent: EmbraceSpan?,
type: EmbraceAttributes.Type,
type: TelemetryType,
internal: Boolean,
attributes: Map<String, String>,
events: List<EmbraceSpanEvent>,
Expand All @@ -41,7 +41,7 @@ internal class FakeSpanService : SpanService {
startTimeMs: Long,
endTimeMs: Long,
parent: EmbraceSpan?,
type: EmbraceAttributes.Type,
type: TelemetryType,
internal: Boolean,
attributes: Map<String, String>,
events: List<EmbraceSpanEvent>,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package io.embrace.android.embracesdk.internal.spans

import io.embrace.android.embracesdk.arch.destination.SpanAttributeData
import io.embrace.android.embracesdk.arch.destination.SpanEventData
import io.embrace.android.embracesdk.arch.schema.EmbType
import io.embrace.android.embracesdk.arch.schema.SchemaType
import io.embrace.android.embracesdk.fakes.FakeClock
import io.embrace.android.embracesdk.fakes.injection.FakeInitModule
Expand Down Expand Up @@ -140,10 +141,7 @@ internal class CurrentSessionSpanImplTests {
val lastFlushedSpan = flushedSpans[0]
with(lastFlushedSpan) {
assertEquals("emb-session", name)
assertEquals(
EmbraceAttributes.Type.SESSION.typeName,
attributes[EmbraceAttributes.Type.SESSION.keyName()]
)
assertEquals(EmbType.Ux.Session.description, attributes[EmbType.Ux.Session.attributeName()])
assertEquals(StatusCode.OK, status)
assertFalse(isKey())
assertEquals(it.name, attributes[it.keyName()])
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.embrace.android.embracesdk.internal.spans

import io.embrace.android.embracesdk.arch.schema.EmbType
import io.embrace.android.embracesdk.fakes.FakeClock
import io.embrace.android.embracesdk.fakes.injection.FakeInitModule
import io.embrace.android.embracesdk.internal.clock.nanosToMillis
Expand Down Expand Up @@ -58,7 +59,7 @@ internal class EmbraceSpanServiceTest {
val expectedName = "test-span"
val expectedStartTimeMs = clock.now()
val expectedEndTimeMs = expectedStartTimeMs + 100L
val expectedType = EmbraceAttributes.Type.PERFORMANCE
val expectedType = EmbType.Performance
val expectedAttributes = mapOf(
Pair("attribute1", "value1"),
Pair("attribute2", "value2")
Expand Down Expand Up @@ -86,7 +87,10 @@ internal class EmbraceSpanServiceTest {
assertEquals(name, name)
assertEquals(expectedStartTimeMs, startTimeNanos.nanosToMillis())
assertEquals(expectedEndTimeMs, endTimeNanos.nanosToMillis())
assertEquals(expectedType.typeName, attributes[EmbraceAttributes.Type.PERFORMANCE.keyName()])
assertEquals(
EmbType.Performance.description,
attributes[EmbType.Performance.attributeName()]
)
expectedAttributes.forEach {
assertEquals(it.value, attributes[it.key])
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.embrace.android.embracesdk.internal.spans

import io.embrace.android.embracesdk.arch.schema.EmbType
import io.embrace.android.embracesdk.fakes.FakeClock
import io.embrace.android.embracesdk.fakes.injection.FakeInitModule
import io.embrace.android.embracesdk.fixtures.TOO_LONG_SPAN_NAME
Expand Down Expand Up @@ -315,8 +316,8 @@ internal class EmbraceTracerTest {
val currentSpan = currentSpans[0]
assertEquals(name, currentSpan.name)
assertEquals(
EmbraceAttributes.Type.PERFORMANCE.typeName,
currentSpan.attributes[EmbraceAttributes.Type.PERFORMANCE.keyName()]
EmbType.Performance.description,
currentSpan.attributes[EmbType.Performance.attributeName()]
)
assertEquals(if (traceRoot) "true" else null, currentSpan.attributes["emb.key"])
assertEquals(errorCode?.name, currentSpan.attributes[errorCode?.keyName()])
Expand Down
Loading

0 comments on commit e3c84d8

Please sign in to comment.