github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/drivers/shared/executor/pid_collector_test.go (about) 1 package executor 2 3 import ( 4 "testing" 5 6 "github.com/hashicorp/nomad/ci" 7 "github.com/mitchellh/go-ps" 8 ) 9 10 func TestScanPids(t *testing.T) { 11 ci.Parallel(t) 12 p1 := NewFakeProcess(2, 5) 13 p2 := NewFakeProcess(10, 2) 14 p3 := NewFakeProcess(15, 6) 15 p4 := NewFakeProcess(3, 10) 16 p5 := NewFakeProcess(20, 18) 17 18 nomadPids, err := scanPids(5, []ps.Process{p1, p2, p3, p4, p5}) 19 if err != nil { 20 t.Fatalf("error: %v", err) 21 } 22 if len(nomadPids) != 4 { 23 t.Fatalf("expected: 4, actual: %v", len(nomadPids)) 24 } 25 } 26 27 type FakeProcess struct { 28 pid int 29 ppid int 30 } 31 32 func (f FakeProcess) Pid() int { 33 return f.pid 34 } 35 36 func (f FakeProcess) PPid() int { 37 return f.ppid 38 } 39 40 func (f FakeProcess) Executable() string { 41 return "fake" 42 } 43 44 func NewFakeProcess(pid int, ppid int) ps.Process { 45 return FakeProcess{pid: pid, ppid: ppid} 46 }