< prev index next >

core/org.openjdk.jmc.agent/src/test/java/org/openjdk/jmc/agent/test/TestJFRTransformer.java

Print this page




  44 
  45 import javax.xml.stream.XMLStreamException;
  46 
  47 import org.junit.Test;
  48 import org.objectweb.asm.ClassReader;
  49 import org.objectweb.asm.Type;
  50 import org.objectweb.asm.util.CheckClassAdapter;
  51 import org.objectweb.asm.util.TraceClassVisitor;
  52 import org.openjdk.jmc.agent.Agent;
  53 import org.openjdk.jmc.agent.TransformRegistry;
  54 import org.openjdk.jmc.agent.Transformer;
  55 import org.openjdk.jmc.agent.impl.DefaultTransformRegistry;
  56 import org.openjdk.jmc.agent.test.util.TestToolkit;
  57 
  58 public class TestJFRTransformer {
  59         private static AtomicInteger runCount = new AtomicInteger(0);
  60 
  61         @Test
  62         public void testRunTransforms() throws XMLStreamException, IllegalClassFormatException, IOException {
  63                 TransformRegistry registry = DefaultTransformRegistry
  64                                 .from(TestToolkit.getProbesXML("RunTransforms" + runCount.getAndIncrement())); //$NON-NLS-1$
  65 
  66                 assertTrue(registry.hasPendingTransforms(Type.getInternalName(InstrumentMe.class)));
  67 
  68                 Transformer jfrTransformer = new Transformer(registry);
  69                 byte[] transformedClass = jfrTransformer.transform(InstrumentMe.class.getClassLoader(),
  70                                 Type.getInternalName(InstrumentMe.class), InstrumentMe.class, null,
  71                                 TestToolkit.getByteCode(InstrumentMe.class));
  72 
  73                 assertNotNull(transformedClass);
  74                 assertFalse(registry.hasPendingTransforms(Type.getInternalName(InstrumentMe.class)));
  75 
  76                 if (Agent.getLogger().isLoggable(Level.FINE)) {
  77                         // If we've asked for verbose information, we write the generated class
  78                         // and also dump the registry contents to stdout.
  79                         TraceClassVisitor visitor = new TraceClassVisitor(new PrintWriter(System.out));
  80                         CheckClassAdapter checkAdapter = new CheckClassAdapter(visitor);
  81                         ClassReader reader = new ClassReader(transformedClass);
  82                         reader.accept(checkAdapter, 0);
  83                         System.out.println(registry);
  84                 }


  44 
  45 import javax.xml.stream.XMLStreamException;
  46 
  47 import org.junit.Test;
  48 import org.objectweb.asm.ClassReader;
  49 import org.objectweb.asm.Type;
  50 import org.objectweb.asm.util.CheckClassAdapter;
  51 import org.objectweb.asm.util.TraceClassVisitor;
  52 import org.openjdk.jmc.agent.Agent;
  53 import org.openjdk.jmc.agent.TransformRegistry;
  54 import org.openjdk.jmc.agent.Transformer;
  55 import org.openjdk.jmc.agent.impl.DefaultTransformRegistry;
  56 import org.openjdk.jmc.agent.test.util.TestToolkit;
  57 
  58 public class TestJFRTransformer {
  59         private static AtomicInteger runCount = new AtomicInteger(0);
  60 
  61         @Test
  62         public void testRunTransforms() throws XMLStreamException, IllegalClassFormatException, IOException {
  63                 TransformRegistry registry = DefaultTransformRegistry
  64                                 .from(TestToolkit.getProbesXML("RunTransforms" + runCount.getAndIncrement()));
  65 
  66                 assertTrue(registry.hasPendingTransforms(Type.getInternalName(InstrumentMe.class)));
  67 
  68                 Transformer jfrTransformer = new Transformer(registry);
  69                 byte[] transformedClass = jfrTransformer.transform(InstrumentMe.class.getClassLoader(),
  70                                 Type.getInternalName(InstrumentMe.class), InstrumentMe.class, null,
  71                                 TestToolkit.getByteCode(InstrumentMe.class));
  72 
  73                 assertNotNull(transformedClass);
  74                 assertFalse(registry.hasPendingTransforms(Type.getInternalName(InstrumentMe.class)));
  75 
  76                 if (Agent.getLogger().isLoggable(Level.FINE)) {
  77                         // If we've asked for verbose information, we write the generated class
  78                         // and also dump the registry contents to stdout.
  79                         TraceClassVisitor visitor = new TraceClassVisitor(new PrintWriter(System.out));
  80                         CheckClassAdapter checkAdapter = new CheckClassAdapter(visitor);
  81                         ClassReader reader = new ClassReader(transformedClass);
  82                         reader.accept(checkAdapter, 0);
  83                         System.out.println(registry);
  84                 }
< prev index next >