70 lines
1 KiB
Go
70 lines
1 KiB
Go
|
package supervisor
|
||
|
|
||
|
import (
|
||
|
"os"
|
||
|
"sort"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/docker/containerd/runtime"
|
||
|
"github.com/opencontainers/specs"
|
||
|
)
|
||
|
|
||
|
type testProcess struct {
|
||
|
id string
|
||
|
}
|
||
|
|
||
|
func (p *testProcess) ID() string {
|
||
|
return p.id
|
||
|
}
|
||
|
|
||
|
func (p *testProcess) Stdin() string {
|
||
|
return ""
|
||
|
}
|
||
|
|
||
|
func (p *testProcess) Stdout() string {
|
||
|
return ""
|
||
|
}
|
||
|
|
||
|
func (p *testProcess) Stderr() string {
|
||
|
return ""
|
||
|
}
|
||
|
|
||
|
func (p *testProcess) ExitFD() int {
|
||
|
return -1
|
||
|
}
|
||
|
|
||
|
func (p *testProcess) ExitStatus() (int, error) {
|
||
|
return -1, nil
|
||
|
}
|
||
|
|
||
|
func (p *testProcess) Container() runtime.Container {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (p *testProcess) Spec() specs.Process {
|
||
|
return specs.Process{}
|
||
|
}
|
||
|
|
||
|
func (p *testProcess) Signal(os.Signal) error {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (p *testProcess) Close() error {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func TestSortProcesses(t *testing.T) {
|
||
|
p := []runtime.Process{
|
||
|
&testProcess{"ls"},
|
||
|
&testProcess{"other"},
|
||
|
&testProcess{"init"},
|
||
|
&testProcess{"other2"},
|
||
|
}
|
||
|
s := &processSorter{p}
|
||
|
sort.Sort(s)
|
||
|
|
||
|
if id := p[len(p)-1].ID(); id != "init" {
|
||
|
t.Fatalf("expected init but received %q", id)
|
||
|
}
|
||
|
}
|