Skip to content

Commit

Permalink
populate fields from new payload
Browse files Browse the repository at this point in the history
  • Loading branch information
fractalwrench committed Mar 14, 2024
1 parent 8210d0d commit f88ca2d
Show file tree
Hide file tree
Showing 8 changed files with 55 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ internal class SessionEnvelopeSource(
return Envelope(
resourceSource.getEnvelopeResource(),
metadataSource.getEnvelopeMetadata(),
null,
null,
"0.1.0",
"session",
sessionPayloadSource.getSessionPayload(endType)
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ internal data class SessionMessage @JvmOverloads internal constructor(
val spans: List<EmbraceSpanData>? = null,

@Json(name = "v")
val version: Int = ApiClient.MESSAGE_VERSION,
val version: Int? = ApiClient.MESSAGE_VERSION,

/*
* Values below this point are copied temporarily from [Envelope]. Eventually we will migrate
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ internal sealed class FinalEnvelopeParams(
val endTime: Long,
val lifeEventType: Session.LifeEventType?,
crashId: String?,
val endType: SessionSnapshotType,
val isCacheAttempt: Boolean
) {

Expand All @@ -35,12 +36,14 @@ internal sealed class FinalEnvelopeParams(
initial: Session,
endTime: Long,
lifeEventType: Session.LifeEventType?,
crashId: String? = null
endType: SessionSnapshotType,
crashId: String? = null,
) : FinalEnvelopeParams(
initial,
endTime,
lifeEventType,
crashId,
endType,
lifeEventType == null
) {
override val terminationTime: Long? = null
Expand All @@ -56,13 +59,14 @@ internal sealed class FinalEnvelopeParams(
initial: Session,
endTime: Long,
lifeEventType: Session.LifeEventType?,
endType: SessionSnapshotType,
crashId: String? = null,
val endType: SessionSnapshotType
) : FinalEnvelopeParams(
initial,
endTime,
lifeEventType,
crashId,
endType,
endType == SessionSnapshotType.PERIODIC_CACHE
) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,8 @@ internal class PayloadFactoryImpl(
FinalEnvelopeParams.BackgroundActivityParams(
initial = initial,
endTime = timestamp - 1,
lifeEventType = LifeEventType.BKGND_STATE
lifeEventType = LifeEventType.BKGND_STATE,
endType = SessionSnapshotType.NORMAL_END
)
)
}
Expand Down Expand Up @@ -147,7 +148,8 @@ internal class PayloadFactoryImpl(
initial = initial,
endTime = timestamp,
lifeEventType = LifeEventType.BKGND_STATE,
crashId = crashId
crashId = crashId,
endType = SessionSnapshotType.JVM_CRASH
)
)
}
Expand All @@ -174,7 +176,8 @@ internal class PayloadFactoryImpl(
FinalEnvelopeParams.BackgroundActivityParams(
initial = initial,
endTime = timestamp,
lifeEventType = null
lifeEventType = null,
endType = SessionSnapshotType.PERIODIC_CACHE
)
)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
package io.embrace.android.embracesdk.session.message

import io.embrace.android.embracesdk.capture.envelope.SessionEnvelopeSource
import io.embrace.android.embracesdk.payload.Session
import io.embrace.android.embracesdk.payload.SessionMessage
import io.embrace.android.embracesdk.session.orchestrator.SessionSnapshotType

/**
* Generates a V2 payload. This currently calls through to the V1 collator for
* backwards compatibility.
*/
internal class V2PayloadMessageCollator(
private val v1Collator: V1PayloadMessageCollator
private val v1Collator: V1PayloadMessageCollator,
private val sessionEnvelopeSource: SessionEnvelopeSource
) : PayloadMessageCollator {

override fun buildInitialSession(params: InitialEnvelopeParams): Session {
Expand All @@ -17,9 +20,23 @@ internal class V2PayloadMessageCollator(

override fun buildFinalSessionMessage(params: FinalEnvelopeParams.SessionParams): SessionMessage {
return v1Collator.buildFinalSessionMessage(params)
.convertToV2Payload(params.endType)
}

override fun buildFinalBackgroundActivityMessage(params: FinalEnvelopeParams.BackgroundActivityParams): SessionMessage {
return v1Collator.buildFinalBackgroundActivityMessage(params)
.convertToV2Payload(params.endType)
}

private fun SessionMessage.convertToV2Payload(endType: SessionSnapshotType): SessionMessage {
val envelope = sessionEnvelopeSource.getEnvelope(endType)
return copy(
// future work: make legacy fields null here.
resource = envelope.resource,
metadata = envelope.metadata,
data = envelope.data,
newVersion = envelope.version,
type = envelope.type,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import io.embrace.android.embracesdk.fakes.FakeEnvelopeResourceSource
import io.embrace.android.embracesdk.fakes.FakeSessionPayloadSource
import io.embrace.android.embracesdk.session.orchestrator.SessionSnapshotType
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
import org.junit.Test

internal class SessionEnvelopeSourceTest {
Expand All @@ -24,9 +23,7 @@ internal class SessionEnvelopeSourceTest {
assertEquals(metadataSource.metadata, payload.metadata)
assertEquals(resourceSource.resource, payload.resource)
assertEquals(sessionPayloadSource.sessionPayload, payload.data)

// future fields that need populating:
assertNull(payload.type)
assertNull(payload.version)
assertEquals("session", payload.type)
assertEquals("0.1.0", payload.version)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ internal class V1PayloadMessageCollatorTest {
startMsg,
15000000000,
LifeEventType.BKGND_STATE,
SessionSnapshotType.NORMAL_END,
"crashId"
)
)
Expand All @@ -128,8 +129,8 @@ internal class V1PayloadMessageCollatorTest {
startMsg,
15000000000,
LifeEventType.STATE,
"crashId",
SessionSnapshotType.NORMAL_END
SessionSnapshotType.NORMAL_END,
"crashId"
)
)
payload.verifyFinalFieldsPopulated(PayloadType.SESSION)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,17 @@ package io.embrace.android.embracesdk.session.message

import io.embrace.android.embracesdk.FakeBreadcrumbService
import io.embrace.android.embracesdk.FakeSessionPropertiesService
import io.embrace.android.embracesdk.capture.envelope.SessionEnvelopeSource
import io.embrace.android.embracesdk.fakes.FakeConfigService
import io.embrace.android.embracesdk.fakes.FakeEnvelopeMetadataSource
import io.embrace.android.embracesdk.fakes.FakeEnvelopeResourceSource
import io.embrace.android.embracesdk.fakes.FakeEventService
import io.embrace.android.embracesdk.fakes.FakeInternalErrorService
import io.embrace.android.embracesdk.fakes.FakeLogMessageService
import io.embrace.android.embracesdk.fakes.FakeMetadataService
import io.embrace.android.embracesdk.fakes.FakePerformanceInfoService
import io.embrace.android.embracesdk.fakes.FakePreferenceService
import io.embrace.android.embracesdk.fakes.FakeSessionPayloadSource
import io.embrace.android.embracesdk.fakes.FakeStartupService
import io.embrace.android.embracesdk.fakes.FakeThermalStatusService
import io.embrace.android.embracesdk.fakes.FakeUserService
Expand Down Expand Up @@ -56,7 +60,12 @@ internal class V2PayloadMessageCollatorTest {
sessionPropertiesService = FakeSessionPropertiesService(),
startupService = FakeStartupService()
)
v2collator = V2PayloadMessageCollator(v1collator)
val sessionEnvelopeSource = SessionEnvelopeSource(
metadataSource = FakeEnvelopeMetadataSource(),
resourceSource = FakeEnvelopeResourceSource(),
sessionPayloadSource = FakeSessionPayloadSource()
)
v2collator = V2PayloadMessageCollator(v1collator, sessionEnvelopeSource)
}

@Test
Expand Down Expand Up @@ -101,6 +110,7 @@ internal class V2PayloadMessageCollatorTest {
startMsg,
15000000000,
Session.LifeEventType.BKGND_STATE,
SessionSnapshotType.NORMAL_END,
"crashId"
)
)
Expand All @@ -125,8 +135,8 @@ internal class V2PayloadMessageCollatorTest {
startMsg,
15000000000,
Session.LifeEventType.STATE,
SessionSnapshotType.NORMAL_END,
"crashId",
SessionSnapshotType.NORMAL_END
)
)
payload.verifyFinalFieldsPopulated(PayloadType.SESSION)
Expand All @@ -140,6 +150,11 @@ internal class V2PayloadMessageCollatorTest {
assertNotNull(deviceInfo)
assertNotNull(performanceInfo)
assertNotNull(breadcrumbs)
assertNotNull(resource)
assertNotNull(metadata)
assertNotNull(data)
assertNotNull(newVersion)
assertNotNull(type)
session.verifyInitialFieldsPopulated(payloadType)
session.verifyFinalFieldsPopulated(payloadType)
}
Expand Down

0 comments on commit f88ca2d

Please sign in to comment.