mirror of
https://github.com/DominicBreuker/pspy.git
synced 2025-12-21 19:54:53 +00:00
turn process monitoring events into structured objects
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
|
||||
"github.com/dominicbreuker/pspy/internal/config"
|
||||
"github.com/dominicbreuker/pspy/internal/logging"
|
||||
"github.com/dominicbreuker/pspy/internal/psscanner"
|
||||
)
|
||||
|
||||
type Bindings struct {
|
||||
@@ -26,13 +27,13 @@ type FSWatcher interface {
|
||||
}
|
||||
|
||||
type PSScanner interface {
|
||||
Run(triggerCh chan struct{}) (chan string, chan error)
|
||||
Run(triggerCh chan struct{}) (chan psscanner.PSEvent, chan error)
|
||||
}
|
||||
|
||||
type chans struct {
|
||||
sigCh chan os.Signal
|
||||
fsEventCh chan string
|
||||
psEventCh chan string
|
||||
psEventCh chan psscanner.PSEvent
|
||||
}
|
||||
|
||||
func Start(cfg *config.Config, b *Bindings, sigCh chan os.Signal) chan struct{} {
|
||||
@@ -112,7 +113,7 @@ func startFSW(fsw FSWatcher, logger Logger, drainFor time.Duration) (triggerCh c
|
||||
return triggerCh, fsEventCh
|
||||
}
|
||||
|
||||
func startPSS(pss PSScanner, logger Logger, triggerCh chan struct{}) (psEventCh chan string) {
|
||||
func startPSS(pss PSScanner, logger Logger, triggerCh chan struct{}) (psEventCh chan psscanner.PSEvent) {
|
||||
psEventCh, errCh := pss.Run(triggerCh)
|
||||
go logErrors(errCh, logger)
|
||||
return psEventCh
|
||||
|
||||
@@ -9,6 +9,7 @@ import (
|
||||
|
||||
"github.com/dominicbreuker/pspy/internal/config"
|
||||
"github.com/dominicbreuker/pspy/internal/logging"
|
||||
"github.com/dominicbreuker/pspy/internal/psscanner"
|
||||
)
|
||||
|
||||
func TestInitFSW(t *testing.T) {
|
||||
@@ -112,7 +113,7 @@ func TestStart(t *testing.T) {
|
||||
close(fsw.initDoneCh)
|
||||
<-time.After(2 * drainFor)
|
||||
fsw.runTriggerCh <- struct{}{}
|
||||
pss.runEventCh <- "pss event"
|
||||
pss.runEventCh <- psscanner.PSEvent{UID: 1000, PID: 12345, CMD: "pss event"}
|
||||
pss.runErrCh <- errors.New("pss error")
|
||||
fsw.runEventCh <- "fsw event"
|
||||
fsw.runErrCh <- errors.New("fsw error")
|
||||
@@ -125,7 +126,7 @@ func TestStart(t *testing.T) {
|
||||
<-time.After(2 * drainFor)
|
||||
expectMessage(t, l.Info, "done")
|
||||
expectTrigger(t, pss.runTriggerCh) // pss receives triggers from fsw
|
||||
expectMessage(t, l.Event, fmt.Sprintf("%d CMD: pss event", logging.ColorRed))
|
||||
expectMessage(t, l.Event, fmt.Sprintf("%d CMD: UID=1000 PID=12345 | pss event", logging.ColorRed))
|
||||
expectMessage(t, l.Error, "ERROR: pss error")
|
||||
expectMessage(t, l.Event, fmt.Sprintf("%d FS: fsw event", logging.ColorGreen))
|
||||
expectMessage(t, l.Error, "ERROR: fsw error")
|
||||
@@ -255,7 +256,7 @@ func (fsw *mockFSWatcher) Run() (chan struct{}, chan string, chan error) {
|
||||
|
||||
type mockPSScanner struct {
|
||||
runTriggerCh chan struct{}
|
||||
runEventCh chan string
|
||||
runEventCh chan psscanner.PSEvent
|
||||
runErrCh chan error
|
||||
numRefreshes int
|
||||
}
|
||||
@@ -264,9 +265,9 @@ func newMockPSScanner() *mockPSScanner {
|
||||
return &mockPSScanner{}
|
||||
}
|
||||
|
||||
func (pss *mockPSScanner) Run(triggerCh chan struct{}) (chan string, chan error) {
|
||||
func (pss *mockPSScanner) Run(triggerCh chan struct{}) (chan psscanner.PSEvent, chan error) {
|
||||
pss.runTriggerCh = triggerCh
|
||||
pss.runEventCh = make(chan string)
|
||||
pss.runEventCh = make(chan psscanner.PSEvent)
|
||||
pss.runErrCh = make(chan error)
|
||||
|
||||
go func() {
|
||||
|
||||
Reference in New Issue
Block a user