Skip to content

Commit

Permalink
Merge pull request #543 from embrace-io/remaining-population
Browse files Browse the repository at this point in the history
Populate additional fields on new payload
  • Loading branch information
fractalwrench committed Mar 12, 2024
2 parents 98c1673 + 8f1f6f2 commit 220a05a
Show file tree
Hide file tree
Showing 10 changed files with 149 additions and 17 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package io.embrace.android.embracesdk.capture.envelope

import io.embrace.android.embracesdk.capture.envelope.log.LogSource
import io.embrace.android.embracesdk.capture.envelope.metadata.EnvelopeMetadataSource
import io.embrace.android.embracesdk.capture.envelope.resource.EnvelopeResourceSource
import io.embrace.android.embracesdk.internal.payload.Envelope
import io.embrace.android.embracesdk.internal.payload.Log
import io.embrace.android.embracesdk.session.orchestrator.SessionSnapshotType

internal class LogEnvelopeSource(
private val metadataSource: EnvelopeMetadataSource,
private val resourceSource: EnvelopeResourceSource,
private val logSource: LogSource,
) : EnvelopeSource<Log> {

override fun getEnvelope(endType: SessionSnapshotType) = Envelope(
resourceSource.getEnvelopeResource(),
metadataSource.getEnvelopeMetadata(),
null,
null,
logSource.getLogPayload()
)
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,25 @@
package io.embrace.android.embracesdk.capture.envelope

import io.embrace.android.embracesdk.capture.envelope.metadata.EnvelopeMetadataSource
import io.embrace.android.embracesdk.capture.envelope.resource.EnvelopeResourceSource
import io.embrace.android.embracesdk.capture.envelope.session.SessionPayloadSource
import io.embrace.android.embracesdk.internal.payload.Envelope
import io.embrace.android.embracesdk.internal.payload.SessionPayload
import io.embrace.android.embracesdk.session.orchestrator.SessionSnapshotType

internal class SessionEnvelopeSource(
private val sessionPayloadSource: SessionPayloadSource
private val metadataSource: EnvelopeMetadataSource,
private val resourceSource: EnvelopeResourceSource,
private val sessionPayloadSource: SessionPayloadSource,
) : EnvelopeSource<SessionPayload> {

override fun getEnvelope(endType: SessionSnapshotType): Envelope<SessionPayload> {
sessionPayloadSource.getSessionPayload(endType)
throw NotImplementedError("Not yet implemented")
return Envelope(
resourceSource.getEnvelopeResource(),
metadataSource.getEnvelopeMetadata(),
null,
null,
sessionPayloadSource.getSessionPayload(endType)
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package io.embrace.android.embracesdk.capture.envelope.log

import io.embrace.android.embracesdk.internal.payload.Log

internal interface LogSource {
fun getLogPayload(): Log
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package io.embrace.android.embracesdk.capture.envelope.log

import io.embrace.android.embracesdk.internal.payload.Log

internal class LogSourceImpl : LogSource {
override fun getLogPayload(): Log {
throw NotImplementedError("Not implemented yet")
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package io.embrace.android.embracesdk.capture.envelope

import io.embrace.android.embracesdk.fakes.FakeEnvelopeMetadataSource
import io.embrace.android.embracesdk.fakes.FakeEnvelopeResourceSource
import io.embrace.android.embracesdk.fakes.FakeLogSource
import io.embrace.android.embracesdk.session.orchestrator.SessionSnapshotType
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
import org.junit.Test

internal class LogEnvelopeSourceTest {

@Test
fun getEnvelope() {
val metadataSource = FakeEnvelopeMetadataSource()
val resourceSource = FakeEnvelopeResourceSource()
val logSource = FakeLogSource()
val source = LogEnvelopeSource(
metadataSource,
resourceSource,
logSource,
)
val payload = source.getEnvelope(SessionSnapshotType.NORMAL_END)
assertEquals(metadataSource.metadata, payload.metadata)
assertEquals(resourceSource.resource, payload.resource)
assertEquals(logSource.log, payload.data)

// future fields that need populating:
assertNull(payload.type)
assertNull(payload.version)
}
}
Original file line number Diff line number Diff line change
@@ -1,24 +1,32 @@
package io.embrace.android.embracesdk.capture.envelope

import io.embrace.android.embracesdk.capture.envelope.session.SessionPayloadSourceImpl
import io.embrace.android.embracesdk.fakes.FakeCurrentSessionSpan
import io.embrace.android.embracesdk.fakes.FakeInternalErrorService
import io.embrace.android.embracesdk.fakes.FakeNativeThreadSamplerService
import io.embrace.android.embracesdk.internal.spans.SpanSinkImpl
import io.embrace.android.embracesdk.fakes.FakeEnvelopeMetadataSource
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 {

@Test(expected = NotImplementedError::class)
@Test
fun getEnvelope() {
SessionEnvelopeSource(
SessionPayloadSourceImpl(
FakeInternalErrorService(),
FakeNativeThreadSamplerService(),
SpanSinkImpl(),
FakeCurrentSessionSpan()
)
).getEnvelope(SessionSnapshotType.NORMAL_END)
val metadataSource = FakeEnvelopeMetadataSource()
val resourceSource = FakeEnvelopeResourceSource()
val sessionPayloadSource = FakeSessionPayloadSource()
val source = SessionEnvelopeSource(
metadataSource,
resourceSource,
sessionPayloadSource,
)
val payload = source.getEnvelope(SessionSnapshotType.NORMAL_END)
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)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package io.embrace.android.embracesdk.fakes

import io.embrace.android.embracesdk.capture.envelope.metadata.EnvelopeMetadataSource
import io.embrace.android.embracesdk.internal.payload.EnvelopeMetadata

internal class FakeEnvelopeMetadataSource : EnvelopeMetadataSource {

var metadata: EnvelopeMetadata = EnvelopeMetadata()

override fun getEnvelopeMetadata(): EnvelopeMetadata = metadata
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package io.embrace.android.embracesdk.fakes

import io.embrace.android.embracesdk.capture.envelope.resource.EnvelopeResourceSource
import io.embrace.android.embracesdk.internal.payload.EnvelopeResource

internal class FakeEnvelopeResourceSource : EnvelopeResourceSource {

var resource: EnvelopeResource = EnvelopeResource()

override fun getEnvelopeResource(): EnvelopeResource = resource
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package io.embrace.android.embracesdk.fakes

import io.embrace.android.embracesdk.capture.envelope.log.LogSource
import io.embrace.android.embracesdk.internal.payload.Log

internal class FakeLogSource : LogSource {

var log: Log = Log()

override fun getLogPayload(): Log = log
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package io.embrace.android.embracesdk.fakes

import io.embrace.android.embracesdk.capture.envelope.session.SessionPayloadSource
import io.embrace.android.embracesdk.internal.payload.SessionPayload
import io.embrace.android.embracesdk.session.orchestrator.SessionSnapshotType

internal class FakeSessionPayloadSource : SessionPayloadSource {

var sessionPayload: SessionPayload = SessionPayload()
override fun getSessionPayload(endType: SessionSnapshotType) = sessionPayload
}

0 comments on commit 220a05a

Please sign in to comment.