package com.sun.btrace.runtime;
import org.junit.Test;
/**
*
* @author Jaroslav Bachorik
*/
public class BTRACE256Test extends InstrumentorTestBase {
@Test
public void bytecodeValidation() throws Exception {
originalBC = loadTargetClass("issues/BTRACE256");
transform("issues/BTRACE256");
checkTransformation(
"LCONST_0\n" +
"LSTORE 1\n" +
"INVOKESTATIC java/lang/System.nanoTime ()J\n" +
"LSTORE 3\n" +
"LDC \"public void resources.issues.BTRACE256#doStuff\"\n" +
"INVOKESTATIC resources/issues/BTRACE256.$btrace$traces$issues$BTRACE256$entry (Ljava/lang/String;)V\n" +
"INVOKESTATIC java/lang/System.nanoTime ()J\n" +
"LLOAD 3\n" +
"LSUB\n" +
"LSTORE 1\n" +
"LDC \"public void resources.issues.BTRACE256#doStuff\"\n" +
"LLOAD 1\n" +
"INVOKESTATIC resources/issues/BTRACE256.$btrace$traces$issues$BTRACE256$exit (Ljava/lang/String;J)V\n" +
"MAXSTACK = 4\n" +
"MAXLOCALS = 5\n" +
"\n" +
"// access flags 0xA\n" +
"private static $btrace$traces$issues$BTRACE256$entry(Ljava/lang/String;)V\n" +
"@Lcom/sun/btrace/annotations/OnMethod;(clazz=\"/.*\\\\.BTRACE256/\", method=\"doStuff\")\n" +
"@Lcom/sun/btrace/annotations/ProbeMethodName;(fqn=true) // parameter 0\n" +
"TRYCATCHBLOCK L0 L1 L1 java/lang/Throwable\n" +
"GETSTATIC traces/issues/BTRACE256.runtime : Lcom/sun/btrace/BTraceRuntime;\n" +
"INVOKESTATIC com/sun/btrace/BTraceRuntime.enter (Lcom/sun/btrace/BTraceRuntime;)Z\n" +
"IFNE L0\n" +
"RETURN\n" +
"L0\n" +
"GETSTATIC traces/issues/BTRACE256.swingProfiler : Lcom/sun/btrace/Profiler;\n" +
"ALOAD 0\n" +
"INVOKESTATIC com/sun/btrace/BTraceUtils$Profiling.recordEntry (Lcom/sun/btrace/Profiler;Ljava/lang/String;)V\n" +
"INVOKESTATIC com/sun/btrace/BTraceRuntime.leave ()V\n" +
"RETURN\n" +
"L1\n" +
"INVOKESTATIC com/sun/btrace/BTraceRuntime.handleException (Ljava/lang/Throwable;)V\n" +
"INVOKESTATIC com/sun/btrace/BTraceRuntime.leave ()V\n" +
"RETURN\n" +
"\n" +
"// access flags 0xA\n" +
"private static $btrace$traces$issues$BTRACE256$exit(Ljava/lang/String;J)V\n" +
"@Lcom/sun/btrace/annotations/OnMethod;(clazz=\"/.*\\\\.BTRACE256/\", method=\"doStuff\", location=@Lcom/sun/btrace/annotations/Location;(value=Lcom/sun/btrace/annotations/Kind;.RETURN))\n" +
"@Lcom/sun/btrace/annotations/ProbeMethodName;(fqn=true) // parameter 0\n" +
"@Lcom/sun/btrace/annotations/Duration;() // parameter 1\n" +
"TRYCATCHBLOCK L0 L1 L1 java/lang/Throwable\n" +
"GETSTATIC traces/issues/BTRACE256.runtime : Lcom/sun/btrace/BTraceRuntime;\n" +
"INVOKESTATIC com/sun/btrace/BTraceRuntime.enter (Lcom/sun/btrace/BTraceRuntime;)Z\n" +
"IFNE L0\n" +
"RETURN\n" +
"L0\n" +
"GETSTATIC traces/issues/BTRACE256.swingProfiler : Lcom/sun/btrace/Profiler;\n" +
"ALOAD 0\n" +
"LLOAD 1\n" +
"INVOKESTATIC com/sun/btrace/BTraceUtils$Profiling.recordExit (Lcom/sun/btrace/Profiler;Ljava/lang/String;J)V\n" +
"INVOKESTATIC com/sun/btrace/services/impl/Statsd.getInstance ()Lcom/sun/btrace/services/impl/Statsd;\n" +
"DUP\n" +
"ASTORE 3\n" +
"LDC \"my.metric.b\"\n" +
"LDC \"regular,distribution:gaussian\"\n" +
"INVOKEVIRTUAL com/sun/btrace/services/impl/Statsd.increment (Ljava/lang/String;Ljava/lang/String;)V\n" +
"INVOKESTATIC com/sun/btrace/BTraceRuntime.leave ()V\n" +
"RETURN\n" +
"L1\n" +
"INVOKESTATIC com/sun/btrace/BTraceRuntime.handleException (Ljava/lang/Throwable;)V\n" +
"INVOKESTATIC com/sun/btrace/BTraceRuntime.leave ()V\n" +
"RETURN\n" +
"MAXSTACK = 4\n" +
"MAXLOCALS = 4"
);
}
}