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