Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ enum class LifecycleStage(private val typeName: String) {
CREATE("create"),
START("start"),
RESUME("resume"),
RENDER("render");
RENDER("render"),
READY("ready");

fun spanName(componentName: String): String = "$componentName-$typeName"
}
Original file line number Diff line number Diff line change
Expand Up @@ -107,11 +107,19 @@
timestampMs = timestampMs,
lifecycleStage = LifecycleStage.RESUME
)
} else if (traceCompleteTrigger(instanceId) == TraceCompleteTrigger.RESUME) {
endTrace(
instanceId = instanceId,
timestampMs = timestampMs,
)
} else {
if (traceCompleteTrigger(instanceId) == TraceCompleteTrigger.RESUME) {
endTrace(
instanceId = instanceId,
timestampMs = timestampMs,
)
} else if (!hasRenderEvent && traceCompleteTrigger(instanceId) == TraceCompleteTrigger.MANUAL) {
startChildSpan(
instanceId = instanceId,
timestampMs = timestampMs,
lifecycleStage = LifecycleStage.READY
)
}
}
}

Expand All @@ -122,11 +130,18 @@
lifecycleStage = LifecycleStage.RESUME
)

if (traceCompleteTrigger(instanceId) == TraceCompleteTrigger.RESUME) {
val endType = traceCompleteTrigger(instanceId)
if (endType == TraceCompleteTrigger.RESUME) {
endTrace(
instanceId = instanceId,
timestampMs = timestampMs,
)
} else if (!hasRenderEvent && endType == TraceCompleteTrigger.MANUAL) {
startChildSpan(
instanceId = instanceId,
timestampMs = timestampMs,
lifecycleStage = LifecycleStage.READY
)
}
}

Expand All @@ -148,17 +163,35 @@
lifecycleStage = LifecycleStage.RENDER
)

if (traceCompleteTrigger(instanceId) == TraceCompleteTrigger.RENDER) {
endTrace(
instanceId = instanceId,
timestampMs = timestampMs,
)
val endType = traceCompleteTrigger(instanceId)

Check warning on line 166 in embrace-android-features/src/main/kotlin/io/embrace/android/embracesdk/internal/capture/activity/UiLoadTraceEmitter.kt

View check run for this annotation

Codecov / codecov/patch

embrace-android-features/src/main/kotlin/io/embrace/android/embracesdk/internal/capture/activity/UiLoadTraceEmitter.kt#L166

Added line #L166 was not covered by tests
when (endType) {
TraceCompleteTrigger.RENDER -> {
endTrace(
instanceId = instanceId,
timestampMs = timestampMs,

Check warning on line 171 in embrace-android-features/src/main/kotlin/io/embrace/android/embracesdk/internal/capture/activity/UiLoadTraceEmitter.kt

View check run for this annotation

Codecov / codecov/patch

embrace-android-features/src/main/kotlin/io/embrace/android/embracesdk/internal/capture/activity/UiLoadTraceEmitter.kt#L169-L171

Added lines #L169 - L171 were not covered by tests
)
}

TraceCompleteTrigger.MANUAL -> {
startChildSpan(
instanceId = instanceId,
timestampMs = timestampMs,
lifecycleStage = LifecycleStage.READY

Check warning on line 179 in embrace-android-features/src/main/kotlin/io/embrace/android/embracesdk/internal/capture/activity/UiLoadTraceEmitter.kt

View check run for this annotation

Codecov / codecov/patch

embrace-android-features/src/main/kotlin/io/embrace/android/embracesdk/internal/capture/activity/UiLoadTraceEmitter.kt#L176-L179

Added lines #L176 - L179 were not covered by tests
)
}

else -> {}
}
}
}

override fun complete(instanceId: Int, timestampMs: Long) {
if (traceCompleteTrigger(instanceId) == TraceCompleteTrigger.MANUAL) {
endChildSpan(
instanceId = instanceId,
timestampMs = timestampMs,
lifecycleStage = LifecycleStage.READY
)
endTrace(
instanceId = instanceId,
timestampMs = timestampMs,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -298,10 +298,17 @@ internal class UiLoadTraceEmitterTest {
}
}

val traceEndTime = trace.endTimeNanos.nanosToMillis()
if (manualEnd) {
assertNotEquals(trace.endTimeNanos.nanosToMillis(), lastEventEndTimeMs)
assertEmbraceSpanData(
span = checkNotNull(spanMap["emb-$activityName-ready"]).toNewPayload(),
expectedStartTimeMs = lastEventEndTimeMs,
expectedEndTimeMs = traceEndTime,
expectedParentId = trace.spanId
)
assertNotEquals(traceEndTime, lastEventEndTimeMs)
} else {
assertEquals(trace.endTimeNanos.nanosToMillis(), lastEventEndTimeMs)
assertEquals(traceEndTime, lastEventEndTimeMs)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import io.embrace.android.embracesdk.testframework.actions.EmbraceActionInterfac
import io.embrace.android.embracesdk.testframework.actions.EmbraceActionInterface.Companion.STARTUP_BACKGROUND_TIME
import io.opentelemetry.api.trace.SpanId
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNotNull
import org.junit.Assert.assertTrue
import org.junit.Rule
import org.junit.Test
Expand Down Expand Up @@ -149,6 +150,10 @@ internal class UiLoadTest {
expectedCustomAttributes = mapOf("manual-end" to "true")
)

assertNotNull(findSpansByName("emb-$MANUAL_STOP_ACTIVITY_NAME-create").single())
assertNotNull(findSpansByName("emb-$MANUAL_STOP_ACTIVITY_NAME-start").single())
assertNotNull(findSpansByName("emb-$MANUAL_STOP_ACTIVITY_NAME-ready").single())

assertEmbraceSpanData(
span = findSpansByName("loading-time").single(),
expectedStartTimeMs = expectedTraceStartTime + calculateTotalTime(lifecycleStages = 3),
Expand Down
Loading