Skip to content

Commit 44de7ec

Browse files
Merge branch 'master' into duncan-harvey/azure-functions-trace-metrics
2 parents 9cbc4a2 + 9c4ccdf commit 44de7ec

File tree

8 files changed

+65
-71
lines changed

8 files changed

+65
-71
lines changed

dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/codeorigin/DefaultCodeOriginRecorder.java

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
package com.datadog.debugger.codeorigin;
22

33
import static com.datadog.debugger.agent.ConfigurationAcceptor.Source.CODE_ORIGIN;
4-
import static datadog.trace.api.DDTags.DD_CODE_ORIGIN_FRAME;
5-
import static java.lang.String.format;
4+
import static datadog.trace.api.DDTags.*;
65

76
import com.datadog.debugger.agent.ConfigurationUpdater;
87
import com.datadog.debugger.exception.Fingerprinter;
@@ -172,10 +171,9 @@ public CodeOriginSnapshotConsumer(boolean entrySpanProbe) {
172171
@Override
173172
public void accept(Snapshot snapshot) {
174173
AgentSpan span = AgentTracer.get().activeSpan();
175-
String snapshotId = format(DD_CODE_ORIGIN_FRAME, 0, "snapshot_id");
176-
span.setTag(snapshotId, snapshot.getId());
174+
span.setTag(DD_CODE_ORIGIN_FRAME_SNAPSHOT_ID, snapshot.getId());
177175
if (entrySpanProbe) {
178-
span.getLocalRootSpan().setTag(snapshotId, snapshot.getId());
176+
span.getLocalRootSpan().setTag(DD_CODE_ORIGIN_FRAME_SNAPSHOT_ID, snapshot.getId());
179177
}
180178
}
181179
}

dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/probe/CodeOriginProbe.java

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
package com.datadog.debugger.probe;
22

3-
import static datadog.trace.api.DDTags.DD_CODE_ORIGIN_FRAME;
3+
import static datadog.trace.api.DDTags.*;
44
import static datadog.trace.api.DDTags.DD_CODE_ORIGIN_TYPE;
5-
import static java.lang.String.format;
65
import static java.util.Arrays.asList;
76
import static java.util.Collections.singletonList;
87

@@ -66,11 +65,11 @@ public void commit(
6665
for (AgentSpan s : agentSpans) {
6766
if (s.getTag(DD_CODE_ORIGIN_TYPE) == null) {
6867
s.setTag(DD_CODE_ORIGIN_TYPE, entrySpanProbe ? "entry" : "exit");
69-
s.setTag(format(DD_CODE_ORIGIN_FRAME, 0, "file"), location.getFile());
70-
s.setTag(format(DD_CODE_ORIGIN_FRAME, 0, "method"), location.getMethod());
71-
s.setTag(format(DD_CODE_ORIGIN_FRAME, 0, "line"), location.getLines().get(0));
72-
s.setTag(format(DD_CODE_ORIGIN_FRAME, 0, "type"), location.getType());
73-
s.setTag(format(DD_CODE_ORIGIN_FRAME, 0, "signature"), signature);
68+
s.setTag(DD_CODE_ORIGIN_FRAME_FILE, location.getFile());
69+
s.setTag(DD_CODE_ORIGIN_FRAME_METHOD, location.getMethod());
70+
s.setTag(DD_CODE_ORIGIN_FRAME_LINE, location.getLines().get(0));
71+
s.setTag(DD_CODE_ORIGIN_FRAME_TYPE, location.getType());
72+
s.setTag(DD_CODE_ORIGIN_FRAME_SIGNATURE, signature);
7473
}
7574
}
7675
}

dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/origin/CodeOriginTest.java

+19-32
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package com.datadog.debugger.origin;
22

