Skip to content

Commit

Permalink
Add test for duplicate helper class
Browse files Browse the repository at this point in the history
  • Loading branch information
laurit authored and FlorianBruckner committed Jan 9, 2025
1 parent f9eb7cb commit df9158c
Show file tree
Hide file tree
Showing 5 changed files with 95 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package helper;

public class DuplicateHelper {
public static String addSuffix(String string, String suffix) {
return string + suffix;
}

private DuplicateHelper() {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package helper;

import static net.bytebuddy.matcher.ElementMatchers.named;

import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.description.type.TypeDescription;
import net.bytebuddy.matcher.ElementMatcher;

public class DuplicateHelperInstrumentation implements TypeInstrumentation {
@Override
public ElementMatcher<TypeDescription> typeMatcher() {
return named("helper.DuplicateHelperTestClass");
}

@Override
public void transform(TypeTransformer transformer) {
transformer.applyAdviceToMethod(named("transform"), this.getClass().getName() + "$TestAdvice");
}

@SuppressWarnings("unused")
public static class TestAdvice {
@Advice.OnMethodExit(suppress = Throwable.class)
static void addSuffix(@Advice.Return(readOnly = false) String string) {
string = DuplicateHelper.addSuffix(string, " foo");
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package helper;

import static java.util.Collections.singletonList;

import com.google.auto.service.AutoService;
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
import java.util.Arrays;
import java.util.List;

@AutoService(InstrumentationModule.class)
public class DuplicateHelperInstrumentationModule extends InstrumentationModule {
public DuplicateHelperInstrumentationModule() {
super("duplicate-helper");
}

@Override
public List<String> getAdditionalHelperClassNames() {
// muzzle adds the same class as helper, listing it twice to ensure it doesn't fail
return Arrays.asList("helper.DuplicateHelper", "helper.DuplicateHelper");
}

@Override
public boolean isHelperClass(String className) {
return "helper.DuplicateHelper".equals(className);
}

@Override
public List<TypeInstrumentation> typeInstrumentations() {
return singletonList(new DuplicateHelperInstrumentation());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package helper;

import static org.assertj.core.api.Assertions.assertThat;

import org.junit.jupiter.api.Test;

class DuplicateHelperTest {

@Test
void duplicateHelper() {
String string = DuplicateHelperTestClass.transform("test");
assertThat(string).isEqualTo("test foo");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package helper;

class DuplicateHelperTestClass {

// this method is transformed by instrumentation
public static String transform(String string) {
return string;
}

private DuplicateHelperTestClass() {}
}

0 comments on commit df9158c

Please sign in to comment.