mirror of
https://github.com/shirou/gopsutil.git
synced 2025-04-29 13:49:21 +08:00
[mem][linux] Add mocked test for VirtualMemory() and fix SReclaimable SUnreclaim retrieval
This commit is contained in:
parent
ca10f91f44
commit
07887a9e9f
80
mem/mem_linux_test.go
Normal file
80
mem/mem_linux_test.go
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
package mem
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"reflect"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestVirtualMemoryEx(t *testing.T) {
|
||||||
|
v, err := VirtualMemoryEx()
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Log(v)
|
||||||
|
}
|
||||||
|
|
||||||
|
var virtualMemoryTests = []struct {
|
||||||
|
mockedRootFS string
|
||||||
|
stat *VirtualMemoryStat
|
||||||
|
}{
|
||||||
|
{"intelcorei5", &VirtualMemoryStat{
|
||||||
|
Total: 16502300672,
|
||||||
|
Available: 11495358464,
|
||||||
|
Used: 3437277184,
|
||||||
|
UsedPercent: 20.82907863769651,
|
||||||
|
Free: 8783491072,
|
||||||
|
Active: 4347392000,
|
||||||
|
Inactive: 2938834944,
|
||||||
|
Wired: 0,
|
||||||
|
Laundry: 0,
|
||||||
|
Buffers: 212496384,
|
||||||
|
Cached: 4069036032,
|
||||||
|
Writeback: 0,
|
||||||
|
Dirty: 176128,
|
||||||
|
WritebackTmp: 0,
|
||||||
|
Shared: 1222402048,
|
||||||
|
Slab: 253771776,
|
||||||
|
SReclaimable: 186470400,
|
||||||
|
SUnreclaim: 67301376,
|
||||||
|
PageTables: 65241088,
|
||||||
|
SwapCached: 0,
|
||||||
|
CommitLimit: 16509730816,
|
||||||
|
CommittedAS: 12360818688,
|
||||||
|
HighTotal: 0,
|
||||||
|
HighFree: 0,
|
||||||
|
LowTotal: 0,
|
||||||
|
LowFree: 0,
|
||||||
|
SwapTotal: 8258580480,
|
||||||
|
SwapFree: 8258580480,
|
||||||
|
Mapped: 1172627456,
|
||||||
|
VMallocTotal: 35184372087808,
|
||||||
|
VMallocUsed: 0,
|
||||||
|
VMallocChunk: 0,
|
||||||
|
HugePagesTotal: 0,
|
||||||
|
HugePagesFree: 0,
|
||||||
|
HugePageSize: 2097152},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestVirtualMemoryLinux(t *testing.T) {
|
||||||
|
origProc := os.Getenv("HOST_PROC")
|
||||||
|
defer os.Setenv("HOST_PROC", origProc)
|
||||||
|
|
||||||
|
for _, tt := range virtualMemoryTests {
|
||||||
|
t.Run(tt.mockedRootFS, func(t *testing.T) {
|
||||||
|
os.Setenv("HOST_PROC", filepath.Join("testdata/linux/virtualmemory/", tt.mockedRootFS, "proc"))
|
||||||
|
|
||||||
|
stat, err := VirtualMemory()
|
||||||
|
skipIfNotImplementedErr(t, err)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("error %v", err)
|
||||||
|
}
|
||||||
|
if !reflect.DeepEqual(stat, tt.stat) {
|
||||||
|
t.Errorf("got: %+v\nwant: %+v", stat, tt.stat)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
46
mem/testdata/linux/virtualmemory/intelcorei5/proc/meminfo
vendored
Normal file
46
mem/testdata/linux/virtualmemory/intelcorei5/proc/meminfo
vendored
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
MemTotal: 16115528 kB
|
||||||
|
MemFree: 8577628 kB
|
||||||
|
MemAvailable: 11225936 kB
|
||||||
|
Buffers: 207516 kB
|
||||||
|
Cached: 3791568 kB
|
||||||
|
SwapCached: 0 kB
|
||||||
|
Active: 4245500 kB
|
||||||
|
Inactive: 2869956 kB
|
||||||
|
Active(anon): 3123508 kB
|
||||||
|
Inactive(anon): 1186612 kB
|
||||||
|
Active(file): 1121992 kB
|
||||||
|
Inactive(file): 1683344 kB
|
||||||
|
Unevictable: 32 kB
|
||||||
|
Mlocked: 32 kB
|
||||||
|
SwapTotal: 8065020 kB
|
||||||
|
SwapFree: 8065020 kB
|
||||||
|
Dirty: 172 kB
|
||||||
|
Writeback: 0 kB
|
||||||
|
AnonPages: 3116472 kB
|
||||||
|
Mapped: 1145144 kB
|
||||||
|
Shmem: 1193752 kB
|
||||||
|
Slab: 247824 kB
|
||||||
|
SReclaimable: 182100 kB
|
||||||
|
SUnreclaim: 65724 kB
|
||||||
|
KernelStack: 14224 kB
|
||||||
|
PageTables: 63712 kB
|
||||||
|
NFS_Unstable: 0 kB
|
||||||
|
Bounce: 0 kB
|
||||||
|
WritebackTmp: 0 kB
|
||||||
|
CommitLimit: 16122784 kB
|
||||||
|
Committed_AS: 12071112 kB
|
||||||
|
VmallocTotal: 34359738367 kB
|
||||||
|
VmallocUsed: 0 kB
|
||||||
|
VmallocChunk: 0 kB
|
||||||
|
HardwareCorrupted: 0 kB
|
||||||
|
AnonHugePages: 0 kB
|
||||||
|
ShmemHugePages: 0 kB
|
||||||
|
ShmemPmdMapped: 0 kB
|
||||||
|
HugePages_Total: 0
|
||||||
|
HugePages_Free: 0
|
||||||
|
HugePages_Rsvd: 0
|
||||||
|
HugePages_Surp: 0
|
||||||
|
Hugepagesize: 2048 kB
|
||||||
|
DirectMap4k: 143564 kB
|
||||||
|
DirectMap2M: 6871040 kB
|
||||||
|
DirectMap1G: 10485760 kB
|
@ -115,10 +115,10 @@ func fillFromMeminfoWithContext(ctx context.Context) (*VirtualMemoryStat, *Virtu
|
|||||||
ret.Shared = t * 1024
|
ret.Shared = t * 1024
|
||||||
case "Slab":
|
case "Slab":
|
||||||
ret.Slab = t * 1024
|
ret.Slab = t * 1024
|
||||||
case "Sreclaimable":
|
case "SReclaimable":
|
||||||
sReclaimable = true
|
sReclaimable = true
|
||||||
ret.Sreclaimable = t * 1024
|
ret.Sreclaimable = t * 1024
|
||||||
case "Sunreclaim":
|
case "SUnreclaim":
|
||||||
ret.Sunreclaim = t * 1024
|
ret.Sunreclaim = t * 1024
|
||||||
case "PageTables":
|
case "PageTables":
|
||||||
ret.PageTables = t * 1024
|
ret.PageTables = t * 1024
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
package mem
|
package mem
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -12,3 +15,66 @@ func TestVirtualMemoryEx(t *testing.T) {
|
|||||||
|
|
||||||
t.Log(v)
|
t.Log(v)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var virtualMemoryTests = []struct {
|
||||||
|
mockedRootFS string
|
||||||
|
stat *VirtualMemoryStat
|
||||||
|
}{
|
||||||
|
{"intelcorei5", &VirtualMemoryStat{
|
||||||
|
Total: 16502300672,
|
||||||
|
Available: 11495358464,
|
||||||
|
Used: 3437277184,
|
||||||
|
UsedPercent: 20.82907863769651,
|
||||||
|
Free: 8783491072,
|
||||||
|
Active: 4347392000,
|
||||||
|
Inactive: 2938834944,
|
||||||
|
Wired: 0,
|
||||||
|
Laundry: 0,
|
||||||
|
Buffers: 212496384,
|
||||||
|
Cached: 4069036032,
|
||||||
|
WriteBack: 0,
|
||||||
|
Dirty: 176128,
|
||||||
|
WriteBackTmp: 0,
|
||||||
|
Shared: 1222402048,
|
||||||
|
Slab: 253771776,
|
||||||
|
Sreclaimable: 186470400,
|
||||||
|
Sunreclaim: 67301376,
|
||||||
|
PageTables: 65241088,
|
||||||
|
SwapCached: 0,
|
||||||
|
CommitLimit: 16509730816,
|
||||||
|
CommittedAS: 12360818688,
|
||||||
|
HighTotal: 0,
|
||||||
|
HighFree: 0,
|
||||||
|
LowTotal: 0,
|
||||||
|
LowFree: 0,
|
||||||
|
SwapTotal: 8258580480,
|
||||||
|
SwapFree: 8258580480,
|
||||||
|
Mapped: 1172627456,
|
||||||
|
VmallocTotal: 35184372087808,
|
||||||
|
VmallocUsed: 0,
|
||||||
|
VmallocChunk: 0,
|
||||||
|
HugePagesTotal: 0,
|
||||||
|
HugePagesFree: 0,
|
||||||
|
HugePageSize: 2097152},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestVirtualMemoryLinux(t *testing.T) {
|
||||||
|
origProc := os.Getenv("HOST_PROC")
|
||||||
|
defer os.Setenv("HOST_PROC", origProc)
|
||||||
|
|
||||||
|
for _, tt := range virtualMemoryTests {
|
||||||
|
t.Run(tt.mockedRootFS, func(t *testing.T) {
|
||||||
|
os.Setenv("HOST_PROC", filepath.Join("testdata/linux/virtualmemory/", tt.mockedRootFS, "proc"))
|
||||||
|
|
||||||
|
stat, err := VirtualMemory()
|
||||||
|
skipIfNotImplementedErr(t, err)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("error %v", err)
|
||||||
|
}
|
||||||
|
if !reflect.DeepEqual(stat, tt.stat) {
|
||||||
|
t.Errorf("got: %+v\nwant: %+v", stat, tt.stat)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
46
v3/mem/testdata/linux/virtualmemory/intelcorei5/proc/meminfo
vendored
Normal file
46
v3/mem/testdata/linux/virtualmemory/intelcorei5/proc/meminfo
vendored
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
MemTotal: 16115528 kB
|
||||||
|
MemFree: 8577628 kB
|
||||||
|
MemAvailable: 11225936 kB
|
||||||
|
Buffers: 207516 kB
|
||||||
|
Cached: 3791568 kB
|
||||||
|
SwapCached: 0 kB
|
||||||
|
Active: 4245500 kB
|
||||||
|
Inactive: 2869956 kB
|
||||||
|
Active(anon): 3123508 kB
|
||||||
|
Inactive(anon): 1186612 kB
|
||||||
|
Active(file): 1121992 kB
|
||||||
|
Inactive(file): 1683344 kB
|
||||||
|
Unevictable: 32 kB
|
||||||
|
Mlocked: 32 kB
|
||||||
|
SwapTotal: 8065020 kB
|
||||||
|
SwapFree: 8065020 kB
|
||||||
|
Dirty: 172 kB
|
||||||
|
Writeback: 0 kB
|
||||||
|
AnonPages: 3116472 kB
|
||||||
|
Mapped: 1145144 kB
|
||||||
|
Shmem: 1193752 kB
|
||||||
|
Slab: 247824 kB
|
||||||
|
SReclaimable: 182100 kB
|
||||||
|
SUnreclaim: 65724 kB
|
||||||
|
KernelStack: 14224 kB
|
||||||
|
PageTables: 63712 kB
|
||||||
|
NFS_Unstable: 0 kB
|
||||||
|
Bounce: 0 kB
|
||||||
|
WritebackTmp: 0 kB
|
||||||
|
CommitLimit: 16122784 kB
|
||||||
|
Committed_AS: 12071112 kB
|
||||||
|
VmallocTotal: 34359738367 kB
|
||||||
|
VmallocUsed: 0 kB
|
||||||
|
VmallocChunk: 0 kB
|
||||||
|
HardwareCorrupted: 0 kB
|
||||||
|
AnonHugePages: 0 kB
|
||||||
|
ShmemHugePages: 0 kB
|
||||||
|
ShmemPmdMapped: 0 kB
|
||||||
|
HugePages_Total: 0
|
||||||
|
HugePages_Free: 0
|
||||||
|
HugePages_Rsvd: 0
|
||||||
|
HugePages_Surp: 0
|
||||||
|
Hugepagesize: 2048 kB
|
||||||
|
DirectMap4k: 143564 kB
|
||||||
|
DirectMap2M: 6871040 kB
|
||||||
|
DirectMap1G: 10485760 kB
|
Loading…
x
Reference in New Issue
Block a user