MCPcopy Create free account
hub / github.com/rabbitstack/fibratus / TestProcessCallstackProcsTTL

Function TestProcessCallstackProcsTTL

pkg/symbolize/symbolizer_test.go:416–464  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

414}
415
416func TestProcessCallstackProcsTTL(t *testing.T) {
417 log.SetLevel(log.DebugLevel)
418 r := new(MockResolver)
419 c := &config.Config{}
420
421 psnap := new(ps.SnapshotterMock)
422
423 opts := uint32(sys.SymUndname | sys.SymCaseInsensitive | sys.SymAutoPublics | sys.SymOmapFindNearest | sys.SymDeferredLoads)
424 r.On("Initialize", mock.Anything, opts).Return(nil)
425 r.On("LoadModule", windows.CurrentProcess(), mock.Anything).Return(nil)
426 r.On("GetModuleName", mock.Anything, mock.Anything).Return("C:\\WINDOWS\\System32\\KERNEL32.DLL")
427 r.On("GetSymbolNameAndOffset", mock.Anything, mock.Anything).Return("CreateProcessW", 0x54)
428 r.On("Cleanup", mock.Anything)
429
430 s := NewSymbolizer(r, psnap, c, false)
431 require.NotNil(t, s)
432 defer s.Close()
433
434 n := 10
435 for n > 0 {
436 e := &event.Event{
437 Type: event.CreateProcess,
438 Tid: 2484,
439 PID: 1232,
440 CPU: 1,
441 Seq: 2,
442 Name: "CreatedProcess",
443 Timestamp: time.Now().Add(time.Millisecond * time.Duration(n)),
444 Category: event.Process,
445 Host: "archrabbit",
446 Params: event.Params{
447 params.ProcessParentID: {Name: params.ProcessParentID, Type: params.PID, Value: (uint32(os.Getpid()))},
448 params.ProcessRealParentID: {Name: params.ProcessRealParentID, Type: params.PID, Value: (uint32(os.Getpid()))},
449 params.Callstack: {Name: params.Callstack, Type: params.Slice, Value: []va.Address{0x7ffb5c1d0396, 0x7ffb5d8e61f4, 0x7ffb3138592e, 0x7ffb313853b2, 0x2638e59e0a5}},
450 },
451 }
452 _, _ = s.ProcessEvent(e)
453 n--
454 time.Sleep(time.Millisecond * time.Duration(rand.Intn(15)*n))
455 }
456 // process should be present
457 assert.Equal(t, 1, s.procsSize())
458
459 time.Sleep(time.Millisecond * 2250)
460
461 // evicted
462 r.AssertNumberOfCalls(t, "Cleanup", 1)
463 assert.Equal(t, 0, s.procsSize())
464}

Callers

nothing calls this directly

Calls 6

CloseMethod · 0.95
ProcessEventMethod · 0.95
procsSizeMethod · 0.95
NewSymbolizerFunction · 0.85
EqualMethod · 0.80
AddMethod · 0.65

Tested by

no test coverage detected