3-
import static datadog.trace.api.DDTags.DD_CODE_ORIGIN_FRAME;
3+
import static datadog.trace.api.DDTags.DD_CODE_ORIGIN_FRAME_LINE;
4+
import static datadog.trace.api.DDTags.DD_CODE_ORIGIN_FRAME_METHOD;
5+
import static datadog.trace.api.DDTags.DD_CODE_ORIGIN_FRAME_SNAPSHOT_ID;
46
import static datadog.trace.api.DDTags.DD_CODE_ORIGIN_PREFIX;
5-
import static datadog.trace.api.DDTags.DD_CODE_ORIGIN_TYPE;
67
import static datadog.trace.util.AgentThreadFactory.AgentThread.TASK_SCHEDULER;
78
import static java.lang.String.format;
89
import static java.util.Arrays.asList;
@@ -25,6 +26,7 @@
2526
import com.datadog.debugger.util.TestTraceInterceptor;
2627
import datadog.trace.agent.tooling.TracerInstaller;
2728
import datadog.trace.api.Config;
29+
import datadog.trace.api.DDTags;
2830
import datadog.trace.api.InstrumenterConfig;
2931
import datadog.trace.api.interceptor.MutableSpan;
3032
import datadog.trace.bootstrap.debugger.DebuggerContext;
@@ -140,7 +142,7 @@ public void doubleEntry() throws IOException, URISyntaxException {
140142
List<? extends MutableSpan> trace = traceInterceptor.getTrace();
141143
MutableSpan span = trace.get(0);
142144
// this should be entry but until we get the ordering resolved, it's this.
143-
assertEquals("entry", span.getTag(format(DD_CODE_ORIGIN_FRAME, 0, "method")));
145+
assertEquals("entry", span.getTag(DD_CODE_ORIGIN_FRAME_METHOD));
144146
}
145147

