github.com/rudderlabs/rudder-go-kit@v0.30.0/mem/mem_test.go (about)

     1  package mem
     2  
     3  import (
     4  	"testing"
     5  
     6  	gomem "github.com/shirou/gopsutil/v3/mem"
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestMemCollector(t *testing.T) {
    11  	const expectedCgroupsTotal = 100000 // setting a pretty low value to make sure the system running the test will have more memory than this
    12  	const expectedCgroupsUsed = 9000
    13  	mem, err := gomem.VirtualMemory()
    14  	require.NoError(t, err)
    15  	require.Greater(t, mem.Total, uint64(expectedCgroupsTotal), "cgroups total should be less than the actual total memory of the system running the tests")
    16  
    17  	t.Run("without cgroups", func(t *testing.T) {
    18  		c := &collector{basePath: "testdata/invalidpath"}
    19  		s, err := c.Get()
    20  		require.NoError(t, err)
    21  		require.Greater(t, s.Total, uint64(0))
    22  		require.Greater(t, s.Used, uint64(0))
    23  		require.EqualValues(t, s.Total-s.Used, s.Available, "available memory should be total memory minus used memory")
    24  		require.Greater(t, s.Total, s.Used, "total memory should be greater than used memory")
    25  		require.Greater(t, s.Total, s.Available, "total memory should be greater than available memory")
    26  		require.LessOrEqual(t, s.UsedPercent, float64(100))
    27  		require.LessOrEqual(t, s.AvailablePercent, float64(100))
    28  		require.EqualValues(t, float64(s.Used)*100/float64(s.Total), s.UsedPercent)
    29  	})
    30  	t.Run("with cgroups", func(t *testing.T) {
    31  		c := &collector{basePath: "testdata/cgroups_v1_mem_limit"}
    32  		s, err := c.Get()
    33  
    34  		require.NoError(t, err)
    35  		require.EqualValues(t, expectedCgroupsTotal, s.Total)
    36  		require.EqualValues(t, expectedCgroupsUsed, s.Used)
    37  		require.EqualValues(t, s.Total-s.Used, s.Available)
    38  		require.EqualValues(t, float64(s.Used)*100/float64(s.Total), s.UsedPercent)
    39  	})
    40  }