node_exporter/collector/buddyinfo_test.go
Thorhallur Sverrisson 3ba15c1ddb Adding support for /proc/buddyinfo for linux free memory fragmentation.
/prod/buddyinfo returns data on the free blocks fragments available
for use from the kernel.  This data is useful when diagnosing
possible memory fragmentation.

More info can be found in:
* https://lwn.net/Articles/7868/
* https://andorian.blogspot.com/2014/03/making-sense-of-procbuddyinfo.html
2017-02-15 10:15:43 -06:00

40 lines
1.1 KiB
Go

// Copyright 2015 The Prometheus Authors
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package collector
import (
"os"
"testing"
)
func TestBuddyInfo(t *testing.T) {
file, err := os.Open("fixtures/proc/buddyinfo")
if err != nil {
t.Fatal(err)
}
defer file.Close()
buddyInfo, err := parseBuddyInfo(file)
if err != nil {
t.Fatal(err)
}
if want, got := 4381.0, buddyInfo["0"]["Normal"][0]; want != got {
t.Errorf("want Node 0, Zone Normal %f, got %f", want, got)
}
if want, got := 572.0, buddyInfo["0"]["DMA32"][1]; want != got {
t.Errorf("want Node 0, Zone DMA32 %f, got %f", want, got)
}
}