2015-04-01 16:34:32 +00:00
|
|
|
package system
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
2015-04-06 16:32:10 +00:00
|
|
|
"github.com/influxdb/tivan/plugins/system/ps/cpu"
|
2015-04-06 17:34:55 +00:00
|
|
|
"github.com/influxdb/tivan/plugins/system/ps/disk"
|
2015-04-04 00:22:31 +00:00
|
|
|
"github.com/influxdb/tivan/plugins/system/ps/load"
|
2015-04-06 17:44:32 +00:00
|
|
|
"github.com/influxdb/tivan/plugins/system/ps/net"
|
2015-04-06 16:32:10 +00:00
|
|
|
"github.com/influxdb/tivan/testutil"
|
2015-04-01 16:34:32 +00:00
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
)
|
|
|
|
|
2015-04-06 16:32:10 +00:00
|
|
|
func TestSystemStats_GenerateStats(t *testing.T) {
|
2015-04-01 16:34:32 +00:00
|
|
|
var mps MockPS
|
|
|
|
|
2015-04-04 00:22:31 +00:00
|
|
|
defer mps.AssertExpectations(t)
|
2015-04-01 16:34:32 +00:00
|
|
|
|
2015-04-06 16:32:10 +00:00
|
|
|
var acc testutil.Accumulator
|
|
|
|
|
2015-04-04 00:22:31 +00:00
|
|
|
ss := &SystemStats{ps: &mps}
|
2015-04-01 16:34:32 +00:00
|
|
|
|
2015-04-04 00:22:31 +00:00
|
|
|
lv := &load.LoadAvgStat{
|
|
|
|
Load1: 0.3,
|
|
|
|
Load5: 1.5,
|
|
|
|
Load15: 0.8,
|
|
|
|
}
|
2015-04-01 16:34:32 +00:00
|
|
|
|
2015-04-04 00:22:31 +00:00
|
|
|
mps.On("LoadAvg").Return(lv, nil)
|
2015-04-01 16:34:32 +00:00
|
|
|
|
2015-04-06 16:32:10 +00:00
|
|
|
cts := cpu.CPUTimesStat{
|
|
|
|
CPU: "all",
|
|
|
|
User: 3.1,
|
|
|
|
System: 8.2,
|
|
|
|
Idle: 80.1,
|
|
|
|
Nice: 1.3,
|
|
|
|
Iowait: 0.2,
|
|
|
|
Irq: 0.1,
|
|
|
|
Softirq: 0.11,
|
|
|
|
Steal: 0.0001,
|
|
|
|
Guest: 8.1,
|
|
|
|
GuestNice: 0.324,
|
|
|
|
Stolen: 0.051,
|
2015-04-04 00:22:31 +00:00
|
|
|
}
|
2015-04-01 16:34:32 +00:00
|
|
|
|
2015-04-06 16:32:10 +00:00
|
|
|
mps.On("CPUTimes").Return([]cpu.CPUTimesStat{cts}, nil)
|
2015-04-01 16:34:32 +00:00
|
|
|
|
2015-04-06 17:34:55 +00:00
|
|
|
du := &disk.DiskUsageStat{
|
|
|
|
Path: "/",
|
|
|
|
Total: 128,
|
|
|
|
Free: 23,
|
|
|
|
InodesTotal: 1234,
|
|
|
|
InodesFree: 234,
|
|
|
|
}
|
|
|
|
|
|
|
|
mps.On("DiskUsage").Return([]*disk.DiskUsageStat{du}, nil)
|
|
|
|
|
2015-04-06 17:44:32 +00:00
|
|
|
netio := net.NetIOCountersStat{
|
|
|
|
Name: "eth0",
|
|
|
|
BytesSent: 1123,
|
|
|
|
BytesRecv: 8734422,
|
|
|
|
PacketsSent: 781,
|
|
|
|
PacketsRecv: 23456,
|
|
|
|
Errin: 832,
|
|
|
|
Errout: 8,
|
|
|
|
Dropin: 7,
|
|
|
|
Dropout: 1,
|
|
|
|
}
|
|
|
|
|
|
|
|
mps.On("NetIO").Return([]net.NetIOCountersStat{netio}, nil)
|
|
|
|
|
2015-04-06 16:32:10 +00:00
|
|
|
err := ss.Gather(&acc)
|
2015-04-04 00:22:31 +00:00
|
|
|
require.NoError(t, err)
|
2015-04-01 16:34:32 +00:00
|
|
|
|
2015-04-06 16:32:10 +00:00
|
|
|
assert.True(t, acc.CheckValue("load1", 0.3))
|
|
|
|
assert.True(t, acc.CheckValue("load5", 1.5))
|
|
|
|
assert.True(t, acc.CheckValue("load15", 0.8))
|
|
|
|
|
|
|
|
assert.True(t, acc.CheckValue("all.user", 3.1))
|
|
|
|
assert.True(t, acc.CheckValue("all.system", 8.2))
|
|
|
|
assert.True(t, acc.CheckValue("all.idle", 80.1))
|
|
|
|
assert.True(t, acc.CheckValue("all.nice", 1.3))
|
|
|
|
assert.True(t, acc.CheckValue("all.iowait", 0.2))
|
|
|
|
assert.True(t, acc.CheckValue("all.irq", 0.1))
|
|
|
|
assert.True(t, acc.CheckValue("all.softirq", 0.11))
|
|
|
|
assert.True(t, acc.CheckValue("all.steal", 0.0001))
|
|
|
|
assert.True(t, acc.CheckValue("all.guest", 8.1))
|
|
|
|
assert.True(t, acc.CheckValue("all.guestNice", 0.324))
|
|
|
|
assert.True(t, acc.CheckValue("all.stolen", 0.051))
|
2015-04-06 17:34:55 +00:00
|
|
|
|
|
|
|
tags := map[string]string{
|
|
|
|
"path": "/",
|
|
|
|
}
|
|
|
|
|
|
|
|
assert.True(t, acc.CheckTaggedValue("total", uint64(128), tags))
|
|
|
|
assert.True(t, acc.CheckTaggedValue("used", uint64(105), tags))
|
|
|
|
assert.True(t, acc.CheckTaggedValue("free", uint64(23), tags))
|
|
|
|
assert.True(t, acc.CheckTaggedValue("inodes_total", uint64(1234), tags))
|
|
|
|
assert.True(t, acc.CheckTaggedValue("inodes_free", uint64(234), tags))
|
|
|
|
assert.True(t, acc.CheckTaggedValue("inodes_used", uint64(1000), tags))
|
2015-04-06 17:44:32 +00:00
|
|
|
|
|
|
|
ntags := map[string]string{
|
|
|
|
"interface": "eth0",
|
|
|
|
}
|
|
|
|
|
|
|
|
assert.True(t, acc.CheckTaggedValue("bytes_sent", uint64(1123), ntags))
|
|
|
|
assert.True(t, acc.CheckTaggedValue("bytes_recv", uint64(8734422), ntags))
|
|
|
|
assert.True(t, acc.CheckTaggedValue("packets_sent", uint64(781), ntags))
|
|
|
|
assert.True(t, acc.CheckTaggedValue("packets_recv", uint64(23456), ntags))
|
|
|
|
assert.True(t, acc.CheckTaggedValue("err_in", uint64(832), ntags))
|
|
|
|
assert.True(t, acc.CheckTaggedValue("err_out", uint64(8), ntags))
|
|
|
|
assert.True(t, acc.CheckTaggedValue("drop_in", uint64(7), ntags))
|
|
|
|
assert.True(t, acc.CheckTaggedValue("drop_out", uint64(1), ntags))
|
2015-04-01 16:34:32 +00:00
|
|
|
}
|