Skip to content

Commit 143e071

Browse files
committed
wip
1 parent af5f441 commit 143e071

File tree

4 files changed

+96
-1
lines changed

4 files changed

+96
-1
lines changed

dd-java-agent/instrumentation/kafka-clients-3.8/src/test/groovy/KafkaClientTestBase.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ abstract class KafkaClientTestBase extends VersionedNamingTestBase {
152152
}
153153

154154
@Flaky
155-
def "test kafka produce and consume"() {
155+
public def "test kafka produce and consume"() {
156156
setup:
157157
// Create and start a Kafka container using Testcontainers
158158
KafkaContainer kafkaContainer = new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka:latest")).withEmbeddedZookeeper().withEnv("KAFKA_CREATE_TOPICS", SHARED_TOPIC)
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
class KafkaCodeOriginForkedTest extends KafkaClientForkedTest {
2+
@Override
3+
void configurePreAgent() {
4+
super.configurePreAgent()
5+
6+
println("**********************")
7+
codeOriginSetup()
8+
}
9+
10+
def "test flaming dumpster"() {
11+
assert false
12+
super."test kafka produce and consume"
13+
}
14+
15+
@Override
16+
int version() {
17+
1
18+
}
19+
20+
@Override
21+
String service() {
22+
return "KafkaClientTest"
23+
}
24+
25+
@Override
26+
String operationForProducer() {
27+
"kafka.send"
28+
}
29+
30+
@Override
31+
String operationForConsumer() {
32+
return "kafka.process"
33+
}
34+
35+
@Override
36+
String serviceForTimeInQueue() {
37+
"kafka-queue"
38+
}
39+
40+
@Override
41+
boolean hasQueueSpan() {
42+
false
43+
}
44+
}

dd-java-agent/testing/build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ dependencies {
6666
implementation 'org.junit.platform:junit-platform-runner:1.9.0'
6767
implementation project(':dd-java-agent:appsec')
6868

69+
implementation project(':dd-java-agent:agent-debugger')
70+
implementation libs.bundles.mockito
71+
6972
testImplementation project(':utils:test-utils')
7073
testImplementation project(':dd-java-agent:instrumentation:trace-annotation')
7174

dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/AgentTestRunner.groovy

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,17 @@ package datadog.trace.agent.test
33
import ch.qos.logback.classic.Level
44
import ch.qos.logback.classic.Logger
55
import ch.qos.logback.classic.util.ContextInitializer
6+
import com.datadog.debugger.agent.ClassesToRetransformFinder
7+
import com.datadog.debugger.agent.Configuration
8+
import com.datadog.debugger.agent.ConfigurationUpdater
9+
import com.datadog.debugger.agent.DebuggerTransformer
10+
import com.datadog.debugger.agent.DenyListHelper
11+
import com.datadog.debugger.agent.JsonSnapshotSerializer
12+
import com.datadog.debugger.codeorigin.DefaultCodeOriginRecorder
13+
import com.datadog.debugger.instrumentation.InstrumentationResult
14+
import com.datadog.debugger.probe.ProbeDefinition
15+
import com.datadog.debugger.sink.DebuggerSink
16+
import com.datadog.debugger.sink.ProbeStatusSink
617
import com.google.common.collect.Sets
718
import datadog.communication.ddagent.DDAgentFeaturesDiscovery
819
import datadog.communication.monitor.Monitoring
@@ -28,6 +39,7 @@ import datadog.trace.api.time.SystemTimeSource
2839
import datadog.trace.bootstrap.ActiveSubsystems
2940
import datadog.trace.bootstrap.CallDepthThreadLocalMap
3041
import datadog.trace.bootstrap.InstrumentationErrors
42+
import datadog.trace.bootstrap.debugger.DebuggerContext
3143
import datadog.trace.bootstrap.instrumentation.api.AgentDataStreamsMonitoring
3244
import datadog.trace.bootstrap.instrumentation.api.AgentSpan
3345
import datadog.trace.bootstrap.instrumentation.api.AgentTracer.TracerAPI
@@ -71,7 +83,10 @@ import static datadog.communication.http.OkHttpUtils.buildHttpClient
7183
import static datadog.trace.api.ConfigDefaults.DEFAULT_AGENT_HOST
7284
import static datadog.trace.api.ConfigDefaults.DEFAULT_AGENT_TIMEOUT
7385
import static datadog.trace.api.ConfigDefaults.DEFAULT_TRACE_AGENT_PORT
86+
import static datadog.trace.api.config.TraceInstrumentationConfig.CODE_ORIGIN_FOR_SPANS_ENABLED
7487
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious
88+
import static org.mockito.Mockito.mock
89+
import static org.mockito.Mockito.when
7590

7691
/**
7792
* A spock test runner which automatically applies instrumentation and exposes a global trace
@@ -288,6 +303,39 @@ abstract class AgentTestRunner extends DDSpecification implements AgentBuilder.L
288303
((Logger) LoggerFactory.getLogger("org.testcontainers")).setLevel(Level.DEBUG)
289304
}
290305

306+
void codeOriginSetup() {
307+
injectSysConfig(CODE_ORIGIN_FOR_SPANS_ENABLED, "true", true)
308+
309+
def configuration = Configuration.builder()
310+
.setService("grpc code origin test")
311+
.build()
312+
313+
def config = mock(Config.class)
314+
when(config.isDebuggerEnabled()).thenReturn(true)
315+
when(config.isDebuggerClassFileDumpEnabled()).thenReturn(true)
316+
when(config.isDebuggerVerifyByteCode()).thenReturn(false)
317+
when(config.getFinalDebuggerSnapshotUrl())
318+
.thenReturn("http://localhost:8126/debugger/v1/input")
319+
when(config.getFinalDebuggerSymDBUrl()).thenReturn("http://localhost:8126/symdb/v1/input")
320+
when(config.getDebuggerCodeOriginMaxUserFrames()).thenReturn(8)
321+
322+
def probeStatusSink = mock(ProbeStatusSink.class)
323+
324+
def sink = new DebuggerSink(config, probeStatusSink)
325+
def configurationUpdater = new ConfigurationUpdater(INSTRUMENTATION, DebuggerTransformer::new, config, sink, new ClassesToRetransformFinder())
326+
327+
def currentTransformer = new DebuggerTransformer(config, configuration, {
328+
ProbeDefinition definition, InstrumentationResult result ->
329+
}, sink)
330+
INSTRUMENTATION.addTransformer(currentTransformer)
331+
332+
DebuggerContext.initProbeResolver(configurationUpdater)
333+
DebuggerContext.initClassFilter(new DenyListHelper(null))
334+
DebuggerContext.initValueSerializer(new JsonSnapshotSerializer())
335+
336+
DebuggerContext.initCodeOrigin(new DefaultCodeOriginRecorder(config, configurationUpdater))
337+
}
338+
291339
@SuppressForbidden
292340
void setupSpec() {
293341

0 commit comments

Comments
 (0)