use of com.newrelic.agent.instrumentation.methodmatchers.MethodMatcher in project newrelic-java-agent by newrelic.
the class ExtensionServiceTest method testXMLWithNoNameOrVersion2.
/**
* The first file should not be read in because it does not have a name or version.
*/
@Test
public void testXMLWithNoNameOrVersion2() throws Exception {
setupFiles(true, XML_NO_NAME_OR_VERSION, XML_FILE_PATH_1);
List<ExtensionClassAndMethodMatcher> pcs = extensionService.getEnabledPointCuts();
assertNotNull(pcs);
assertEquals(3, pcs.size());
List<String> classNames = new ArrayList<>();
List<MethodMatcher> mms = new ArrayList<>();
for (ExtensionClassAndMethodMatcher pc : pcs) {
classNames.addAll(pc.getClassMatcher().getClassNames());
mms.add(pc.getMethodMatcher());
}
// verify that classes
assertEquals(3, classNames.size());
assertTrue(classNames.contains("test/CustomExtensionTest$1"));
assertTrue(classNames.contains("test/AbstractCustomExtensionTest"));
assertTrue(classNames.contains("test/CustomExtensionTest"));
}
use of com.newrelic.agent.instrumentation.methodmatchers.MethodMatcher in project newrelic-java-agent by newrelic.
the class ExtensionServiceTest method verifyMatch.
private void verifyMatch(String method, String signature, List<MethodMatcher> mms) {
boolean wasMatch = false;
for (MethodMatcher current : mms) {
if (current.matches(MethodMatcher.UNSPECIFIED_ACCESS, method, signature, com.google.common.collect.ImmutableSet.<String>of())) {
wasMatch = true;
return;
}
}
assertTrue("One of the method matches should have matched " + method + signature + " but did not", wasMatch);
}
use of com.newrelic.agent.instrumentation.methodmatchers.MethodMatcher in project newrelic-java-agent by newrelic.
the class ExtensionServiceTest method testXMLExtensionCaptureMethodParams.
@Test
public void testXMLExtensionCaptureMethodParams() throws Exception {
setupFiles(true, XML_CAPTURE_METHOD_PARAMS);
List<ExtensionClassAndMethodMatcher> pcs = extensionService.getEnabledPointCuts();
assertNotNull(pcs);
assertEquals(1, pcs.size());
List<String> classNames = new ArrayList<>();
List<MethodMatcher> mms = new ArrayList<>();
for (ExtensionClassAndMethodMatcher pc : pcs) {
classNames.addAll(pc.getClassMatcher().getClassNames());
mms.add(pc.getMethodMatcher());
}
// verify classes
assertEquals(1, classNames.size());
assertTrue(classNames.contains("com/nr/Client/impl/OkClient"));
// verify the methods
assertEquals(1, mms.size());
verifyMatch("myMethod", "(Ljava/lang/String;J)V", mms);
}
use of com.newrelic.agent.instrumentation.methodmatchers.MethodMatcher in project newrelic-java-agent by newrelic.
the class ExtensionServiceTest method testXMLExtensionDifferentVersions.
/**
* Tests that only the xml with the higher version gets read in.
*/
@Test
public void testXMLExtensionDifferentVersions() throws Exception {
setupFiles(true, XML_FILE_PATH_1, XML_FILE_PATH_1_1);
List<ExtensionClassAndMethodMatcher> pcs = extensionService.getEnabledPointCuts();
assertNotNull(pcs);
assertEquals(3, pcs.size());
List<String> classNames = new ArrayList<>();
List<MethodMatcher> mms = new ArrayList<>();
for (ExtensionClassAndMethodMatcher pc : pcs) {
classNames.addAll(pc.getClassMatcher().getClassNames());
mms.add(pc.getMethodMatcher());
}
// verify that classes
assertEquals(3, classNames.size());
assertTrue(classNames.contains("test/CustomExtensionTest$1"));
assertTrue(classNames.contains("test/AbstractCustomExtensionTest1"));
assertTrue(classNames.contains("test/CustomExtensionTest1"));
// verify methods
assertEquals(3, mms.size());
verifyMatch("run", "()V", mms);
verifyMatch("abstractTest11", "()V", mms);
verifyMatch("abstractTest21", "()V", mms);
verifyMatch("test2", "(Ljava/lang/String;I)V", mms);
}
use of com.newrelic.agent.instrumentation.methodmatchers.MethodMatcher in project newrelic-java-agent by newrelic.
the class OptimizedClassMatcherTest method testSkipObjectMethods_exactMatch.
@Test
public void testSkipObjectMethods_exactMatch() throws IOException {
List<MethodMatcher> matchers = new ArrayList<>();
for (Method m : OBJECT_METHODS) {
matchers.add(new ExactMethodMatcher(m.getName(), m.getDescriptor()));
}
ClassMatchVisitorFactory matcher = OptimizedClassMatcherBuilder.newBuilder().addClassMethodMatcher(new DefaultClassAndMethodMatcher(new AllClassesMatcher(), OrMethodMatcher.getMethodMatcher(matchers))).build();
Match match = getMatch(matcher, MyObject.class);
Assert.assertNull(match);
}
Aggregations