Search in sources :

Example 21 with Method

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]);
}
Also used : Extension(com.newrelic.agent.extension.beans.Extension) Pointcut(com.newrelic.agent.extension.beans.Extension.Instrumentation.Pointcut) ExtensionClassAndMethodMatcher(com.newrelic.agent.instrumentation.custom.ExtensionClassAndMethodMatcher) Instrumentation(com.newrelic.agent.extension.beans.Extension.Instrumentation) Method(com.newrelic.agent.extension.beans.Extension.Instrumentation.Pointcut.Method) Test(org.junit.Test)

Example 22 with Method

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());
}
Also used : Extension(com.newrelic.agent.extension.beans.Extension) Pointcut(com.newrelic.agent.extension.beans.Extension.Instrumentation.Pointcut) ExtensionClassAndMethodMatcher(com.newrelic.agent.instrumentation.custom.ExtensionClassAndMethodMatcher) Instrumentation(com.newrelic.agent.extension.beans.Extension.Instrumentation) Method(com.newrelic.agent.extension.beans.Extension.Instrumentation.Pointcut.Method) Test(org.junit.Test)

Example 23 with Method

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()));
}
Also used : Extension(com.newrelic.agent.extension.beans.Extension) Pointcut(com.newrelic.agent.extension.beans.Extension.Instrumentation.Pointcut) Instrumentation(com.newrelic.agent.extension.beans.Extension.Instrumentation) Method(com.newrelic.agent.extension.beans.Extension.Instrumentation.Pointcut.Method) Test(org.junit.Test)

Example 24 with Method

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()));
}
Also used : HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) Method(com.newrelic.agent.extension.beans.Extension.Instrumentation.Pointcut.Method) MethodParameters(com.newrelic.agent.extension.beans.MethodParameters) MethodMapper(com.newrelic.agent.extension.util.MethodMapper) Test(org.junit.Test)

Example 25 with Method

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()));
}
Also used : HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) Method(com.newrelic.agent.extension.beans.Extension.Instrumentation.Pointcut.Method) MethodParameters(com.newrelic.agent.extension.beans.MethodParameters) MethodMapper(com.newrelic.agent.extension.util.MethodMapper) Test(org.junit.Test)

Aggregations

Method (com.newrelic.agent.extension.beans.Extension.Instrumentation.Pointcut.Method)27 Test (org.junit.Test)25 MethodParameters (com.newrelic.agent.extension.beans.MethodParameters)14 HashMap (java.util.HashMap)14 Pointcut (com.newrelic.agent.extension.beans.Extension.Instrumentation.Pointcut)13 MethodMapper (com.newrelic.agent.extension.util.MethodMapper)13 Extension (com.newrelic.agent.extension.beans.Extension)12 Instrumentation (com.newrelic.agent.extension.beans.Extension.Instrumentation)11 ArrayList (java.util.ArrayList)9 HashSet (java.util.HashSet)6 ExtensionClassAndMethodMatcher (com.newrelic.agent.instrumentation.custom.ExtensionClassAndMethodMatcher)5 AnnotationMethodMatcher (com.newrelic.agent.instrumentation.methodmatchers.AnnotationMethodMatcher)2 LambdaMethodMatcher (com.newrelic.agent.instrumentation.methodmatchers.LambdaMethodMatcher)2 ReturnTypeMethodMatcher (com.newrelic.agent.instrumentation.methodmatchers.ReturnTypeMethodMatcher)2 AgentHelper.getFile (com.newrelic.agent.AgentHelper.getFile)1 XmlException (com.newrelic.agent.extension.util.XmlException)1 MethodMatcher (com.newrelic.agent.instrumentation.methodmatchers.MethodMatcher)1 ParameterAttributeName (com.newrelic.agent.instrumentation.tracing.ParameterAttributeName)1 File (java.io.File)1