MCPcopy Create free account
hub / github.com/async-profiler/async-profiler / CstackTests

Class CstackTests

test/test/cstack/CstackTests.java:15–61  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13import test.smoke.Cpu;
14
15public class CstackTests {
16 private static final String PROFILE_COMMAND = "-e cpu -i 10ms -d 1 -o collapsed -a ";
17
18 @Test(mainClass = LongInitializer.class)
19 public void asyncGetCallTrace(TestProcess p) throws Exception {
20 Output out = p.profile(PROFILE_COMMAND + "--cstack no");
21 assert !out.contains(";readBytes") : out;
22 assert out.contains("LongInitializer.main_\\[j]") : out;
23
24 out = p.profile(PROFILE_COMMAND + "--cstack fp");
25 assert out.contains(";readBytes") : out;
26 assert out.contains("LongInitializer.main_\\[j]") : out;
27 }
28
29 @Test(mainClass = LongInitializer.class, jvm = Jvm.HOTSPOT, os = Os.LINUX)
30 public void vmStructs(TestProcess p) throws Exception {
31 Output out = p.profile(PROFILE_COMMAND + "--cstack vm");
32 assert out.contains(";readBytes");
33 assert out.contains("LongInitializer.main_\\[0]");
34 assert !out.contains("InstanceKlass::initialize");
35 assert !out.contains("call_stub");
36 assert !out.contains("JavaMain");
37
38 out = p.profile(PROFILE_COMMAND + "--cstack vmx");
39 assert out.contains(";readBytes");
40 assert out.contains("LongInitializer.main_\\[0]");
41 assert out.contains("InstanceKlass::initialize");
42 assert out.contains("call_stub");
43 assert out.contains("JavaMain");
44 }
45
46 @Test(mainClass = Cpu.class, jvm = Jvm.HOTSPOT, agentArgs = "start,event=cpu,interval=1ms")
47 public void saneNativeStack(TestProcess p) throws Exception {
48 Thread.sleep(2000);
49 Output out = p.profile("stop -o flamegraph").convertFlameToCollapsed();
50
51 assert out.contains("^test/smoke/Cpu.main");
52 assert out.contains("CompileBroker::");
53 assert out.contains("Java_java_io_");
54
55 // No JVM frames before start_thread
56 assert !out.contains("CompileBroker::.*;start_thread");
57
58 // No duplicated native frames
59 assert !out.contains("Java_java_io_.*;Java_java_io_");
60 }
61}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected