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  }