package proc import ( "fmt" "path/filepath" "reflect" "strconv" "testing" "android/soong/finder/fs" ) func TestNewProcStatus(t *testing.T) { fs := fs.NewMockFs(nil) pid := 4032827 procDir := filepath.Join("/proc", strconv.Itoa(pid)) if err := fs.MkDirs(procDir); err != nil { t.Fatalf("failed to create proc pid dir %s: %v", procDir, err) } statusFilename := filepath.Join(procDir, "status") if err := fs.WriteFile(statusFilename, statusData, 0644); err != nil { t.Fatalf("failed to write proc file %s: %v", statusFilename, err) } status, err := NewProcStatus(pid, fs) if err != nil { t.Fatalf("got %v, want nil for error", err) } fmt.Printf("%d %d\b", status.VmPeak, expectedStatus.VmPeak) if !reflect.DeepEqual(status, expectedStatus) { t.Errorf("got %v, expecting %v for ProcStatus", status, expectedStatus) } } var statusData = []byte(`Name: fake_process Umask: 0022 State: S (sleeping) Tgid: 4032827 Ngid: 0 Pid: 4032827 PPid: 1 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 512 Groups: NStgid: 4032827 NSpid: 4032827 NSpgid: 4032827 NSsid: 4032827 VmPeak: 733232 kB VmSize: 733232 kB VmLck: 132 kB VmPin: 130 kB VmHWM: 69156 kB VmRSS: 69156 kB RssAnon: 50896 kB RssFile: 18260 kB RssShmem: 122 kB VmData: 112388 kB VmStk: 132 kB VmExe: 9304 kB VmLib: 8 kB VmPTE: 228 kB VmSwap: 10 kB HugetlbPages: 22 kB CoreDumping: 0 THP_enabled: 1 Threads: 46 SigQ: 2/767780 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: fffffffe3bfa3a00 SigIgn: 0000000000000000 SigCgt: fffffffe7fc1feff CapInh: 0000000000000000 CapPrm: 0000003fffffffff CapEff: 0000003fffffffff CapBnd: 0000003fffffffff CapAmb: 0000000000000000 NoNewPrivs: 0 Seccomp: 0 Speculation_Store_Bypass: thread vulnerable Cpus_allowed: ff,ffffffff,ffffffff Cpus_allowed_list: 0-71 Mems_allowed: 00000000,00000003 Mems_allowed_list: 0-1 voluntary_ctxt_switches: 1635 nonvoluntary_ctxt_switches: 32 `) var expectedStatus = &ProcStatus{ pid: 4032827, VmPeak: 750829568, VmSize: 750829568, VmLck: 135168, VmPin: 133120, VmHWM: 70815744, VmRss: 70815744, RssAnon: 52117504, RssShmem: 124928, VmData: 115085312, VmStk: 135168, VmExe: 9527296, VmLib: 8192, VmPTE: 233472, VmSwap: 10240, HugetlbPages: 22528, }