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

RUMM-407 Use app package name as default service name value #241

Merged
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
1 change: 0 additions & 1 deletion dd-sdk-android/apiSurface
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ class com.datadog.android.DatadogConfig
fun useCustomRumEndpoint(String): Builder
fun trackGestures(Array<com.datadog.android.rum.tracking.ViewAttributesProvider> = emptyArray()): Builder
fun useViewTrackingStrategy(com.datadog.android.rum.tracking.ViewTrackingStrategy): Builder
companion object
object com.datadog.android.DatadogEndpoint
const val LOGS_US: String
const val LOGS_EU: String
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ object Datadog {
val appContext = context.applicationContext

// always initialize Core Features first
CoreFeature.initialize(appContext, config.needsClearTextHttp)
CoreFeature.initialize(appContext, config.coreConfig)

config.logsConfig?.let { featureConfig ->
LogsFeature.initialize(
Expand Down
43 changes: 18 additions & 25 deletions dd-sdk-android/src/main/kotlin/com/datadog/android/DatadogConfig.kt
Original file line number Diff line number Diff line change
Expand Up @@ -23,26 +23,29 @@ import java.util.UUID
*/
class DatadogConfig
private constructor(
internal val needsClearTextHttp: Boolean,
internal val logsConfig: FeatureConfig?,
internal val tracesConfig: FeatureConfig?,
internal val crashReportConfig: FeatureConfig?,
internal val rumConfig: RumConfig?
internal val rumConfig: RumConfig?,
internal var coreConfig: CoreConfig
) {

internal data class CoreConfig(
var needsClearTextHttp: Boolean = false,
val serviceName: String? = null
)

internal data class FeatureConfig(
val clientToken: String,
val applicationId: UUID,
val endpointUrl: String,
val serviceName: String,
val envName: String
)

internal data class RumConfig(
val clientToken: String,
val applicationId: UUID,
val endpointUrl: String,
val serviceName: String,
val envName: String,
val gesturesTracker: GesturesTracker? = null,
val userActionTrackingStrategy: UserActionTrackingStrategy? = null,
Expand Down Expand Up @@ -71,7 +74,7 @@ private constructor(
* (e.g. "staging" vs. "production").
*/
constructor(clientToken: String, envName: String) :
this(clientToken, envName, UUID(0, 0))
this(clientToken, envName, UUID(0, 0))

/**
* A Builder class for a [DatadogConfig].
Expand All @@ -82,54 +85,51 @@ private constructor(
* @param applicationId your applicationId for RUM events
*/
constructor(clientToken: String, envName: String, applicationId: String) :
this(clientToken, envName, UUID.fromString(applicationId))
this(clientToken, envName, UUID.fromString(applicationId))

private var logsConfig: FeatureConfig = FeatureConfig(
clientToken,
applicationId,
DatadogEndpoint.LOGS_US,
DEFAULT_SERVICE_NAME,
envName
)
private var tracesConfig: FeatureConfig = FeatureConfig(
clientToken,
applicationId,
DatadogEndpoint.TRACES_US,
DEFAULT_SERVICE_NAME,
envName
)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you can set the default value here, that way you don't have to switch the order.

private var crashReportConfig: FeatureConfig = FeatureConfig(
clientToken,
applicationId,
DatadogEndpoint.LOGS_US,
DEFAULT_SERVICE_NAME,
envName
)
private var rumConfig: RumConfig = RumConfig(
clientToken,
applicationId,
DatadogEndpoint.RUM_US,
DEFAULT_SERVICE_NAME,
envName
)

private var coreConfig = CoreConfig()

private var logsEnabled: Boolean = true
private var tracesEnabled: Boolean = true
private var crashReportsEnabled: Boolean = true
private var rumEnabled: Boolean = applicationId != UUID(0, 0)
private var needsClearTextHttp: Boolean = false

/**
* Builds a [DatadogConfig] based on the current state of this Builder.
*/
fun build(): DatadogConfig {

return DatadogConfig(
needsClearTextHttp = needsClearTextHttp,
logsConfig = if (logsEnabled) logsConfig else null,
tracesConfig = if (tracesEnabled) tracesConfig else null,
crashReportConfig = if (crashReportsEnabled) crashReportConfig else null,
rumConfig = if (rumEnabled) rumConfig else null
rumConfig = if (rumEnabled) rumConfig else null,
coreConfig = coreConfig
)
}

Expand Down Expand Up @@ -182,10 +182,7 @@ private constructor(
* @param serviceName the service name (default = "android")
*/
fun setServiceName(serviceName: String): Builder {
logsConfig = logsConfig.copy(serviceName = serviceName)
tracesConfig = tracesConfig.copy(serviceName = serviceName)
crashReportConfig = crashReportConfig.copy(serviceName = serviceName)
rumConfig = rumConfig.copy(serviceName = serviceName)
coreConfig = coreConfig.copy(serviceName = serviceName)
return this
}

Expand Down Expand Up @@ -215,7 +212,7 @@ private constructor(
tracesConfig = tracesConfig.copy(endpointUrl = DatadogEndpoint.TRACES_EU)
crashReportConfig = crashReportConfig.copy(endpointUrl = DatadogEndpoint.LOGS_EU)
rumConfig = rumConfig.copy(endpointUrl = DatadogEndpoint.RUM_EU)
needsClearTextHttp = false
coreConfig = coreConfig.copy(needsClearTextHttp = false)
return this
}

Expand All @@ -229,7 +226,7 @@ private constructor(
tracesConfig = tracesConfig.copy(endpointUrl = DatadogEndpoint.TRACES_US)
crashReportConfig = crashReportConfig.copy(endpointUrl = DatadogEndpoint.LOGS_US)
rumConfig = rumConfig.copy(endpointUrl = DatadogEndpoint.RUM_US)
needsClearTextHttp = false
coreConfig = coreConfig.copy(needsClearTextHttp = false)
return this
}

Expand Down Expand Up @@ -305,14 +302,14 @@ private constructor(

private fun checkCustomEndpoint(endpoint: String) {
if (endpoint.startsWith("http://")) {
needsClearTextHttp = true
coreConfig = coreConfig.copy(needsClearTextHttp = true)
}
}

private fun provideUserTrackingStrategy(
gesturesTracker: GesturesTracker
):
UserActionTrackingStrategy {
UserActionTrackingStrategy {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
GesturesTrackingStrategyApi29(gesturesTracker)
} else {
Expand All @@ -322,8 +319,4 @@ private constructor(
}

// endregion

companion object {
internal const val DEFAULT_SERVICE_NAME = "android"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ package com.datadog.android.core.internal

import android.content.Context
import android.os.Build
import com.datadog.android.DatadogConfig
import com.datadog.android.core.internal.net.GzipRequestInterceptor
import com.datadog.android.core.internal.net.NetworkTimeInterceptor
import com.datadog.android.core.internal.net.info.BroadcastReceiverNetworkInfoProvider
Expand Down Expand Up @@ -56,25 +57,27 @@ internal object CoreFeature {

internal var packageName: String = ""
internal var packageVersion: String = ""
internal var serviceName: String = ""

internal lateinit var dataUploadScheduledExecutor: ScheduledThreadPoolExecutor
internal lateinit var dataPersistenceExecutorService: ExecutorService

fun initialize(
appContext: Context,
needsClearTextHttp: Boolean
config: DatadogConfig.CoreConfig
) {
if (initialized.get()) {
return
}

serviceName = config.serviceName ?: appContext.packageName
contextRef = WeakReference(appContext)

readApplicationInformation(appContext)

setupInfoProviders(appContext)

setupOkHttpClient(needsClearTextHttp)
setupOkHttpClient(config.needsClearTextHttp)
dataUploadScheduledExecutor = ScheduledThreadPoolExecutor(CORE_DEFAULT_POOL_SIZE)
dataPersistenceExecutorService =
ThreadPoolExecutor(
Expand All @@ -99,6 +102,9 @@ internal object CoreFeature {
systemInfoProvider = NoOpSystemInfoProvider()
networkInfoProvider = NoOpNetworkInfoProvider()
userInfoProvider = NoOpMutableUserInfoProvider()
serviceName = ""
packageName = ""
packageVersion = ""
shutDownExecutors()
initialized.set(false)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ internal object CrashReportsFeature {

internal var clientToken: String = ""
internal var endpointUrl: String = DatadogEndpoint.LOGS_US
internal var serviceName: String = DatadogConfig.DEFAULT_SERVICE_NAME
internal var envName: String = ""
set(value) {
field = value
Expand Down Expand Up @@ -67,7 +66,6 @@ internal object CrashReportsFeature {

clientToken = config.clientToken
endpointUrl = config.endpointUrl
serviceName = config.serviceName
envName = config.envName

persistenceStrategy = CrashLogFileStrategy(appContext)
Expand All @@ -94,7 +92,6 @@ internal object CrashReportsFeature {
clientToken = ""
envName = ""
endpointUrl = DatadogEndpoint.LOGS_US
serviceName = DatadogConfig.DEFAULT_SERVICE_NAME

initialized.set(false)
}
Expand Down Expand Up @@ -137,10 +134,4 @@ internal object CrashReportsFeature {
}

// endregion

// region Constants

internal const val CRASH_REPORTS_UPLOAD_THREAD_NAME = "ddog-crash-upload"

// endregion
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
package com.datadog.android.error.internal

import android.content.Context
import com.datadog.android.core.internal.CoreFeature
import com.datadog.android.core.internal.data.Writer
import com.datadog.android.core.internal.net.info.NetworkInfoProvider
import com.datadog.android.core.internal.time.TimeProvider
Expand Down Expand Up @@ -61,7 +62,7 @@ internal class DatadogExceptionHandler(

private fun createLog(thread: Thread, throwable: Throwable): Log {
return Log(
serviceName = CrashReportsFeature.serviceName,
serviceName = CoreFeature.serviceName,
level = Log.CRASH,
loggerName = LOGGER_NAME,
message = MESSAGE,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ internal constructor(private val handler: LogHandler) {
*/
class Builder {

private var serviceName: String = LogsFeature.serviceName
private var serviceName: String = CoreFeature.serviceName
private var datadogLogsEnabled: Boolean = true
private var logcatLogsEnabled: Boolean = false
private var networkInfoEnabled: Boolean = false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ internal object LogsFeature {

internal var clientToken: String = ""
internal var endpointUrl: String = DatadogEndpoint.LOGS_US
internal var serviceName: String = DatadogConfig.DEFAULT_SERVICE_NAME
internal var envName: String = ""
set(value) {
field = value
Expand Down Expand Up @@ -65,7 +64,6 @@ internal object LogsFeature {

clientToken = config.clientToken
endpointUrl = config.endpointUrl
serviceName = config.serviceName
envName = config.envName

persistenceStrategy = LogFileStrategy(
Expand Down Expand Up @@ -95,7 +93,6 @@ internal object LogsFeature {
clientToken = ""
envName = ""
endpointUrl = DatadogEndpoint.LOGS_US
serviceName = DatadogConfig.DEFAULT_SERVICE_NAME

initialized.set(false)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ internal object RumFeature {

internal var clientToken: String = ""
internal var endpointUrl: String = DatadogEndpoint.RUM_US
internal var serviceName: String = DatadogConfig.DEFAULT_SERVICE_NAME
internal var envName: String = ""
internal var applicationId: UUID = UUID(0, 0)

Expand Down Expand Up @@ -83,7 +82,6 @@ internal object RumFeature {

clientToken = config.clientToken
endpointUrl = config.endpointUrl
serviceName = config.serviceName
envName = config.envName

config.gesturesTracker?.let { gesturesTracker = it }
Expand Down Expand Up @@ -120,7 +118,6 @@ internal object RumFeature {
dataUploadScheduler = NoOpUploadScheduler()
clientToken = ""
endpointUrl = DatadogEndpoint.RUM_US
serviceName = DatadogConfig.DEFAULT_SERVICE_NAME
envName = ""
// reset rum monitor to NoOp and reset the flag
GlobalRum.isRegistered.set(false)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

package com.datadog.android.tracing

import com.datadog.android.core.internal.CoreFeature
import com.datadog.android.log.LogAttributes
import com.datadog.android.log.Logger
import com.datadog.android.rum.GlobalRum
Expand Down Expand Up @@ -66,7 +67,7 @@ class AndroidTracer internal constructor(
class Builder {

private var bundleWithRumEnabled: Boolean = true
private var serviceName: String = TracesFeature.serviceName
private var serviceName: String = CoreFeature.serviceName
private var partialFlushThreshold = DEFAULT_PARTIAL_MIN_FLUSH
private var random: Random = SecureRandom()
private val logsHandler: LogHandler
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ internal object TracesFeature {

internal var clientToken: String = ""
internal var endpointUrl: String = DatadogEndpoint.TRACES_US
internal var serviceName: String = DatadogConfig.DEFAULT_SERVICE_NAME

internal var persistenceStrategy: PersistenceStrategy<DDSpan> = NoOpPersistenceStrategy()
internal var uploader: DataUploader = NoOpDataUploader()
Expand All @@ -58,7 +57,6 @@ internal object TracesFeature {

clientToken = config.clientToken
endpointUrl = config.endpointUrl
serviceName = config.serviceName
val envSuffix = if (config.envName.isEmpty()) "" else ", \"env\": \"${config.envName}\""

persistenceStrategy = TracingFileStrategy(
Expand Down Expand Up @@ -87,7 +85,6 @@ internal object TracesFeature {
dataUploadScheduler = NoOpUploadScheduler()
clientToken = ""
endpointUrl = DatadogEndpoint.TRACES_US
serviceName = DatadogConfig.DEFAULT_SERVICE_NAME
initialized.set(false)
}
}
Expand Down
Loading