Skip to content

Commit 98981cf

Browse files
Fix failing tests
1 parent e20ae64 commit 98981cf

File tree

11 files changed

+34
-20
lines changed

11 files changed

+34
-20
lines changed

buildSrc/call-site-instrumentation-plugin/src/main/java/datadog/trace/plugin/csi/impl/AdviceGeneratorImpl.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import static com.github.javaparser.ast.Modifier.Keyword.PUBLIC;
44
import static datadog.trace.plugin.csi.impl.CallSiteFactory.typeResolver;
5+
import static datadog.trace.plugin.csi.util.CallSiteConstants.ADVICE_TYPE_CLASS;
56
import static datadog.trace.plugin.csi.util.CallSiteConstants.AUTO_SERVICE_FQDN;
67
import static datadog.trace.plugin.csi.util.CallSiteConstants.CALL_SITES_CLASS;
78
import static datadog.trace.plugin.csi.util.CallSiteConstants.CALL_SITES_FQCN;
@@ -11,7 +12,6 @@
1112
import static datadog.trace.plugin.csi.util.CallSiteConstants.METHOD_HANDLER_CLASS;
1213
import static datadog.trace.plugin.csi.util.CallSiteConstants.OPCODES_FQDN;
1314
import static datadog.trace.plugin.csi.util.CallSiteConstants.STACK_DUP_MODE_CLASS;
14-
import static datadog.trace.plugin.csi.util.CallSiteConstants.TYPE_CLASS;
1515
import static datadog.trace.plugin.csi.util.CallSiteConstants.TYPE_RESOLVER;
1616
import static datadog.trace.plugin.csi.util.CallSiteUtils.deleteFile;
1717
import static datadog.trace.plugin.csi.util.JavaParserUtils.getPrimaryType;
@@ -213,7 +213,8 @@ private void addAdviceLambda(
213213
.setArguments(
214214
new NodeList<>(
215215
new FieldAccessExpr()
216-
.setScope(new TypeExpr(new ClassOrInterfaceType().setName(TYPE_CLASS)))
216+
.setScope(
217+
new TypeExpr(new ClassOrInterfaceType().setName(ADVICE_TYPE_CLASS)))
217218
.setName(type),
218219
new StringLiteralExpr(pointCut.getOwner().getInternalName()),
219220
new StringLiteralExpr(pointCut.getMethodName()),

buildSrc/call-site-instrumentation-plugin/src/main/java/datadog/trace/plugin/csi/util/CallSiteConstants.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ private CallSiteConstants() {}
3030

3131
public static final String HAS_ENABLED_PROPERTY_CLASS = CALL_SITES_CLASS + ".HasEnabledProperty";
3232

33-
public static final String TYPE_CLASS = "Type";
33+
public static final String ADVICE_TYPE_CLASS = "AdviceType";
3434

3535
public static final String STACK_DUP_MODE_CLASS = "StackDupMode";
3636

dd-java-agent/agent-tooling/src/jmh/java/datadog/trace/agent/tooling/bytebuddy/csi/CallSiteBenchmarkInstrumentation.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package datadog.trace.agent.tooling.bytebuddy.csi;
22

3+
import static datadog.trace.agent.tooling.csi.CallSiteAdvice.AdviceType.AROUND;
4+
35
import datadog.trace.agent.tooling.csi.CallSites;
46
import datadog.trace.agent.tooling.csi.InvokeAdvice;
57
import datadog.trace.agent.tooling.muzzle.ReferenceMatcher;
@@ -44,6 +46,7 @@ public Iterable<CallSites> get() {
4446
return Collections.singletonList(
4547
(container -> {
4648
container.addAdvice(
49+
AROUND,
4750
"javax/servlet/ServletRequest",
4851
"getParameter",
4952
"(Ljava/lang/String;)Ljava/lang/String;",

dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/bytebuddy/csi/Advices.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ void onConstantPool(
370370
@Nonnull TypeDescription type, @Nonnull ConstantPool pool, final byte[] classFile);
371371
}
372372

373-
private interface HasType {
373+
public interface HasType {
374374
byte getType();
375375

376376
static CallSiteAdvice withType(final CallSiteAdvice advice, final byte type) {

dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/bytebuddy/csi/CallSiteTransformer.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package datadog.trace.agent.tooling.bytebuddy.csi;
22

3-
import static datadog.trace.agent.tooling.csi.CallSiteAdvice.Type.BEFORE;
3+
import static datadog.trace.agent.tooling.csi.CallSiteAdvice.AdviceType.AFTER;
44
import static datadog.trace.api.telemetry.LogCollector.SEND_TELEMETRY;
55
import static net.bytebuddy.jar.asm.ClassWriter.COMPUTE_MAXS;
66

@@ -380,8 +380,8 @@ protected void invokeAdvice(
380380
final String name,
381381
final String descriptor,
382382
final boolean isInterface) {
383-
if (isSuperCall && advices.typeOf(advice) == BEFORE) {
384-
// TODO APPSEC-57009 calls to super are not instrumented by before callsites
383+
if (isSuperCall && advices.typeOf(advice) != AFTER) {
384+
// TODO APPSEC-57009 calls to super are only instrumented by after call sites
385385
// just ignore the advice and keep on
386386
mv.visitMethodInsn(opcode, owner, name, descriptor, isInterface);
387387
} else {

dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/csi/CallSiteAdvice.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@ enum StackDupMode {
7373
APPEND_ARRAY
7474
}
7575

76-
abstract class Type {
76+
abstract class AdviceType {
7777

78-
private Type() {}
78+
private AdviceType() {}
7979

8080
public static final byte BEFORE = -1;
8181
public static final byte AROUND = 0;

dd-java-agent/agent-tooling/src/test/groovy/datadog/trace/agent/tooling/csi/BaseCallSiteTest.groovy

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,20 @@ import java.security.MessageDigest
2424
import java.lang.reflect.Method
2525
import java.security.ProtectionDomain
2626

27+
import static datadog.trace.agent.tooling.bytebuddy.csi.Advices.HasType.withType
28+
import static datadog.trace.agent.tooling.csi.CallSiteAdvice.AdviceType.BEFORE
2729
import static net.bytebuddy.matcher.ElementMatchers.any
2830
import static net.bytebuddy.matcher.ElementMatchers.named
2931

3032
@CompileDynamic
3133
class BaseCallSiteTest extends DDSpecification {
3234

33-
protected CallSites mockCallSites(final CallSiteAdvice advice, final Pointcut target, final String... helpers) {
35+
protected CallSites mockCallSites(final byte type = BEFORE, final CallSiteAdvice advice, final Pointcut target, final String... helpers) {
3436
return Stub(CallSites) {
3537
accept(_ as CallSites.Container) >> {
3638
final container = it[0] as CallSites.Container
3739
container.addHelpers(helpers)
38-
container.addAdvice(target.type, target.method, target.descriptor, advice)
40+
container.addAdvice(type, target.type, target.method, target.descriptor, advice)
3941
}
4042
}
4143
}
@@ -44,10 +46,16 @@ class BaseCallSiteTest extends DDSpecification {
4446
final advices = [:] as Map<String, Map<String, Map<String, CallSiteAdvice>>>
4547
final helpers = [] as Set<String>
4648
final container = Stub(CallSites.Container) {
47-
addAdvice(_ as String, _ as String, _ as String, _ as CallSiteAdvice) >> {
48-
advices.computeIfAbsent(it[0] as String, t -> [:])
49-
.computeIfAbsent(it[1] as String, m -> [:])
50-
.put(it[2] as String, it[3] as CallSiteAdvice)
49+
addAdvice(_, _ as String, _ as String, _ as String, _ as CallSiteAdvice) >> {
50+
final type = it[0] as byte
51+
final owner = it[1] as String
52+
final method = it[2] as String
53+
final descriptor = it[3] as String
54+
final advice = it[4] as CallSiteAdvice
55+
advices
56+
.computeIfAbsent(owner, t -> [:])
57+
.computeIfAbsent(method, m -> [:])
58+
.put(descriptor, withType(advice, type))
5159
}
5260
addHelpers(_ as String[]) >> {
5361
Collections.addAll(helpers, it[0] as String[])

dd-java-agent/agent-tooling/src/test/groovy/datadog/trace/agent/tooling/csi/CallSiteInstrumentationTest.groovy

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import net.bytebuddy.jar.asm.Type
99
import java.util.concurrent.atomic.AtomicInteger
1010

1111
import static datadog.trace.agent.tooling.csi.CallSiteAdvice.StackDupMode.PREPEND_ARRAY_CTOR
12+
import static datadog.trace.agent.tooling.csi.CallSiteAdvice.AdviceType.AFTER
13+
import static datadog.trace.agent.tooling.csi.CallSiteAdvice.AdviceType.BEFORE
1214

1315
class CallSiteInstrumentationTest extends BaseCallSiteTest {
1416

@@ -84,7 +86,7 @@ class CallSiteInstrumentationTest extends BaseCallSiteTest {
8486
)
8587
}
8688
}
87-
final callSiteTransformer = new CallSiteTransformer(mockAdvices([mockCallSites(advice, pointcut)]))
89+
final callSiteTransformer = new CallSiteTransformer(mockAdvices([mockCallSites(AFTER, advice, pointcut)]))
8890

8991
when:
9092
final transformedClass = transformType(source, target, callSiteTransformer)
@@ -101,7 +103,7 @@ class CallSiteInstrumentationTest extends BaseCallSiteTest {
101103
@Override
102104
void accept(final Container container) {
103105
final pointcut = buildPointcut(String.getDeclaredMethod('concat', String))
104-
container.addAdvice(pointcut.type, pointcut.method, pointcut.descriptor, new StringConcatAdvice())
106+
container.addAdvice(BEFORE, pointcut.type, pointcut.method, pointcut.descriptor, new StringConcatAdvice())
105107
}
106108
}
107109

dd-java-agent/instrumentation/iast-instrumenter/src/test/java/MockCallSites.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import static datadog.trace.agent.tooling.csi.CallSiteAdvice.Type.BEFORE;
1+
import static datadog.trace.agent.tooling.csi.CallSiteAdvice.AdviceType.BEFORE;
22

33
import datadog.trace.agent.tooling.csi.CallSiteAdvice;
44
import datadog.trace.agent.tooling.csi.CallSites;

dd-java-agent/instrumentation/iast-instrumenter/src/test/java/MockRaspCallSites.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import static datadog.trace.agent.tooling.csi.CallSiteAdvice.Type.BEFORE;
1+
import static datadog.trace.agent.tooling.csi.CallSiteAdvice.AdviceType.BEFORE;
22

33
import datadog.trace.agent.tooling.csi.CallSiteAdvice;
44
import datadog.trace.agent.tooling.csi.CallSites;

dd-java-agent/instrumentation/java-io/src/test/groovy/datadog/trace/instrumentation/java/io/ObjectInputStreamCallSiteTest.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class ObjectInputStreamCallSiteTest extends AgentTestRunner {
3535
new TestCustomObjectInputStream(inputStream())
3636

3737
then:
38-
// TODO APPSEC-57009 calls to super are not instrumented by before callsites
38+
// TODO APPSEC-57009 calls to super are only instrumented by after callsites
3939
0 * iastModule.onObject(_)
4040
}
4141

0 commit comments

Comments
 (0)