github.com/newrelic/go-agent@v3.26.0+incompatible/internal/sysinfo/memtotal_test.go (about) 1 // Copyright 2020 New Relic Corporation. All rights reserved. 2 // SPDX-License-Identifier: Apache-2.0 3 4 package sysinfo 5 6 import ( 7 "os" 8 "regexp" 9 "strconv" 10 "testing" 11 12 "github.com/newrelic/go-agent/internal/crossagent" 13 ) 14 15 func TestMemTotal(t *testing.T) { 16 var fileRe = regexp.MustCompile(`meminfo_([0-9]+)MB.txt$`) 17 var ignoreFile = regexp.MustCompile(`README\.md$`) 18 19 testCases, err := crossagent.ReadDir("proc_meminfo") 20 if err != nil { 21 t.Fatal(err) 22 } 23 24 for _, testFile := range testCases { 25 if ignoreFile.MatchString(testFile) { 26 continue 27 } 28 29 matches := fileRe.FindStringSubmatch(testFile) 30 31 if matches == nil || len(matches) < 2 { 32 t.Error(testFile, matches) 33 continue 34 } 35 36 expect, err := strconv.ParseUint(matches[1], 10, 64) 37 if err != nil { 38 t.Error(err) 39 continue 40 } 41 42 input, err := os.Open(testFile) 43 if err != nil { 44 t.Error(err) 45 continue 46 } 47 bts, err := parseProcMeminfo(input) 48 input.Close() 49 mib := BytesToMebibytes(bts) 50 if err != nil { 51 t.Error(err) 52 } else if mib != expect { 53 t.Error(bts, expect) 54 } 55 } 56 }