146148
@Test
@@ -232,7 +234,7 @@ private void checkResults(Class<?> testClass, String parameter, int snapshotsExp
232234
.collect(Collectors.toList());
233235

234236
for (DDSpan span : list) {
235-
checkEntrySpanTags(span, snapshotsExpected != 0);
237+
checkCodeOriginTags(span, snapshotsExpected != 0);
236238
}
237239

238240
assertEquals(
@@ -268,18 +270,16 @@ public void execute(Runnable target) {
268270
return listener;
269271
}
270272

271-
private static void checkEntrySpanTags(DDSpan span, boolean includeSnapshot) {
272-
assertKeyPresent(span, format(DD_CODE_ORIGIN_FRAME, 0, "file"));
273-
assertKeyPresent(span, format(DD_CODE_ORIGIN_FRAME, 0, "line"));
274-
assertNotEquals(-1, span.getTag(format(DD_CODE_ORIGIN_FRAME, 0, "line")));
275-
assertKeyPresent(span, format(DD_CODE_ORIGIN_FRAME, 0, "method"));
276-
assertKeyPresent(span, format(DD_CODE_ORIGIN_FRAME, 0, "signature"));
277-
assertKeyPresent(span, format(DD_CODE_ORIGIN_FRAME, 0, "type"));
273+
private static void checkCodeOriginTags(DDSpan span, boolean includeSnapshot) {
274+
for (String tag : DDTags.REQUIRED_CODE_ORIGIN_TAGS) {
275+
assertKeyPresent(span, tag);
276+
}
277+
assertNotEquals(-1, span.getTag(DD_CODE_ORIGIN_FRAME_LINE));
278278

279279
if (includeSnapshot) {
280-
assertKeyPresent(span, format(DD_CODE_ORIGIN_FRAME, 0, "snapshot_id"));
280+
assertKeyPresent(span, DD_CODE_ORIGIN_FRAME_SNAPSHOT_ID);
281281
} else {
282-
assertKeyNotPresent(span, format(DD_CODE_ORIGIN_FRAME, 0, "snapshot_id"));
282+
assertKeyNotPresent(span, DD_CODE_ORIGIN_FRAME_SNAPSHOT_ID);
283283
}
284284
}
285285

@@ -298,27 +298,14 @@ private static void assertKeyNotPresent(MutableSpan span, String key) {
298298
}
299299

300300
private static void checkExitSpanTags(DDSpan span, boolean includeSnapshot) {
301-
String keys =
302-
format("Existing keys for %s: %s", span.getOperationName(), new TreeSet<>(ldKeys(span)));
303-
304-
assertKeyPresent(span, DD_CODE_ORIGIN_TYPE);
305-
assertKeyPresent(span, format(DD_CODE_ORIGIN_FRAME, 0, "file"));
306-
assertKeyPresent(span, format(DD_CODE_ORIGIN_FRAME, 0, "line"));
307-
assertNotEquals(-1, span.getTag(format(DD_CODE_ORIGIN_FRAME, 0, "line")));
308-
assertKeyPresent(span, format(DD_CODE_ORIGIN_FRAME, 0, "method"));
309-
assertKeyPresent(span, format(DD_CODE_ORIGIN_FRAME, 0, "type"));
310-
if (includeSnapshot) {
311-
assertKeyPresent(span, format(DD_CODE_ORIGIN_FRAME, 0, "snapshot_id"));
301+
for (String tag : DDTags.REQUIRED_CODE_ORIGIN_TAGS) {
302+
assertKeyPresent(span, tag);
312303
}
304+
assertNotEquals(-1, span.getTag(DD_CODE_ORIGIN_FRAME_LINE));
313305

314-
MutableSpan rootSpan = span.getLocalRootSpan();
315-
assertEquals(rootSpan.getTag(DD_CODE_ORIGIN_TYPE), "entry", keys);
316-
Object file = rootSpan.getTag(format(DD_CODE_ORIGIN_FRAME, 0, "file"));
317-
assertNotNull(file, rootSpan.getTags().toString());
318-
assertNotNull(rootSpan.getTag(format(DD_CODE_ORIGIN_FRAME, 0, "line")));
319-
assertNotEquals(-1, rootSpan.getTag(format(DD_CODE_ORIGIN_FRAME, 0, "line")));
320-
assertNotNull(rootSpan.getTag(format(DD_CODE_ORIGIN_FRAME, 0, "method")));
321-
assertNotNull(rootSpan.getTag(format(DD_CODE_ORIGIN_FRAME, 0, "type")));
306+
if (includeSnapshot) {
307+
assertKeyPresent(span, DD_CODE_ORIGIN_FRAME_SNAPSHOT_ID);
308+
}
322309
}
323310

324311
private static Set<String> ldKeys(MutableSpan span) {

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

+1-4
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import datadog.trace.api.IdGenerationStrategy
3030
import datadog.trace.api.StatsDClient
3131
import datadog.trace.api.TraceConfig
3232
import datadog.trace.api.WellKnownTags
33-
import datadog.trace.api.config.DebuggerConfig
3433
import datadog.trace.api.config.GeneralConfig
3534
import datadog.trace.api.config.TracerConfig
3635
import datadog.trace.api.gateway.RequestContext
@@ -85,8 +84,6 @@ import static datadog.communication.http.OkHttpUtils.buildHttpClient
8584
import static datadog.trace.api.ConfigDefaults.DEFAULT_AGENT_HOST
8685
import static datadog.trace.api.ConfigDefaults.DEFAULT_AGENT_TIMEOUT
8786
import static datadog.trace.api.ConfigDefaults.DEFAULT_TRACE_AGENT_PORT
88-
import static datadog.trace.api.config.DebuggerConfig.*
89-
import static datadog.trace.api.config.DebuggerConfig.DYNAMIC_INSTRUMENTATION_ENABLED
9087
import static datadog.trace.api.config.DebuggerConfig.DYNAMIC_INSTRUMENTATION_VERIFY_BYTECODE
9188
import static datadog.trace.api.config.TraceInstrumentationConfig.CODE_ORIGIN_FOR_SPANS_ENABLED
9289
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious
@@ -310,12 +307,12 @@ abstract class AgentTestRunner extends DDSpecification implements AgentBuilder.L
310307
def codeOriginSetup() {
311308
injectSysConfig(CODE_ORIGIN_FOR_SPANS_ENABLED, "true", true)
312309
injectSysConfig(DYNAMIC_INSTRUMENTATION_VERIFY_BYTECODE, "false", true)
310+
rebuildConfig()
313311

314312
def configuration = Configuration.builder()
315313
.setService("code origin test")
316314
.build()
317315

318-
rebuildConfig()
319316

320317
def config = Config.get()
321318

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

+3-9
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@ import groovy.transform.stc.SimpleType
1313

1414
import java.util.regex.Pattern
1515

16-
import static datadog.trace.api.DDTags.DD_CODE_ORIGIN_FRAME
17-
import static java.lang.String.format
18-
1916
class TagsAssert {
2017
private final long spanParentId
2118
private final Map<String, Object> tags
@@ -131,12 +128,9 @@ class TagsAssert {
131128
}
132129

133130
def codeOriginTags() {
134-
assert tags[DDTags.DD_CODE_ORIGIN_TYPE] != null
135-
assert tags[format(DD_CODE_ORIGIN_FRAME, 0, "file")] != null
136-
assert tags[format(DD_CODE_ORIGIN_FRAME, 0, "method")] != null
137-
assert tags[format(DD_CODE_ORIGIN_FRAME, 0, "line")] != null
138-
assert tags[format(DD_CODE_ORIGIN_FRAME, 0, "type")] != null
139-
assert tags[format(DD_CODE_ORIGIN_FRAME, 0, "signature")] != null
131+
DDTags.REQUIRED_CODE_ORIGIN_TAGS.each {
132+
assert tags[it] != null
133+
}
140134
}
141135

142136
def errorTags(Throwable error) {

dd-smoke-tests/debugger-integration-tests/src/test/java/datadog/smoketest/CodeOriginIntegrationTest.java

+8-13
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package datadog.smoketest;
22

3+
import static datadog.trace.api.DDTags.DD_CODE_ORIGIN_FRAME_FILE;
4+
import static datadog.trace.api.DDTags.DD_CODE_ORIGIN_FRAME_LINE;
5+
import static datadog.trace.api.DDTags.DD_CODE_ORIGIN_FRAME_METHOD;
6+
import static datadog.trace.api.DDTags.DD_CODE_ORIGIN_FRAME_SIGNATURE;
37
import static org.junit.jupiter.api.Assertions.assertEquals;
48

59
import datadog.trace.api.DDTags;
@@ -12,15 +16,6 @@
1216

1317
public class CodeOriginIntegrationTest extends ServerAppDebuggerIntegrationTest {
1418

15-
private static final String DD_CODE_ORIGIN_FRAMES_0_FILE =
16-
String.format(DDTags.DD_CODE_ORIGIN_FRAME, 0, "file");
17-
private static final String DD_CODE_ORIGIN_FRAMES_0_METHOD =
18-
String.format(DDTags.DD_CODE_ORIGIN_FRAME, 0, "method");
19-
private static final String DD_CODE_ORIGIN_FRAMES_0_SIGNATURE =
20-
String.format(DDTags.DD_CODE_ORIGIN_FRAME, 0, "signature");
21-
private static final String DD_CODE_ORIGIN_FRAMES_0_LINE =
22-
String.format(DDTags.DD_CODE_ORIGIN_FRAME, 0, "line");
23-
2419
@Override
2520
protected ProcessBuilder createProcessBuilder(Path logFilePath, String... params) {
2621
List<String> commandParams = getDebuggerCommandParams();
@@ -46,11 +41,11 @@ void testCodeOriginTraceAnnotation() throws Exception {
4641
assertEquals("entry", span.getMeta().get(DDTags.DD_CODE_ORIGIN_TYPE));
4742
assertEquals(
4843
"ServerDebuggerTestApplication.java",
49-
span.getMeta().get(DD_CODE_ORIGIN_FRAMES_0_FILE));
50-
assertEquals("runTracedMethod", span.getMeta().get(DD_CODE_ORIGIN_FRAMES_0_METHOD));
44+
span.getMeta().get(DD_CODE_ORIGIN_FRAME_FILE));
45+
assertEquals("runTracedMethod", span.getMeta().get(DD_CODE_ORIGIN_FRAME_METHOD));
5146
assertEquals(
52-
"(java.lang.String)", span.getMeta().get(DD_CODE_ORIGIN_FRAMES_0_SIGNATURE));
53-
assertEquals("134", span.getMeta().get(DD_CODE_ORIGIN_FRAMES_0_LINE));
47+
"(java.lang.String)", span.getMeta().get(DD_CODE_ORIGIN_FRAME_SIGNATURE));
48+
assertEquals("134", span.getMeta().get(DD_CODE_ORIGIN_FRAME_LINE));
5449
codeOrigin.set(true);
5550
}
5651
}

dd-trace-api/src/main/java/datadog/trace/api/DDTags.java

+19-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,25 @@ public class DDTags {
66

77
public static final String DD_CODE_ORIGIN_TYPE = DD_CODE_ORIGIN_PREFIX + "type";
88
// _dd.code_origin.frames.%d.file|line|method|type|snapshot_id
9-
public static final String DD_CODE_ORIGIN_FRAME = DD_CODE_ORIGIN_PREFIX + "frames.%d.%s";
9+
public static final String DD_CODE_ORIGIN_FRAME_FILE = DD_CODE_ORIGIN_PREFIX + "frames.0.file";
10+
public static final String DD_CODE_ORIGIN_FRAME_TYPE = DD_CODE_ORIGIN_PREFIX + "frames.0.type";
11+
public static final String DD_CODE_ORIGIN_FRAME_METHOD =
12+
DD_CODE_ORIGIN_PREFIX + "frames.0.method";
13+
public static final String DD_CODE_ORIGIN_FRAME_SIGNATURE =
14+
DD_CODE_ORIGIN_PREFIX + "frames.0.signature";
15+
public static final String DD_CODE_ORIGIN_FRAME_LINE = DD_CODE_ORIGIN_PREFIX + "frames.0.line";
16+
public static final String DD_CODE_ORIGIN_FRAME_SNAPSHOT_ID =
17+
DD_CODE_ORIGIN_PREFIX + "frames.0.snapshot_id";
18+
19+
public static final String[] REQUIRED_CODE_ORIGIN_TAGS =
20+
new String[] {
21+
DD_CODE_ORIGIN_TYPE,
22+
DD_CODE_ORIGIN_FRAME_FILE,
23+
DD_CODE_ORIGIN_FRAME_METHOD,
24+
DD_CODE_ORIGIN_FRAME_LINE,
25+
DD_CODE_ORIGIN_FRAME_TYPE,
26+
DD_CODE_ORIGIN_FRAME_SIGNATURE,
27+
};
1028

1129
public static final String SPAN_TYPE = "span.type";
1230
public static final String SERVICE_NAME = "service.name";

static-analysis.datadog.yml

+6
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ rulesets:
2222
one-declaration-per-line:
2323
ignore:
2424
- "**"
25+
missing-switch-statement-default:
26+
ignore:
27+
- "**"
2528
redundant-initializer:
2629
ignore:
2730
- "**"
@@ -33,6 +36,9 @@ rulesets:
3336
boolean-get-method-name:
3437
ignore:
3538
- "**"
39+
call-super-in-constructor:
40+
ignore:
41+
- "**"
3642
control-statement-braces:
3743
ignore:
3844
- "**"

0 commit comments

Comments
 (0)