MCPcopy Index your code
hub / github.com/rabbitstack/fibratus / TestCallstack

Function TestCallstack

pkg/callstack/callstack_test.go:27–65  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

25)
26
27func TestCallstack(t *testing.T) {
28 var callstack Callstack
29 callstack.Init(9)
30
31 assert.Equal(t, 9, cap(callstack))
32
33 callstack.PushFrame(Frame{Addr: 0x2638e59e0a5, Offset: 0, Symbol: "?", Module: "unbacked"})
34 callstack.PushFrame(Frame{Addr: 0x7ffb313853b2, Offset: 0x10a, Symbol: "Java_java_lang_ProcessImpl_create", Module: "C:\\Program Files\\JetBrains\\GoLand 2021.2.3\\jbr\\bin\\java.dll"})
35 callstack.PushFrame(Frame{Addr: 0x7ffb3138592e, Offset: 0x3a2, Symbol: "Java_java_lang_ProcessImpl_waitForTimeoutInterruptibly", Module: "C:\\Program Files\\JetBrains\\GoLand 2021.2.3\\jbr\\bin\\java.dll"})
36 callstack.PushFrame(Frame{Addr: 0x7ffb5c1d0396, Offset: 0x61, Symbol: "CreateProcessW", Module: "C:\\WINDOWS\\System32\\KERNELBASE.dll"})
37 callstack.PushFrame(Frame{Addr: 0x7ffb5d8e61f4, Offset: 0x54, Symbol: "CreateProcessW", Module: "C:\\WINDOWS\\System32\\KERNEL32.DLL"})
38 callstack.PushFrame(Frame{Addr: 0x7ffb5c1d0396, Offset: 0x66, Symbol: "CreateProcessW", Module: "C:\\WINDOWS\\System32\\KERNELBASE.dll"})
39 callstack.PushFrame(Frame{Addr: 0xfffff8015662a605, Offset: 0x9125, Symbol: "setjmpex", Module: "C:\\WINDOWS\\system32\\ntoskrnl.exe"})
40 callstack.PushFrame(Frame{Addr: 0xfffff801568e9c33, Offset: 0x2ef3, Symbol: "LpcRequestPort", Module: "C:\\WINDOWS\\system32\\ntoskrnl.exe"})
41 callstack.PushFrame(Frame{Addr: 0xfffff8015690b644, Offset: 0x45b4, Symbol: "ObDeleteCapturedInsertInfo", Module: "C:\\WINDOWS\\system32\\ntoskrnl.exe"})
42
43 assert.True(t, callstack.ContainsUnbacked())
44 assert.Equal(t, 9, callstack.Depth())
45 assert.Equal(t, "0xfffff8015690b644 C:\\WINDOWS\\system32\\ntoskrnl.exe!ObDeleteCapturedInsertInfo+0x45b4|0xfffff801568e9c33 C:\\WINDOWS\\system32\\ntoskrnl.exe!LpcRequestPort+0x2ef3|0xfffff8015662a605 C:\\WINDOWS\\system32\\ntoskrnl.exe!setjmpex+0x9125|0x7ffb5c1d0396 C:\\WINDOWS\\System32\\KERNELBASE.dll!CreateProcessW+0x66|0x7ffb5d8e61f4 C:\\WINDOWS\\System32\\KERNEL32.DLL!CreateProcessW+0x54|0x7ffb5c1d0396 C:\\WINDOWS\\System32\\KERNELBASE.dll!CreateProcessW+0x61|0x7ffb3138592e C:\\Program Files\\JetBrains\\GoLand 2021.2.3\\jbr\\bin\\java.dll!Java_java_lang_ProcessImpl_waitForTimeoutInterruptibly+0x3a2|0x7ffb313853b2 C:\\Program Files\\JetBrains\\GoLand 2021.2.3\\jbr\\bin\\java.dll!Java_java_lang_ProcessImpl_create+0x10a|0x2638e59e0a5 unbacked!?", callstack.String())
46 assert.Equal(t, "KERNELBASE.dll|KERNEL32.DLL|KERNELBASE.dll|java.dll|unbacked", callstack.Summary())
47
48 uframe := callstack.FinalUserFrame()
49 require.NotNil(t, uframe)
50 assert.Equal(t, "7ffb3138592e", uframe.Addr.String())
51 assert.Equal(t, "Java_java_lang_ProcessImpl_waitForTimeoutInterruptibly", uframe.Symbol)
52 assert.Equal(t, "C:\\Program Files\\JetBrains\\GoLand 2021.2.3\\jbr\\bin\\java.dll", uframe.Module)
53
54 kframe := callstack.FinalKernelFrame()
55 require.NotNil(t, kframe)
56 assert.Equal(t, "fffff8015690b644", kframe.Addr.String())
57 assert.Equal(t, "ObDeleteCapturedInsertInfo", kframe.Symbol)
58 assert.Equal(t, "C:\\WINDOWS\\system32\\ntoskrnl.exe", kframe.Module)
59
60 finalUserspaceFrame := callstack.FinalUserspaceFrame()
61 require.NotNil(t, finalUserspaceFrame)
62 assert.Equal(t, "7ffb5c1d0396", finalUserspaceFrame.Addr.String())
63 assert.Equal(t, "CreateProcessW", finalUserspaceFrame.Symbol)
64 assert.Equal(t, "C:\\WINDOWS\\System32\\KERNELBASE.dll", finalUserspaceFrame.Module)
65}
66
67func TestCallstackFinalUserFrame(t *testing.T) {
68 var tests = []struct {

Callers

nothing calls this directly

Calls 11

InitMethod · 0.95
PushFrameMethod · 0.95
ContainsUnbackedMethod · 0.95
DepthMethod · 0.95
StringMethod · 0.95
SummaryMethod · 0.95
FinalUserFrameMethod · 0.95
FinalKernelFrameMethod · 0.95
FinalUserspaceFrameMethod · 0.95
EqualMethod · 0.80
StringMethod · 0.65

Tested by

no test coverage detected