use of com.newrelic.agent.extension.beans.Extension.Instrumentation.Pointcut.Method in project newrelic-java-agent by newrelic.
the class ExtensionDomParserTest method testDomOnePointCutNoPrefix.
@Test
public void testDomOnePointCutNoPrefix() throws Exception {
Extension ext = ExtensionDomParser.readFile(getFile(FILE_PATH_1_NO_PREFIX));
// ext attributes
Assert.assertEquals("test1", ext.getName());
Assert.assertEquals(1.0, ext.getVersion(), .001);
Assert.assertTrue(ext.isEnabled());
Instrumentation inst = ext.getInstrumentation();
Assert.assertEquals("PREFIX", inst.getMetricPrefix());
List<Pointcut> thePcs = inst.getPointcut();
Assert.assertEquals(1, thePcs.size());
Pointcut pc = thePcs.get(0);
Assert.assertTrue(pc.isTransactionStartPoint());
Assert.assertFalse(pc.isIgnoreTransaction());
Assert.assertFalse(pc.isExcludeFromTransactionTrace());
Assert.assertFalse(pc.isLeaf());
Assert.assertNull(pc.getMetricNameFormat());
Assert.assertEquals("test.CustomExampleTest", pc.getClassName().getValue());
List<Method> methods = pc.getMethod();
Assert.assertEquals(2, methods.size());
Assert.assertEquals("run", methods.get(0).getName());
Assert.assertEquals("finish", methods.get(1).getName());
Assert.assertEquals("(Ljava/lang/String;Ljava/lang/String;)", MethodParameters.getDescriptor(methods.get(0).getParameters()));
Assert.assertEquals("(F)", MethodParameters.getDescriptor(methods.get(1).getParameters()));
List<ExtensionClassAndMethodMatcher> pcs = ExtensionConversionUtility.convertToPointCutsForValidation(ext);
Assert.assertNotNull(pcs);
Assert.assertEquals(1, pcs.size());
ExtensionClassAndMethodMatcher actual = pcs.get(0);
// test method matching
Assert.assertTrue(actual.getMethodMatcher().matches(MethodMatcher.UNSPECIFIED_ACCESS, "run", "(Ljava/lang/String;Ljava/lang/String;)V", com.google.common.collect.ImmutableSet.<String>of()));
Assert.assertFalse(actual.getMethodMatcher().matches(MethodMatcher.UNSPECIFIED_ACCESS, "finish", "(Ljava/lang/String;Ljava/lang/String;)V", com.google.common.collect.ImmutableSet.<String>of()));
Assert.assertTrue(actual.getMethodMatcher().matches(MethodMatcher.UNSPECIFIED_ACCESS, "finish", "(F)V", com.google.common.collect.ImmutableSet.<String>of()));
Assert.assertFalse(actual.getMethodMatcher().matches(MethodMatcher.UNSPECIFIED_ACCESS, "run", "(F)V", com.google.common.collect.ImmutableSet.<String>of()));
Assert.assertFalse(actual.getMethodMatcher().matches(MethodMatcher.UNSPECIFIED_ACCESS, "finish", "(B)V", com.google.common.collect.ImmutableSet.<String>of()));
// test class matching
Assert.assertEquals(1, actual.getClassMatcher().getClassNames().size());
Assert.assertEquals("test/CustomExampleTest", actual.getClassMatcher().getClassNames().toArray()[0]);
}
use of com.newrelic.agent.extension.beans.Extension.Instrumentation.Pointcut.Method in project newrelic-java-agent by newrelic.
the class ExtensionDomParserTest method testClassInterface.
@Test
public void testClassInterface() throws Exception {
Extension ext = ExtensionDomParser.readFile(getFile(FILE_PATH_7_INTERFACE_CLASS));
// ext attributes
Assert.assertEquals("test1", ext.getName());
Assert.assertEquals(1.0, ext.getVersion(), .001);
Assert.assertTrue(ext.isEnabled());
Instrumentation inst = ext.getInstrumentation();
List<Pointcut> thePcs = inst.getPointcut();
Assert.assertEquals(2, thePcs.size());
Pointcut pc = thePcs.get(0);
Assert.assertTrue(pc.isTransactionStartPoint());
Assert.assertEquals("com.newrelic.agent.extension.beans.Extension", pc.getClassName().getValue());
Assert.assertNull(pc.getInterfaceName());
List<Method> methods = pc.getMethod();
Assert.assertEquals(1, methods.size());
pc = thePcs.get(1);
Assert.assertTrue(pc.isTransactionStartPoint());
Assert.assertEquals("com.newrelic.agent.Agent", pc.getInterfaceName());
Assert.assertNull(pc.getClassName());
methods = pc.getMethod();
Assert.assertEquals(2, methods.size());
List<ExtensionClassAndMethodMatcher> pcs = ExtensionConversionUtility.convertToPointCutsForValidation(ext);
Assert.assertNotNull(pcs);
Assert.assertEquals(2, pcs.size());
ExtensionClassAndMethodMatcher actual = pcs.get(0);
Assert.assertEquals(ExactClassMatcher.class, actual.getClassMatcher().getClass());
actual = pcs.get(1);
Assert.assertEquals(InterfaceMatcher.class, actual.getClassMatcher().getClass());
}
use of com.newrelic.agent.extension.beans.Extension.Instrumentation.Pointcut.Method in project newrelic-java-agent by newrelic.
the class ExtensionDomParserTest method testDomAllAtts.
@Test
public void testDomAllAtts() throws Exception {
Extension ext = ExtensionDomParser.readFile(getFile(FILE_PATH_2));
// ext attributes
Assert.assertEquals("test2", ext.getName());
Assert.assertEquals(2.2, ext.getVersion(), .001);
Assert.assertFalse(ext.isEnabled());
Instrumentation inst = ext.getInstrumentation();
Assert.assertEquals("special", inst.getMetricPrefix());
List<Pointcut> thePcs = inst.getPointcut();
Assert.assertEquals(2, thePcs.size());
Pointcut pc = thePcs.get(0);
Assert.assertTrue(pc.isTransactionStartPoint());
Assert.assertFalse(pc.isIgnoreTransaction());
Assert.assertTrue(pc.isExcludeFromTransactionTrace());
Assert.assertTrue(pc.isLeaf());
Assert.assertEquals("/Hello", pc.getMetricNameFormat());
Assert.assertEquals("test.CustomExampleTest$1", ExtensionConversionUtility.getClassName(pc));
List<Method> methods = pc.getMethod();
Assert.assertEquals(2, methods.size());
Assert.assertEquals("run", methods.get(0).getName());
Assert.assertEquals("finish", methods.get(1).getName());
Assert.assertEquals("(Ljava/lang/String;[Ljava/lang/String;)", MethodParameters.getDescriptor(methods.get(0).getParameters()));
Assert.assertEquals("()", MethodParameters.getDescriptor(methods.get(1).getParameters()));
Pointcut pc1 = thePcs.get(1);
Assert.assertFalse(pc1.isTransactionStartPoint());
Assert.assertTrue(pc1.isIgnoreTransaction());
Assert.assertFalse(pc1.isExcludeFromTransactionTrace());
Assert.assertEquals("/Yikes/End", pc1.getMetricNameFormat());
Assert.assertEquals("com.sample.Validator", pc1.getClassName().getValue());
methods = pc1.getMethod();
Assert.assertEquals(2, methods.size());
Assert.assertEquals("runner", methods.get(0).getName());
Assert.assertEquals("startup", methods.get(1).getName());
Assert.assertEquals("(ILjava/util/List;)", MethodParameters.getDescriptor(methods.get(0).getParameters()));
Assert.assertEquals("()", MethodParameters.getDescriptor(methods.get(1).getParameters()));
}
use of com.newrelic.agent.extension.beans.Extension.Instrumentation.Pointcut.Method in project newrelic-java-agent by newrelic.
the class OrExactParamMethodMatcherTest method testMatchingBasicTwoMethods.
@Test
public void testMatchingBasicTwoMethods() throws Exception {
Method m1 = new Method();
m1.setName("hello");
List<String> pts = new ArrayList<>();
pts.add("int");
pts.add("char");
MethodParameters mps1 = new MethodParameters(pts);
m1.setParameters(mps1);
Method m2 = new Method();
m2.setName("configure");
List<String> ptsForM2 = new ArrayList<>();
ptsForM2.add("int");
ptsForM2.add("char");
MethodParameters mps2 = new MethodParameters(ptsForM2);
m2.setParameters(mps2);
List<Method> methods = new ArrayList<>();
methods.add(m1);
methods.add(m2);
Map<String, MethodMapper> mapper = new HashMap<>();
MethodMatcher matcher = MethodMatcherUtility.createMethodMatcher("classz", methods, mapper, "EXT");
Assert.assertTrue(matcher.matches(MethodMatcher.UNSPECIFIED_ACCESS, "hello", "(IC)V", com.google.common.collect.ImmutableSet.<String>of()));
Assert.assertTrue(matcher.matches(MethodMatcher.UNSPECIFIED_ACCESS, "configure", "(IC)V", com.google.common.collect.ImmutableSet.<String>of()));
}
use of com.newrelic.agent.extension.beans.Extension.Instrumentation.Pointcut.Method in project newrelic-java-agent by newrelic.
the class OrExactParamMethodMatcherTest method testMatchingBasic.
@Test
public void testMatchingBasic() throws XmlException {
List<String> pts = new ArrayList<>();
Method m1 = new Method();
m1.setName("hello");
pts.add("int[]");
pts.add("char");
pts.add("boolean");
pts.add("float");
pts.add("byte");
pts.add("double");
pts.add("java.lang.String");
MethodParameters mps = new MethodParameters(pts);
m1.setParameters(mps);
Method m2 = new Method();
m2.setName("configure");
List<String> ptsForM2 = new ArrayList<>();
ptsForM2.add("java.util.List<String>");
ptsForM2.add("java.util.Map<Integer>[][][]");
ptsForM2.add("short");
MethodParameters mps2 = new MethodParameters(ptsForM2);
m2.setParameters(mps2);
List<Method> methods = new ArrayList<>();
methods.add(m1);
methods.add(m2);
Map<String, MethodMapper> mapper = new HashMap<>();
MethodMatcher matcher = MethodMatcherUtility.createMethodMatcher("classz", methods, mapper, "EXT");
Assert.assertTrue(matcher.matches(MethodMatcher.UNSPECIFIED_ACCESS, "hello", "([ICZFBDLjava/lang/String;)V", com.google.common.collect.ImmutableSet.<String>of()));
Assert.assertFalse(matcher.matches(MethodMatcher.UNSPECIFIED_ACCESS, "configure", "([ICZFBDLjava/lang/String;)I", com.google.common.collect.ImmutableSet.<String>of()));
Assert.assertFalse(matcher.matches(MethodMatcher.UNSPECIFIED_ACCESS, "hello", "([ICZBFDLjava/lang/String;)S", com.google.common.collect.ImmutableSet.<String>of()));
Assert.assertTrue(matcher.matches(MethodMatcher.UNSPECIFIED_ACCESS, "configure", "(Ljava/util/List;[[[Ljava/util/Map;S)java/lang/String", com.google.common.collect.ImmutableSet.<String>of()));
Assert.assertFalse(matcher.matches(MethodMatcher.UNSPECIFIED_ACCESS, "hello", "(Ljava/util/List;[[[Ljava/util/Map;S)V", com.google.common.collect.ImmutableSet.<String>of()));
Assert.assertFalse(matcher.matches(MethodMatcher.UNSPECIFIED_ACCESS, "configure", "(Ljava/util/List;[[[Ljava/util/Map;)V", com.google.common.collect.ImmutableSet.<String>of()));
}
Aggregations