Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Populate additional fields on new payload #543

Merged
merged 1 commit into from
Mar 12, 2024
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
@@ -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 {

Check warning on line 5 in embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/capture/envelope/log/LogSourceImpl.kt

View check run for this annotation

Codecov / codecov/patch

embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/capture/envelope/log/LogSourceImpl.kt#L5

Added line #L5 was not covered by tests
override fun getLogPayload(): Log {
throw NotImplementedError("Not implemented yet")

Check warning on line 7 in embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/capture/envelope/log/LogSourceImpl.kt

View check run for this annotation

Codecov / codecov/patch

embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/capture/envelope/log/LogSourceImpl.kt#L7

Added line #L7 was not covered by tests
}
}
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
}