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  }