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  }