Files
weave-scope/probe/endpoint/procspy/proc_internal_test.go
Paul Bellamy b970b0561b Set the memory and open files maximums
process memory limit is not cgroup-aware
2016-04-06 13:07:55 +01:00

83 lines
1.5 KiB
Go

package procspy
import (
"bytes"
"reflect"
"syscall"
"testing"
"time"
fs_hook "github.com/weaveworks/scope/common/fs"
"github.com/weaveworks/scope/probe/process"
"github.com/weaveworks/scope/test/fs"
)
var mockFS = fs.Dir("",
fs.Dir("proc",
fs.Dir("1",
fs.Dir("fd",
fs.File{
FName: "16",
FStat: syscall.Stat_t{
Ino: 5107,
Mode: syscall.S_IFSOCK,
},
},
),
fs.File{
FName: "cmdline",
FContents: "foo",
},
fs.Dir("ns",
fs.File{
FName: "net",
FStat: syscall.Stat_t{},
},
),
fs.Dir("net",
fs.File{
FName: "tcp",
FContents: ` sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
0: 00000000:A6C0 00000000:0000 01 00000000:00000000 00:00000000 00000000 105 0 5107 1 ffff8800a6aaf040 100 0 0 10 2d
`,
},
fs.File{
FName: "tcp6",
},
),
fs.File{
FName: "stat",
FContents: "1 na R 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0",
},
fs.File{
FName: "limits",
FContents: "",
},
),
),
)
func TestWalkProcPid(t *testing.T) {
fs_hook.Mock(mockFS)
defer fs_hook.Restore()
buf := bytes.Buffer{}
walker := process.NewWalker(procRoot)
ticker := time.NewTicker(time.Millisecond)
defer ticker.Stop()
pWalker := newPidWalker(walker, ticker.C, 1)
have, err := pWalker.walk(&buf)
if err != nil {
t.Fatal(err)
}
want := map[uint64]*Proc{
5107: {
PID: 1,
Name: "foo",
},
}
if !reflect.DeepEqual(want, have) {
t.Fatalf("%+v", have)
}
}