Set path to / if HOST_MOUNT_PREFIX matches full path (#3736)
This commit is contained in:
parent
3a85e7b1f0
commit
10e51e4b49
|
@ -117,6 +117,140 @@ func TestDiskUsage(t *testing.T) {
|
||||||
assert.Equal(t, 2*expectedAllDiskMetrics+7, acc.NFields())
|
assert.Equal(t, 2*expectedAllDiskMetrics+7, acc.NFields())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDiskUsageHostMountPrefix(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
partitionStats []disk.PartitionStat
|
||||||
|
usageStats []*disk.UsageStat
|
||||||
|
hostMountPrefix string
|
||||||
|
expectedTags map[string]string
|
||||||
|
expectedFields map[string]interface{}
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "no host mount prefix",
|
||||||
|
partitionStats: []disk.PartitionStat{
|
||||||
|
{
|
||||||
|
Device: "/dev/sda",
|
||||||
|
Mountpoint: "/",
|
||||||
|
Fstype: "ext4",
|
||||||
|
Opts: "ro",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
usageStats: []*disk.UsageStat{
|
||||||
|
&disk.UsageStat{
|
||||||
|
Path: "/",
|
||||||
|
Total: 42,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
expectedTags: map[string]string{
|
||||||
|
"path": "/",
|
||||||
|
"device": "sda",
|
||||||
|
"fstype": "ext4",
|
||||||
|
"mode": "ro",
|
||||||
|
},
|
||||||
|
expectedFields: map[string]interface{}{
|
||||||
|
"total": uint64(42),
|
||||||
|
"used": uint64(0),
|
||||||
|
"free": uint64(0),
|
||||||
|
"inodes_total": uint64(0),
|
||||||
|
"inodes_free": uint64(0),
|
||||||
|
"inodes_used": uint64(0),
|
||||||
|
"used_percent": float64(0),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "host mount prefix",
|
||||||
|
partitionStats: []disk.PartitionStat{
|
||||||
|
{
|
||||||
|
Device: "/dev/sda",
|
||||||
|
Mountpoint: "/hostfs/var",
|
||||||
|
Fstype: "ext4",
|
||||||
|
Opts: "ro",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
usageStats: []*disk.UsageStat{
|
||||||
|
&disk.UsageStat{
|
||||||
|
Path: "/hostfs/var",
|
||||||
|
Total: 42,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
hostMountPrefix: "/hostfs",
|
||||||
|
expectedTags: map[string]string{
|
||||||
|
"path": "/var",
|
||||||
|
"device": "sda",
|
||||||
|
"fstype": "ext4",
|
||||||
|
"mode": "ro",
|
||||||
|
},
|
||||||
|
expectedFields: map[string]interface{}{
|
||||||
|
"total": uint64(42),
|
||||||
|
"used": uint64(0),
|
||||||
|
"free": uint64(0),
|
||||||
|
"inodes_total": uint64(0),
|
||||||
|
"inodes_free": uint64(0),
|
||||||
|
"inodes_used": uint64(0),
|
||||||
|
"used_percent": float64(0),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "host mount prefix exact match",
|
||||||
|
partitionStats: []disk.PartitionStat{
|
||||||
|
{
|
||||||
|
Device: "/dev/sda",
|
||||||
|
Mountpoint: "/hostfs",
|
||||||
|
Fstype: "ext4",
|
||||||
|
Opts: "ro",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
usageStats: []*disk.UsageStat{
|
||||||
|
&disk.UsageStat{
|
||||||
|
Path: "/hostfs",
|
||||||
|
Total: 42,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
hostMountPrefix: "/hostfs",
|
||||||
|
expectedTags: map[string]string{
|
||||||
|
"path": "/",
|
||||||
|
"device": "sda",
|
||||||
|
"fstype": "ext4",
|
||||||
|
"mode": "ro",
|
||||||
|
},
|
||||||
|
expectedFields: map[string]interface{}{
|
||||||
|
"total": uint64(42),
|
||||||
|
"used": uint64(0),
|
||||||
|
"free": uint64(0),
|
||||||
|
"inodes_total": uint64(0),
|
||||||
|
"inodes_free": uint64(0),
|
||||||
|
"inodes_used": uint64(0),
|
||||||
|
"used_percent": float64(0),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
mck := &mock.Mock{}
|
||||||
|
mps := MockPSDisk{&systemPS{&mockDiskUsage{mck}}, mck}
|
||||||
|
defer mps.AssertExpectations(t)
|
||||||
|
|
||||||
|
var acc testutil.Accumulator
|
||||||
|
var err error
|
||||||
|
|
||||||
|
mps.On("Partitions", true).Return(tt.partitionStats, nil)
|
||||||
|
|
||||||
|
for _, v := range tt.usageStats {
|
||||||
|
mps.On("PSDiskUsage", v.Path).Return(v, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
mps.On("OSGetenv", "HOST_MOUNT_PREFIX").Return(tt.hostMountPrefix)
|
||||||
|
|
||||||
|
err = (&DiskStats{ps: mps}).Gather(&acc)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
acc.AssertContainsTaggedFields(t, "disk", tt.expectedFields, tt.expectedTags)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestDiskStats(t *testing.T) {
|
func TestDiskStats(t *testing.T) {
|
||||||
var mps MockPS
|
var mps MockPS
|
||||||
defer mps.AssertExpectations(t)
|
defer mps.AssertExpectations(t)
|
||||||
|
|
|
@ -2,6 +2,7 @@ package system
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
|
@ -129,7 +130,7 @@ func (s *systemPS) DiskUsage(
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
du.Path = strings.TrimPrefix(p.Mountpoint, hostMountPrefix)
|
du.Path = filepath.Join("/", strings.TrimPrefix(p.Mountpoint, hostMountPrefix))
|
||||||
du.Fstype = p.Fstype
|
du.Fstype = p.Fstype
|
||||||
usage = append(usage, du)
|
usage = append(usage, du)
|
||||||
partitions = append(partitions, &p)
|
partitions = append(partitions, &p)
|
||||||
|
|
Loading…
Reference in New Issue