Skip to content

Commit

Permalink
Fixed tests for EmbraceNetworkLoggingService
Browse files Browse the repository at this point in the history
  • Loading branch information
priettt committed Apr 17, 2024
1 parent e852564 commit 4ed3001
Show file tree
Hide file tree
Showing 7 changed files with 120 additions and 449 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import io.embrace.android.embracesdk.internal.logs.LogService
import io.embrace.android.embracesdk.network.logging.EmbraceNetworkCaptureService
import io.embrace.android.embracesdk.network.logging.EmbraceNetworkLoggingService
import io.embrace.android.embracesdk.network.logging.NetworkCaptureService
import io.embrace.android.embracesdk.network.logging.NetworkLoggingDomainCountLimiter
import io.embrace.android.embracesdk.network.logging.EmbraceDomainCountLimiter
import io.embrace.android.embracesdk.network.logging.NetworkLoggingService
import io.embrace.android.embracesdk.worker.WorkerName
import io.embrace.android.embracesdk.worker.WorkerThreadModule
Expand Down Expand Up @@ -48,16 +48,16 @@ internal class CustomerLogModuleImpl(
)
}

private val networkLoggingDomainCountLimiter: NetworkLoggingDomainCountLimiter by singleton {
NetworkLoggingDomainCountLimiter(
private val embraceDomainCountLimiter: EmbraceDomainCountLimiter by singleton {
EmbraceDomainCountLimiter(
essentialServiceModule.configService,
initModule.logger
)
}

override val networkLoggingService: NetworkLoggingService by singleton {
EmbraceNetworkLoggingService(
networkLoggingDomainCountLimiter,
embraceDomainCountLimiter,
networkCaptureService,
openTelemetryModule.spanService
)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package io.embrace.android.embracesdk.network.logging

internal interface DomainCountLimiter {
/**
* Determines if a network request can be logged based on the domain limits.
*
* @param domain the domain of the network request
* @return true if the network request should be logged, false otherwise
*/
fun canLogNetworkRequest(domain: String): Boolean
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ import io.embrace.android.embracesdk.utils.NetworkUtils
import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.atomic.AtomicInteger

internal class NetworkLoggingDomainCountLimiter(
internal class EmbraceDomainCountLimiter(
private val configService: ConfigService,
private val logger: InternalEmbraceLogger,
) : MemoryCleanerListener {
) : MemoryCleanerListener, DomainCountLimiter {

private val domainSetting = ConcurrentHashMap<String, DomainSettings>()
private val callsPerDomainSuffix = hashMapOf<String, NetworkSessionV2.DomainCount>()
Expand All @@ -20,7 +20,7 @@ internal class NetworkLoggingDomainCountLimiter(
private var defaultPerDomainSuffixCallLimit = configService.networkBehavior.getNetworkCaptureLimit()
private var domainSuffixCallLimits = configService.networkBehavior.getNetworkCallLimitsPerDomainSuffix()

fun canLogNetworkRequest(domain: String): Boolean {
override fun canLogNetworkRequest(domain: String): Boolean {
// TODO: Should we synchronize on another object now that we don't use callsStorageLastUpdate?
if (NetworkUtils.isIpAddress(domain)) {
// TODO: All of the IP address domains fall under the same limit? Is that correct?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import io.embrace.android.embracesdk.utils.NetworkUtils.stripUrl
* and the number of calls is also captured if the limit is exceeded.
*/
internal class EmbraceNetworkLoggingService(
private val networkLoggingDomainCountLimiter: NetworkLoggingDomainCountLimiter,
private val embraceDomainCountLimiter: DomainCountLimiter,
private val networkCaptureService: NetworkCaptureService,
private val spanService: SpanService
) : NetworkLoggingService {
Expand Down Expand Up @@ -56,7 +56,7 @@ internal class EmbraceNetworkLoggingService(
stripUrl(networkRequest.url)
) ?: return

if (networkLoggingDomainCountLimiter.canLogNetworkRequest(domain)) {
if (embraceDomainCountLimiter.canLogNetworkRequest(domain)) {
val strippedUrl = stripUrl(networkRequest.url)

val networkRequestSchemaType = SchemaType.NetworkRequest(networkRequest)
Expand Down
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.network.logging.DomainCountLimiter

internal class FakeDomainCountLimiter : DomainCountLimiter {

var canLog = true
override fun canLogNetworkRequest(domain: String): Boolean {
return canLog
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,19 @@ internal class FakeSpanService : SpanService {
attributes: Map<String, String>,
events: List<EmbraceSpanEvent>,
errorCode: ErrorCode?
): Boolean = true
): Boolean {
createdSpans.add(
FakePersistableEmbraceSpan(parent, name, type, internal, private).apply {
start(startTimeMs)
attributes.forEach { (key, value) -> addAttribute(key, value) }
events.forEach {
addEvent(it.name, it.timestampNanos, it.attributes)
}
stop(errorCode, endTimeMs)
}
)
return true
}

override fun getSpan(spanId: String): EmbraceSpan? = null
}
Loading

0 comments on commit 4ed3001

Please sign in to comment.