github.com/muhammadn/cortex@v1.9.1-0.20220510110439-46bb7000d03d/pkg/util/process/collector_test.go (about) 1 package process 2 3 import ( 4 "bytes" 5 "io/ioutil" 6 "os" 7 "path/filepath" 8 "testing" 9 10 "github.com/prometheus/client_golang/prometheus" 11 "github.com/prometheus/client_golang/prometheus/testutil" 12 "github.com/stretchr/testify/assert" 13 "github.com/stretchr/testify/require" 14 ) 15 16 func TestProcessCollector(t *testing.T) { 17 const pid = 1 18 19 // Create a mocked proc FS. 20 procDir, err := ioutil.TempDir("", "proc") 21 require.NoError(t, err) 22 defer func() { 23 require.NoError(t, os.RemoveAll(procDir)) 24 }() 25 26 mapsPath := processMapsPath(procDir, pid) 27 mapsLimitPath := vmMapsLimitPath(procDir) 28 29 require.NoError(t, os.MkdirAll(filepath.Dir(mapsPath), os.ModePerm)) 30 require.NoError(t, os.MkdirAll(filepath.Dir(mapsLimitPath), os.ModePerm)) 31 32 require.NoError(t, ioutil.WriteFile(mapsPath, []byte("1\n2\n3\n4\n5\n"), os.ModePerm)) 33 require.NoError(t, ioutil.WriteFile(mapsLimitPath, []byte("262144\n"), os.ModePerm)) 34 35 // Create a new collector and test metrics. 36 c, err := newProcessCollector(pid, procDir) 37 require.NoError(t, err) 38 39 reg := prometheus.NewPedanticRegistry() 40 require.NoError(t, reg.Register(c)) 41 42 assert.NoError(t, testutil.GatherAndCompare(reg, bytes.NewBufferString(` 43 # HELP process_memory_map_areas Number of memory map areas allocated by the process. 44 # TYPE process_memory_map_areas gauge 45 process_memory_map_areas 5 46 # HELP process_memory_map_areas_limit Maximum number of memory map ares the process can allocate. 47 # TYPE process_memory_map_areas_limit gauge 48 process_memory_map_areas_limit 262144 49 `))) 50 } 51 52 func TestProcessCollector_UnsupportedPlatform(t *testing.T) { 53 _, err := newProcessCollector(1, "/path/to/invalid/proc") 54 require.Equal(t, ErrUnsupportedCollector, err) 55 }