Files
weave-scope/probe/process/walker_test.go
2015-08-03 10:55:59 +02:00

67 lines
1.5 KiB
Go

package process_test
import (
"reflect"
"testing"
"github.com/weaveworks/scope/probe/process"
"github.com/weaveworks/scope/test"
)
func TestBasicWalk(t *testing.T) {
var (
procRoot = "/proc"
procFunc = func(process.Process) {}
)
if err := process.NewWalker(procRoot).Walk(procFunc); err != nil {
t.Fatal(err)
}
}
func TestCache(t *testing.T) {
processes := []process.Process{
{PID: 1, PPID: 0, Comm: "init"},
{PID: 2, PPID: 1, Comm: "bash"},
{PID: 3, PPID: 1, Comm: "apache", Threads: 2},
{PID: 4, PPID: 2, Comm: "ping", Cmdline: "ping foo.bar.local"},
}
walker := &mockWalker{
processes: processes,
}
cachingWalker := process.NewCachingWalker(walker)
err := cachingWalker.Update()
if err != nil {
t.Fatal(err)
}
have, err := all(cachingWalker)
if err != nil || !reflect.DeepEqual(processes, have) {
t.Errorf("%v (%v)", test.Diff(processes, have), err)
}
walker.processes = []process.Process{}
have, err = all(cachingWalker)
if err != nil || !reflect.DeepEqual(processes, have) {
t.Errorf("%v (%v)", test.Diff(processes, have), err)
}
err = cachingWalker.Update()
if err != nil {
t.Fatal(err)
}
have, err = all(cachingWalker)
want := []process.Process{}
if err != nil || !reflect.DeepEqual(want, have) {
t.Errorf("%v (%v)", test.Diff(want, have), err)
}
}
func all(w process.Walker) ([]process.Process, error) {
all := []process.Process{}
err := w.Walk(func(p process.Process) {
all = append(all, p)
})
return all, err
}