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 }
|