-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
ccdfdca
commit 9312e15
Showing
11 changed files
with
236 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
9 changes: 9 additions & 0 deletions
9
...k/src/main/java/io/embrace/android/embracesdk/network/logging/NetworkCaptureDataSource.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
package io.embrace.android.embracesdk.network.logging | ||
|
||
import io.embrace.android.embracesdk.arch.datasource.LogDataSource | ||
import io.embrace.android.embracesdk.payload.NetworkCapturedCall | ||
|
||
internal interface NetworkCaptureDataSource : LogDataSource { | ||
|
||
fun logNetworkCapturedCall(networkCapturedCall: NetworkCapturedCall) | ||
} |
40 changes: 40 additions & 0 deletions
40
...c/main/java/io/embrace/android/embracesdk/network/logging/NetworkCaptureDataSourceImpl.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
package io.embrace.android.embracesdk.network.logging | ||
|
||
import io.embrace.android.embracesdk.Severity | ||
import io.embrace.android.embracesdk.arch.datasource.LogDataSourceImpl | ||
import io.embrace.android.embracesdk.arch.destination.LogEventData | ||
import io.embrace.android.embracesdk.arch.destination.LogEventMapper | ||
import io.embrace.android.embracesdk.arch.destination.LogWriter | ||
import io.embrace.android.embracesdk.arch.limits.NoopLimitStrategy | ||
import io.embrace.android.embracesdk.arch.schema.SchemaType | ||
import io.embrace.android.embracesdk.logging.InternalEmbraceLogger | ||
import io.embrace.android.embracesdk.payload.NetworkCapturedCall | ||
|
||
internal class NetworkCaptureDataSourceImpl( | ||
private val logWriter: LogWriter, | ||
logger: InternalEmbraceLogger | ||
) : NetworkCaptureDataSource, | ||
LogEventMapper<NetworkCapturedCall>, LogDataSourceImpl( | ||
destination = logWriter, | ||
logger = logger, | ||
limitStrategy = NoopLimitStrategy, | ||
) { | ||
|
||
/** | ||
* Creates a log with data from a captured network request. | ||
* | ||
* @param networkCapturedCall the captured network information | ||
*/ | ||
override fun logNetworkCapturedCall(networkCapturedCall: NetworkCapturedCall) { | ||
logWriter.addLog(networkCapturedCall, ::toLogEventData) | ||
} | ||
|
||
override fun toLogEventData(obj: NetworkCapturedCall): LogEventData { | ||
val schemaType = SchemaType.NetworkCapturedRequest(obj) | ||
return LogEventData( | ||
schemaType = schemaType, | ||
severity = Severity.INFO, | ||
message = obj.networkId | ||
) | ||
} | ||
} |
33 changes: 33 additions & 0 deletions
33
...oid-sdk/src/test/java/io/embrace/android/embracesdk/fakes/FakeNetworkCaptureDataSource.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package io.embrace.android.embracesdk.fakes | ||
|
||
import io.embrace.android.embracesdk.arch.destination.LogWriter | ||
import io.embrace.android.embracesdk.network.logging.NetworkCaptureDataSource | ||
import io.embrace.android.embracesdk.payload.NetworkCapturedCall | ||
|
||
internal class FakeNetworkCaptureDataSource : NetworkCaptureDataSource { | ||
|
||
val loggedCalls = mutableListOf<NetworkCapturedCall>() | ||
|
||
override fun logNetworkCapturedCall(networkCapturedCall: NetworkCapturedCall) { | ||
loggedCalls.add(networkCapturedCall) | ||
} | ||
|
||
override fun alterSessionSpan( | ||
inputValidation: () -> Boolean, | ||
captureAction: LogWriter.() -> Unit | ||
): Boolean { | ||
TODO("Not yet implemented") | ||
} | ||
|
||
override fun enableDataCapture() { | ||
TODO("Not yet implemented") | ||
} | ||
|
||
override fun disableDataCapture() { | ||
TODO("Not yet implemented") | ||
} | ||
|
||
override fun resetDataCaptureLimits() { | ||
TODO("Not yet implemented") | ||
} | ||
} |
28 changes: 28 additions & 0 deletions
28
...-android-sdk/src/test/java/io/embrace/android/embracesdk/fakes/FakeNetworkCapturedCall.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
package io.embrace.android.embracesdk.fakes | ||
|
||
import io.embrace.android.embracesdk.payload.NetworkCapturedCall | ||
|
||
internal fun fakeNetworkCapturedCall(): NetworkCapturedCall { | ||
return NetworkCapturedCall( | ||
duration = 100, | ||
endTime = 1713453000, | ||
httpMethod = "GET", | ||
matchedUrl = "httpbin.*", | ||
requestBody = "body", | ||
requestBodySize = 10, | ||
networkId = "id", | ||
requestQuery = "query", | ||
requestQueryHeaders = mapOf("query-header" to "value"), | ||
requestSize = 5, | ||
responseBody = "response", | ||
responseBodySize = 8, | ||
responseHeaders = mapOf("response-header" to "value"), | ||
responseSize = 300, | ||
responseStatus = 200, | ||
sessionId = "session-id", | ||
startTime = 1713452000, | ||
url = "https://httpbin.org/get", | ||
errorMessage = "", | ||
encryptedPayload = "encrypted-payload" | ||
) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
46 changes: 46 additions & 0 deletions
46
...c/test/java/io/embrace/android/embracesdk/network/logging/NetworkCaptureDataSourceTest.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
package io.embrace.android.embracesdk.network.logging | ||
|
||
import io.embrace.android.embracesdk.arch.schema.SchemaType | ||
import io.embrace.android.embracesdk.fakes.FakeLogWriter | ||
import io.embrace.android.embracesdk.fakes.fakeNetworkCapturedCall | ||
import io.embrace.android.embracesdk.logging.InternalEmbraceLogger | ||
import org.junit.Assert.assertEquals | ||
import org.junit.Test | ||
|
||
internal class NetworkCaptureDataSourceTest { | ||
|
||
@Test | ||
fun `test network capture is sent as log`() { | ||
val logWriter = FakeLogWriter() | ||
val dataSource = NetworkCaptureDataSourceImpl( | ||
logWriter, | ||
InternalEmbraceLogger() | ||
) | ||
val capturedCall = fakeNetworkCapturedCall() | ||
dataSource.logNetworkCapturedCall(capturedCall) | ||
|
||
assertEquals(1, logWriter.logEvents.size) | ||
val log = logWriter.logEvents[0] | ||
assertEquals(SchemaType.NetworkCapturedRequest::class.java, log.schemaType.javaClass) | ||
assertEquals(100L, capturedCall.duration) | ||
assertEquals(1713453000L, capturedCall.endTime) | ||
assertEquals("GET", capturedCall.httpMethod) | ||
assertEquals("httpbin.*", capturedCall.matchedUrl) | ||
assertEquals("body", capturedCall.requestBody) | ||
assertEquals(10, capturedCall.requestBodySize) | ||
assertEquals("id", capturedCall.networkId) | ||
assertEquals("query", capturedCall.requestQuery) | ||
assertEquals(mapOf("query-header" to "value"), capturedCall.requestQueryHeaders) | ||
assertEquals(5, capturedCall.requestSize) | ||
assertEquals("response", capturedCall.responseBody) | ||
assertEquals(8, capturedCall.responseBodySize) | ||
assertEquals(mapOf("response-header" to "value"), capturedCall.responseHeaders) | ||
assertEquals(300, capturedCall.responseSize) | ||
assertEquals(200, capturedCall.responseStatus) | ||
assertEquals("session-id", capturedCall.sessionId) | ||
assertEquals(1713452000L, capturedCall.startTime) | ||
assertEquals("https://httpbin.org/get", capturedCall.url) | ||
assertEquals("", capturedCall.errorMessage) | ||
assertEquals("encrypted-payload", capturedCall.encryptedPayload) | ||
} | ||
} |