github.com/elastic/gosigar@v0.14.3/cgroup/memory_test.go (about) 1 package cgroup 2 3 import ( 4 "encoding/json" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 const memoryPath = "testdata/docker/sys/fs/cgroup/memory/docker/b29faf21b7eff959f64b4192c34d5d67a707fe8561e9eaa608cb27693fba4242" 11 12 func TestMemoryStat(t *testing.T) { 13 mem := MemorySubsystem{} 14 if err := memoryStats(memoryPath, &mem); err != nil { 15 t.Fatal(err) 16 } 17 18 assert.Equal(t, uint64(65101824), mem.Stats.Cache) 19 assert.Equal(t, uint64(230662144), mem.Stats.RSS) 20 assert.Equal(t, uint64(174063616), mem.Stats.RSSHuge) 21 assert.Equal(t, uint64(17633280), mem.Stats.MappedFile) 22 assert.Equal(t, uint64(0), mem.Stats.Swap) 23 assert.Equal(t, uint64(103258), mem.Stats.PagesIn) 24 assert.Equal(t, uint64(77551), mem.Stats.PagesOut) 25 assert.Equal(t, uint64(91651), mem.Stats.PageFaults) 26 assert.Equal(t, uint64(166), mem.Stats.MajorPageFaults) 27 assert.Equal(t, uint64(28672), mem.Stats.InactiveAnon) 28 assert.Equal(t, uint64(230780928), mem.Stats.ActiveAnon) 29 assert.Equal(t, uint64(40108032), mem.Stats.InactiveFile) 30 assert.Equal(t, uint64(24813568), mem.Stats.ActiveFile) 31 assert.Equal(t, uint64(0), mem.Stats.Unevictable) 32 assert.Equal(t, uint64(9223372036854771712), mem.Stats.HierarchicalMemoryLimit) 33 assert.Equal(t, uint64(9223372036854771712), mem.Stats.HierarchicalMemswLimit) 34 } 35 36 func TestMemoryData(t *testing.T) { 37 usage := MemoryData{} 38 if err := memoryData(memoryPath, "memory", &usage); err != nil { 39 t.Fatal(err) 40 } 41 42 assert.Equal(t, uint64(295997440), usage.Usage) 43 assert.Equal(t, uint64(298532864), usage.MaxUsage) 44 assert.Equal(t, uint64(9223372036854771712), usage.Limit) 45 assert.Equal(t, uint64(0), usage.FailCount) 46 } 47 48 func TestMemoryDataSwap(t *testing.T) { 49 usage := MemoryData{} 50 if err := memoryData(memoryPath, "memory.memsw", &usage); err != nil { 51 t.Fatal(err) 52 } 53 54 assert.Equal(t, uint64(295997440), usage.Usage) 55 assert.Equal(t, uint64(298532864), usage.MaxUsage) 56 assert.Equal(t, uint64(9223372036854771712), usage.Limit) 57 assert.Equal(t, uint64(0), usage.FailCount) 58 } 59 60 func TestMemoryDataKernel(t *testing.T) { 61 usage := MemoryData{} 62 if err := memoryData(memoryPath, "memory.kmem", &usage); err != nil { 63 t.Fatal(err) 64 } 65 66 assert.Equal(t, uint64(40), usage.Usage) 67 assert.Equal(t, uint64(50), usage.MaxUsage) 68 assert.Equal(t, uint64(9223372036854771712), usage.Limit) 69 assert.Equal(t, uint64(0), usage.FailCount) 70 } 71 72 func TestMemoryDataKernelTCP(t *testing.T) { 73 usage := MemoryData{} 74 if err := memoryData(memoryPath, "memory.kmem.tcp", &usage); err != nil { 75 t.Fatal(err) 76 } 77 78 assert.Equal(t, uint64(10), usage.Usage) 79 assert.Equal(t, uint64(70), usage.MaxUsage) 80 assert.Equal(t, uint64(9223372036854771712), usage.Limit) 81 assert.Equal(t, uint64(0), usage.FailCount) 82 } 83 84 func TestMemorySubsystemGet(t *testing.T) { 85 mem := MemorySubsystem{} 86 if err := mem.get(memoryPath); err != nil { 87 t.Fatal(err) 88 } 89 90 assert.Equal(t, uint64(65101824), mem.Stats.Cache) 91 assert.Equal(t, uint64(295997440), mem.Mem.Usage) 92 assert.Equal(t, uint64(295997440), mem.MemSwap.Usage) 93 assert.Equal(t, uint64(40), mem.Kernel.Usage) 94 assert.Equal(t, uint64(10), mem.KernelTCP.Usage) 95 } 96 97 func TestMemorySubsystemJSON(t *testing.T) { 98 mem := MemorySubsystem{} 99 if err := mem.get(memoryPath); err != nil { 100 t.Fatal(err) 101 } 102 103 json, err := json.MarshalIndent(mem, "", " ") 104 if err != nil { 105 t.Fatal(err) 106 } 107 108 t.Log(string(json)) 109 }