Skip to content

Commit

Permalink
Add integration test and exclude new Logs methods from nightly
Browse files Browse the repository at this point in the history
  • Loading branch information
fuzzybinary committed Mar 5, 2024
1 parent 0f7c20b commit e007dd8
Show file tree
Hide file tree
Showing 3 changed files with 119 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ internal class LogsFeature(
}

internal fun getAttributes(): Map<String, Any?> {
@Suppress("UnsafeThirdPartyFunctionCall") // NPE cannot happen here
return attributes.toMap()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ package com.datadog.android.nightly.main
* apiMethodSignature: com.datadog.android.Datadog#fun clearAllData(com.datadog.android.api.SdkCore = getInstance())
* apiMethodSignature: com.datadog.android.Datadog#fun isInitialized(String? = null): Boolean
* apiMethodSignature: com.datadog.android.Datadog#fun setVerbosity(Int)
* apiMethodSignature: com.datadog.android.Datadog#fun getVerbosity(): Int
* apiMethodSignature: com.datadog.android.Datadog#fun stopInstance(String? = null)
* apiMethodSignature: com.datadog.android.Datadog#fun stopSession()
* apiMethodSignature: com.datadog.android.Datadog#fun _internalProxy(String? = null): _InternalProxy
Expand All @@ -23,6 +24,8 @@ package com.datadog.android.nightly.main
* apiMethodSignature: com.datadog.android.core.configuration.Configuration$Builder#fun setUploadFrequency(UploadFrequency): Builder
* apiMethodSignature: com.datadog.android.core.configuration.Configuration$Builder#fun setUseDeveloperModeWhenDebuggable(Boolean): Builder
* apiMethodSignature: com.datadog.android.core.configuration.Configuration$Builder#fun useSite(com.datadog.android.DatadogSite): Builder
* apiMethodSignature: com.datadog.android.core.configuration.Configuration$Builder#fun setBatchProcessingLevel(BatchProcessingLevel): Builder
* apiMethodSignature: com.datadog.android.core.configuration.Configuration$Builder#fun setPersistenceStrategyFactory(com.datadog.android.core.persistence.PersistenceStrategy.Factory?): Builder
* apiMethodSignature: com.datadog.android.core.internal.thread.LoggingScheduledThreadPoolExecutor#constructor(Int, com.datadog.android.api.InternalLogger)
* apiMethodSignature: com.datadog.android.core.internal.utils.JsonSerializer#fun Map<String, Any?>.safeMapValuesToJson(com.datadog.android.api.InternalLogger): Map<String, com.google.gson.JsonElement>
* apiMethodSignature: com.datadog.android.core.internal.utils.JsonSerializer#fun toJsonElement(Any?): com.google.gson.JsonElement
Expand Down Expand Up @@ -95,5 +98,7 @@ package com.datadog.android.nightly.main
* apiMethodSignature: com.datadog.android.log.LogsConfiguration$Builder#fun build(): LogsConfiguration
* apiMethodSignature: com.datadog.android.log.LogsConfiguration$Builder#fun setEventMapper(com.datadog.android.event.EventMapper<com.datadog.android.log.model.LogEvent>): Builder
* apiMethodSignature: com.datadog.android.log.LogsConfiguration$Builder#fun useCustomEndpoint(String): Builder
* apiMethodSignature: com.datadog.android.log.Logs#fun addAttribute(String, Any?, com.datadog.android.api.SdkCore = Datadog.getInstance())
* apiMethodSignature: com.datadog.android.log.Logs#fun removeAttribute(String, com.datadog.android.api.SdkCore = Datadog.getInstance())
*
*/
Original file line number Diff line number Diff line change
Expand Up @@ -759,6 +759,119 @@ class LoggerTest {
assertThat(event0.getString(fakeAttributeKey)).isEqualTo(fakeAttributeValue2)
}

@RepeatedTest(16)
fun `M send log with custom attribute W Logs#addAttribute() + Logger#log()`(
@StringForgery fakeAttributeKey: String,
@StringForgery fakeAttributeValue: String,
@StringForgery fakeMessage: String,
@IntForgery(Log.VERBOSE, 10) fakeLevel: Int
) {
// Given
val testedLogger = Logger.Builder(stubSdkCore).build()

// When
Logs.addAttribute(fakeAttributeKey, fakeAttributeValue, sdkCore = stubSdkCore)
testedLogger.log(fakeLevel, fakeMessage)

// Then
val eventsWritten = stubSdkCore.eventsWritten(Feature.LOGS_FEATURE_NAME)
assertThat(eventsWritten).hasSize(1)
val event0 = JsonParser.parseString(eventsWritten[0].eventData) as JsonObject
assertThat(event0.getString("ddtags")).contains("env:" + stubSdkCore.getDatadogContext().env)
assertThat(event0.getString("ddtags")).contains("version:" + stubSdkCore.getDatadogContext().version)
assertThat(event0.getString("ddtags")).contains("variant:" + stubSdkCore.getDatadogContext().variant)
assertThat(event0.getString("service")).isEqualTo(stubSdkCore.getDatadogContext().service)
assertThat(event0.getString("message")).isEqualTo(fakeMessage)
assertThat(event0.getString("status")).isEqualTo(LEVEL_NAMES[fakeLevel])
assertThat(event0.getString(fakeAttributeKey)).isEqualTo(fakeAttributeValue)
}

@RepeatedTest(16)
fun `M send log with updated custom attribute W Logs#addAttribute() + Logs#addAttribute() + Logger#log()`(
@StringForgery fakeAttributeKey: String,
@StringForgery fakeAttributeValue: String,
@StringForgery fakeAttributeValue2: String,
@StringForgery fakeMessage: String,
@IntForgery(Log.VERBOSE, 10) fakeLevel: Int
) {
// Given
val testedLogger = Logger.Builder(stubSdkCore).build()

// When
Logs.addAttribute(fakeAttributeKey, fakeAttributeValue, stubSdkCore)
Logs.addAttribute(fakeAttributeKey, fakeAttributeValue2, stubSdkCore)
testedLogger.log(fakeLevel, fakeMessage)

// Then
val eventsWritten = stubSdkCore.eventsWritten(Feature.LOGS_FEATURE_NAME)
assertThat(eventsWritten).hasSize(1)
val event0 = JsonParser.parseString(eventsWritten[0].eventData) as JsonObject
assertThat(event0.getString("ddtags")).contains("env:" + stubSdkCore.getDatadogContext().env)
assertThat(event0.getString("ddtags")).contains("version:" + stubSdkCore.getDatadogContext().version)
assertThat(event0.getString("ddtags")).contains("variant:" + stubSdkCore.getDatadogContext().variant)
assertThat(event0.getString("service")).isEqualTo(stubSdkCore.getDatadogContext().service)
assertThat(event0.getString("message")).isEqualTo(fakeMessage)
assertThat(event0.getString("status")).isEqualTo(LEVEL_NAMES[fakeLevel])
assertThat(event0.getString(fakeAttributeKey)).isEqualTo(fakeAttributeValue2)
}

@RepeatedTest(16)
fun `M send log with overridden custom attribute W Logs#addAttribute() + Logger#addAttribute() + Logger#log()`(
@StringForgery fakeAttributeKey: String,
@StringForgery fakeAttributeValue: String,
@StringForgery fakeAttributeValue2: String,
@StringForgery fakeMessage: String,
@IntForgery(Log.VERBOSE, 10) fakeLevel: Int
) {
// Given
val testedLogger = Logger.Builder(stubSdkCore).build()

// When
Logs.addAttribute(fakeAttributeKey, fakeAttributeValue, stubSdkCore)
testedLogger.addAttribute(fakeAttributeKey, fakeAttributeValue2)
testedLogger.log(fakeLevel, fakeMessage)

// Then
val eventsWritten = stubSdkCore.eventsWritten(Feature.LOGS_FEATURE_NAME)
assertThat(eventsWritten).hasSize(1)
val event0 = JsonParser.parseString(eventsWritten[0].eventData) as JsonObject
assertThat(event0.getString("ddtags")).contains("env:" + stubSdkCore.getDatadogContext().env)
assertThat(event0.getString("ddtags")).contains("version:" + stubSdkCore.getDatadogContext().version)
assertThat(event0.getString("ddtags")).contains("variant:" + stubSdkCore.getDatadogContext().variant)
assertThat(event0.getString("service")).isEqualTo(stubSdkCore.getDatadogContext().service)
assertThat(event0.getString("message")).isEqualTo(fakeMessage)
assertThat(event0.getString("status")).isEqualTo(LEVEL_NAMES[fakeLevel])
assertThat(event0.getString(fakeAttributeKey)).isEqualTo(fakeAttributeValue2)
}

@RepeatedTest(16)
fun `M send log with overridden custom attribute W Logs#addAttribute() + Logger#log()`(
@StringForgery fakeAttributeKey: String,
@StringForgery fakeAttributeValue: String,
@StringForgery fakeAttributeValue2: String,
@StringForgery fakeMessage: String,
@IntForgery(Log.VERBOSE, 10) fakeLevel: Int
) {
// Given
val testedLogger = Logger.Builder(stubSdkCore).build()

// When
Logs.addAttribute(fakeAttributeKey, fakeAttributeValue, stubSdkCore)
testedLogger.log(fakeLevel, fakeMessage, attributes = mapOf(fakeAttributeKey to fakeAttributeValue2))

// Then
val eventsWritten = stubSdkCore.eventsWritten(Feature.LOGS_FEATURE_NAME)
assertThat(eventsWritten).hasSize(1)
val event0 = JsonParser.parseString(eventsWritten[0].eventData) as JsonObject
assertThat(event0.getString("ddtags")).contains("env:" + stubSdkCore.getDatadogContext().env)
assertThat(event0.getString("ddtags")).contains("version:" + stubSdkCore.getDatadogContext().version)
assertThat(event0.getString("ddtags")).contains("variant:" + stubSdkCore.getDatadogContext().variant)
assertThat(event0.getString("service")).isEqualTo(stubSdkCore.getDatadogContext().service)
assertThat(event0.getString("message")).isEqualTo(fakeMessage)
assertThat(event0.getString("status")).isEqualTo(LEVEL_NAMES[fakeLevel])
assertThat(event0.getString(fakeAttributeKey)).isEqualTo(fakeAttributeValue2)
}

@RepeatedTest(16)
fun `M send log with updated custom attribute W Logger#addAttribute() + Logger#removeAttribute() + Logger#log()`(
@StringForgery fakeAttributeKey: String,
Expand Down

0 comments on commit e007dd8

Please sign in to comment.