Files
weave-scope/vendor/github.com/c9s/goprocinfo/linux/process_stat_test.go
2015-12-04 13:57:32 +00:00

194 lines
4.6 KiB
Go

package linux
import (
"reflect"
"testing"
)
func TestReadProcessStat(t *testing.T) {
stat, err := ReadProcessStat("proc/3323/stat")
if err != nil {
t.Fatal("process stat read fail", err)
}
expected := &ProcessStat{
Pid: 3323,
Comm: "(proftpd)",
State: "S",
Ppid: 1,
Pgrp: 3323,
Session: 3323,
TtyNr: 0,
Tpgid: -1,
Flags: 4202816,
Minflt: 1311,
Cminflt: 57367,
Majflt: 0,
Cmajflt: 1,
Utime: 23,
Stime: 58,
Cutime: 24,
Cstime: 49,
Priority: 20,
Nice: 0,
NumThreads: 1,
Itrealvalue: 0,
Starttime: 2789,
Vsize: 16601088,
Rss: 522,
Rsslim: 4294967295,
Startcode: 134512640,
Endcode: 135222176,
Startstack: 3217552592,
Kstkesp: 3217551836,
Kstkeip: 4118799382,
Signal: 0,
Blocked: 0,
Sigignore: 272633856,
Sigcatch: 8514799,
Wchan: 0,
Nswap: 0,
Cnswap: 0,
ExitSignal: 17,
Processor: 7,
RtPriority: 0,
Policy: 0,
DelayacctBlkioTicks: 1,
GuestTime: 0,
CguestTime: 0,
}
if !reflect.DeepEqual(stat, expected) {
t.Errorf("not equal to expected %+v", expected)
}
t.Logf("%+v", stat)
}
func TestReadProcessStatWithSpace(t *testing.T) {
stat, err := ReadProcessStat("proc/884/stat")
if err != nil {
t.Fatal("process stat read fail", err)
}
expected := &ProcessStat{
Pid: 884,
Comm: "(rs:main Q:Reg)",
State: "S",
Ppid: 1,
Pgrp: 873,
Session: 873,
TtyNr: 0,
Tpgid: -1,
Flags: 4202816,
Minflt: 561,
Cminflt: 0,
Majflt: 0,
Cmajflt: 0,
Utime: 68,
Stime: 132,
Cutime: 0,
Cstime: 0,
Priority: 20,
Nice: 0,
NumThreads: 4,
Itrealvalue: 0,
Starttime: 2161,
Vsize: 255451136,
Rss: 409,
Rsslim: 18446744073709551615,
Startcode: 1,
Endcode: 1,
Startstack: 0,
Kstkesp: 0,
Kstkeip: 0,
Signal: 0,
Blocked: 2146172671,
Sigignore: 16781830,
Sigcatch: 1133601,
Wchan: 18446744073709551615,
Nswap: 0,
Cnswap: 0,
ExitSignal: -1,
Processor: 1,
RtPriority: 0,
Policy: 0,
DelayacctBlkioTicks: 34,
GuestTime: 0,
CguestTime: 0,
}
if !reflect.DeepEqual(stat, expected) {
t.Errorf("not equal to expected %+v", expected)
}
t.Logf("%+v", stat)
}
func TestReadProcessStatWithDoubleParentheses(t *testing.T) {
stat, err := ReadProcessStat("proc/4854/stat")
if err != nil {
t.Fatal("process stat read fail", err)
}
expected := &ProcessStat{
Pid: 4854,
Comm: "((sd-pam))",
State: "S",
Ppid: 4853,
Pgrp: 4853,
Session: 4853,
TtyNr: 0,
Tpgid: -1,
Flags: 1077944640,
Minflt: 21,
Cminflt: 0,
Majflt: 0,
Cmajflt: 0,
Utime: 0,
Stime: 0,
Cutime: 0,
Cstime: 0,
Priority: 20,
Nice: 0,
NumThreads: 1,
Itrealvalue: 0,
Starttime: 4912,
Vsize: 83931136,
Rss: 405,
Rsslim: 18446744073709551615,
Startcode: 1,
Endcode: 1,
Startstack: 0,
Kstkesp: 0,
Kstkeip: 0,
Signal: 0,
Blocked: 0,
Sigignore: 4096,
Sigcatch: 0,
Wchan: 18446744073709551615,
Nswap: 0,
Cnswap: 0,
ExitSignal: 17,
Processor: 7,
RtPriority: 0,
Policy: 0,
DelayacctBlkioTicks: 0,
GuestTime: 0,
CguestTime: 0,
}
if !reflect.DeepEqual(stat, expected) {
t.Errorf("not equal to expected %+v", expected)
}
t.Logf("%+v", stat)
}