8000 Add In-Product Enablement by jpbempel · Pull Request #8461 · DataDog/dd-trace-java · GitHub
[go: up one dir, main page]

Skip to content

Add In-Product Enablement #8461

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

Merged
merged 4 commits into from
Feb 28, 2025
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
Prev Previous commit
Next Next commit
fix tests
  • Loading branch information
jpbempel committed Feb 28, 2025
commit 81a80483df1e0dd60a4e764febe5f1667993c01f
Original file line number Diff line number Diff line change
Expand Up @@ -165,8 +165,10 @@ public static void stopDynamicInstrumentation() {
}
LOGGER.info("Stopping Dynamic Instrumentation");
unsubscribeConfigurationPoller();
// uninstall all probes by providing empty configuration
configurationUpdater.accept(REMOTE_CONFIG, Collections.emptyList());
if (configurationUpdater != null) {
// uninstall all probes by providing empty configuration
configurationUpdater.accept(REMOTE_CONFIG, Collections.emptyList());
}
if (symDBEnablement != null) {
symDBEnablement.stopSymbolExtraction();
}
Expand All @@ -192,28 +194,48 @@ public static void stopExceptionReplay() {
return;
}
LOGGER.info("Stopping Exception Replay");
// uninstall all exception probes by providing empty configuration
configurationUpdater.accept(EXCEPTION, Collections.emptyList());
if (configurationUpdater != null) {
// uninstall all exception probes by providing empty configuration
configurationUpdater.accept(EXCEPTION, Collections.emptyList());
}
exceptionDebugger = null;
DebuggerContext.initExceptionDebugger(null);
}

public static void startCodeOriginForSpans() {
if (!codeOriginEnabled.compareAndSet(false, true)) {
return;
}
LOGGER.info("Starting Code Origin for spans");
DebuggerContext.initCodeOrigin(
new DefaultCodeOriginRecorder(Config.get(), configurationUpdater));
}

public static void stopCodeOriginForSpans() {
if (!codeOriginEnabled.compareAndSet(true, false)) {
return;
}
LOGGER.info("Stopping Code Origin for spans");
// uninstall all code origin probes by providing empty configuration
configurationUpdater.accept(CODE_ORIGIN, Collections.emptyList());
if (configurationUpdater != null) {
// uninstall all code origin probes by providing empty configuration
configurationUpdater.accept(CODE_ORIGIN, Collections.emptyList());
}
DebuggerContext.initCodeOrigin(null);
}

public static void startDistributedDebugger() {}
public static void startDistributedDebugger() {
if (!distributedDebuggerEnabled.compareAndSet(false, true)) {
return;
}
LOGGER.info("Starting Distributed Debugger");
}

public static void stopDistributedDebugger() {}
public static void stopDistributedDebugger() {
if (!distributedDebuggerEnabled.compareAndSet(true, false)) {
return;
}
LOGGER.info("Sopping Distributed Debugger");
}

private static DebuggerSink createDebuggerSink(Config config, ProbeStatusSink probeStatusSink) {
String tags = getDefaultTagsMergedWithGlobalTags(config);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.datadog.debugger.agent;

import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.Test;

class DefaultProductConfigUpdaterTest {

@Test
public void enableDisable() {
DefaultProductConfigUpdater productConfigUpdater = new DefaultProductConfigUpdater();
productConfigUpdater.updateConfig(null, null, null, null);
productConfigUpdater.updateConfig(true, true, true, true);
assertTrue(productConfigUpdater.isDynamicInstrumentationEnabled());
assertTrue(productConfigUpdater.isExceptionReplayEnabled());
assertTrue(productConfigUpdater.isCodeOriginEnabled());
assertTrue(productConfigUpdater.isDistributedDebuggerEnabled());
productConfigUpdater.updateConfig(false, false, false, false);
assertFalse(productConfigUpdater.isDynamicInstrumentationEnabled());
assertFalse(productConfigUpdater.isExceptionReplayEnabled());
assertFalse(productConfigUpdater.isCodeOriginEnabled());
assertFalse(productConfigUpdater.isDistributedDebuggerEnabled());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import com.datadog.debugger.agent.ClassesToRetransformFinder;
import com.datadog.debugger.agent.Configuration;
import com.datadog.debugger.agent.ConfigurationUpdater;
import com.datadog.debugger.agent.DebuggerAgent;
import com.datadog.debugger.agent.DebuggerAgentHelper;
import com.datadog.debugger.agent.DebuggerTransformer;
import com.datadog.debugger.agent.JsonSnapshotSerializer;
Expand Down Expand Up @@ -56,6 +57,7 @@
import org.joor.Reflect;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.DisabledIf;
Expand All @@ -82,6 +84,11 @@ public class ExceptionProbeInstrumentationTest {
private MockSampler probeSampler;
private MockSampler globalSampler;

@BeforeAll
public static void beforeAll() {
setFieldInConfig(Config.get(), "agentUrl", "http://localhost:8126");
}

@BeforeEach
public void before() {
CoreTracer tracer = CoreTracer.builder().build();
Expand All @@ -92,6 +99,7 @@ public void before() {
ProbeRateLimiter.setSamplerSupplier(rate -> rate < 101 ? probeSampler : globalSampler);
ProbeRateLimiter.setGlobalSnapshotRate(1000);
// to activate the call to DebuggerContext.handleException
DebuggerAgent.startExceptionReplay();
setFieldInConfig(Config.get(), "debuggerExceptionEnabled", true);
setFieldInConfig(Config.get(), "dynamicInstrumentationClassFileDumpEnabled", true);
}
Expand Down
0