Skip to content

Commit

Permalink
Tag telemetry data with CI Visibility product when applicable
Browse files Browse the repository at this point in the history
  • Loading branch information
nikita-tkachenko-datadog committed Jul 10, 2024
1 parent 8629967 commit 6d2542a
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,9 @@ public void writeProducts() {
instrumenterConfig.getAppSecActivation() != ProductActivation.FULLY_DISABLED;
boolean profilerEnabled = instrumenterConfig.isProfilingEnabled();
boolean dynamicInstrumentationEnabled = config.isDebuggerEnabled();
requestBody.writeProducts(appsecEnabled, profilerEnabled, dynamicInstrumentationEnabled);
boolean ciVisibilityEnabled = config.isCiVisibilityEnabled();
requestBody.writeProducts(
appsecEnabled, profilerEnabled, dynamicInstrumentationEnabled, ciVisibilityEnabled);
} catch (IOException e) {
throw new TelemetryRequestBody.SerializationException("products", e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,10 @@ public void endDependencies() throws IOException {
}

public void writeProducts(
boolean appsecEnabled, boolean profilerEnabled, boolean dynamicInstrumentationEnabled)
boolean appsecEnabled,
boolean profilerEnabled,
boolean dynamicInstrumentationEnabled,
boolean ciVisibilityEnabled)
throws IOException {
bodyWriter.name("products");
bodyWriter.beginObject();
Expand All @@ -285,6 +288,11 @@ public void writeProducts(
bodyWriter.name("enabled").value(dynamicInstrumentationEnabled);
bodyWriter.endObject();

bodyWriter.name("civisibility");
bodyWriter.beginObject();
bodyWriter.name("enabled").value(ciVisibilityEnabled);
bodyWriter.endObject();

bodyWriter.endObject();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import datadog.telemetry.api.RequestType
import datadog.trace.api.ConfigOrigin
import datadog.trace.api.ConfigSetting
import datadog.trace.api.config.AppSecConfig
import datadog.trace.api.config.CiVisibilityConfig
import datadog.trace.api.config.DebuggerConfig
import datadog.trace.api.config.ProfilingConfig
import datadog.trace.test.util.DDSpecification
Expand Down Expand Up @@ -465,6 +466,7 @@ class TelemetryServiceSpecification extends DDSpecification {
injectEnvConfig(Strings.toEnvVar(AppSecConfig.APPSEC_ENABLED), appsecConfig)
injectEnvConfig(Strings.toEnvVar(ProfilingConfig.PROFILING_ENABLED), profilingConfig)
injectEnvConfig(Strings.toEnvVar(DebuggerConfig.DEBUGGER_ENABLED), dynInstrConfig)
injectEnvConfig(Strings.toEnvVar(CiVisibilityConfig.CIVISIBILITY_ENABLED), ciVisConfig)

TestTelemetryRouter testHttpClient = new TestTelemetryRouter()
TelemetryService telemetryService = new TelemetryService(testHttpClient, 10000, false)
Expand All @@ -474,16 +476,16 @@ class TelemetryServiceSpecification extends DDSpecification {
telemetryService.sendAppStartedEvent()

then: 'app-started'
testHttpClient.assertRequestBody(RequestType.APP_STARTED).assertPayload().products(appsecEnabled, profilingEnabled, dynInstrEnabled)
testHttpClient.assertRequestBody(RequestType.APP_STARTED).assertPayload().products(appsecEnabled, profilingEnabled, dynInstrEnabled, ciVisEnabled)
testHttpClient.assertNoMoreRequests()

where:
appsecConfig | appsecEnabled | profilingConfig | profilingEnabled | dynInstrConfig | dynInstrEnabled
"1" | true | "1" | true | "1" | true
"1" | true | "1" | true | "0" | false
"1" | true | "0" | false | "1" | true
"1" | true | "0" | false | "0" | false
"0" | false | "0" | false | "0" | false
"inactive" | true | "0" | false | "0" | false
appsecConfig | appsecEnabled | profilingConfig | profilingEnabled | dynInstrConfig | dynInstrEnabled | ciVisConfig | ciVisEnabled
"1" | true | "1" | true | "1" | true | "1" | true
"1" | true | "1" | true | "0" | false | "0" | false
"1" | true | "0" | false | "1" | true | "1" | true
"1" | true | "0" | false | "0" | false | "0" | false
"0" | false | "0" | false | "0" | false | "0" | false
"inactive" | true | "0" | false | "0" | false | "0" | false
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package datadog.telemetry

import datadog.communication.ddagent.TracerVersion
import datadog.telemetry.dependency.Dependency
import datadog.telemetry.api.Integration
import datadog.telemetry.api.DistributionSeries
import datadog.telemetry.api.Integration
import datadog.telemetry.api.LogMessage
import datadog.telemetry.api.Metric
import datadog.telemetry.api.RequestType
import datadog.telemetry.dependency.Dependency
import datadog.trace.api.ConfigSetting
import groovy.json.JsonSlurper
import okhttp3.Request
Expand Down Expand Up @@ -258,11 +258,12 @@ class TestTelemetryRouter extends TelemetryRouter {
return this
}

PayloadAssertions products(boolean appsecEnabled = true, boolean profilerEnabled = false, boolean dynamicInstrumentationEnabled = false) {
PayloadAssertions products(boolean appsecEnabled = true, boolean profilerEnabled = false, boolean dynamicInstrumentationEnabled = false, boolean ciVisibilityEnabled = false) {
def expected = [
appsec: [enabled: appsecEnabled],
profiler: [enabled: profilerEnabled],
dynamic_instrumentation: [enabled: dynamicInstrumentationEnabled]
dynamic_instrumentation: [enabled: dynamicInstrumentationEnabled],
civisibility: [enabled: ciVisibilityEnabled]
]
assert this.payload['products'] == expected
return this
Expand Down

0 comments on commit 6d2542a

Please sign in to comment.