telegraf/plugins/inputs/nfsclient/nfsclient_test.go

177 lines
4.9 KiB
Go
Raw Normal View History

package nfsclient
import (
"bufio"
"github.com/influxdata/telegraf/testutil"
"os"
"strings"
"testing"
)
func getMountStatsPath() string {
path := "./testdata/mountstats"
if os.Getenv("MOUNT_PROC") != "" {
path = os.Getenv("MOUNT_PROC")
}
return path
}
func TestNFSClientParsev3(t *testing.T) {
var acc testutil.Accumulator
nfsclient := NFSClient{Fullstat: true}
nfsclient.nfs3Ops = map[string]bool{"READLINK": true, "GETATTR": false}
nfsclient.nfs4Ops = map[string]bool{"READLINK": true, "GETATTR": false}
data := strings.Fields(" READLINK: 500 501 502 503 504 505 506 507")
nfsclient.parseStat("1.2.3.4:/storage/NFS", "/A", "3", data, &acc)
fields_ops := map[string]interface{}{
"ops": int64(500),
"trans": int64(501),
"timeouts": int64(502),
"bytes_sent": int64(503),
"bytes_recv": int64(504),
"queue_time": int64(505),
"response_time": int64(506),
"total_time": int64(507),
}
acc.AssertContainsFields(t, "nfs_ops", fields_ops)
}
func TestNFSClientParsev4(t *testing.T) {
var acc testutil.Accumulator
nfsclient := NFSClient{Fullstat: true}
nfsclient.nfs3Ops = map[string]bool{"DESTROY_SESSION": true, "GETATTR": false}
nfsclient.nfs4Ops = map[string]bool{"DESTROY_SESSION": true, "GETATTR": false}
data := strings.Fields(" DESTROY_SESSION: 500 501 502 503 504 505 506 507")
nfsclient.parseStat("2.2.2.2:/nfsdata/", "/B", "4", data, &acc)
fields_ops := map[string]interface{}{
"ops": int64(500),
"trans": int64(501),
"timeouts": int64(502),
"bytes_sent": int64(503),
"bytes_recv": int64(504),
"queue_time": int64(505),
"response_time": int64(506),
"total_time": int64(507),
}
acc.AssertContainsFields(t, "nfs_ops", fields_ops)
}
func TestNFSClientProcessStat(t *testing.T) {
var acc testutil.Accumulator
nfsclient := NFSClient{}
nfsclient.Fullstat = false
file, _ := os.Open(getMountStatsPath())
defer file.Close()
scanner := bufio.NewScanner(file)
nfsclient.processText(scanner, &acc)
fields_readstat := map[string]interface{}{
"ops": int64(600),
"retrans": int64(1),
"bytes": int64(1207),
"rtt": int64(606),
"exe": int64(607),
}
read_tags := map[string]string{
"serverexport": "1.2.3.4:/storage/NFS",
"mountpoint": "/A",
"operation": "READ",
}
acc.AssertContainsTaggedFields(t, "nfsstat", fields_readstat, read_tags)
fields_writestat := map[string]interface{}{
"ops": int64(700),
"retrans": int64(1),
"bytes": int64(1407),
"rtt": int64(706),
"exe": int64(707),
}
write_tags := map[string]string{
"serverexport": "1.2.3.4:/storage/NFS",
"mountpoint": "/A",
"operation": "WRITE",
}
acc.AssertContainsTaggedFields(t, "nfsstat", fields_writestat, write_tags)
}
func TestNFSClientProcessFull(t *testing.T) {
var acc testutil.Accumulator
nfsclient := NFSClient{}
nfsclient.Fullstat = true
file, _ := os.Open(getMountStatsPath())
defer file.Close()
scanner := bufio.NewScanner(file)
nfsclient.processText(scanner, &acc)
fields_events := map[string]interface{}{
"inoderevalidates": int64(301736),
"dentryrevalidates": int64(22838),
"datainvalidates": int64(410979),
"attrinvalidates": int64(26188427),
"vfsopen": int64(27525),
"vfslookup": int64(9140),
"vfsaccess": int64(114420),
"vfsupdatepage": int64(30785253),
"vfsreadpage": int64(5308856),
"vfsreadpages": int64(5364858),
"vfswritepage": int64(30784819),
"vfswritepages": int64(79832668),
"vfsgetdents": int64(170),
"vfssetattr": int64(64),
"vfsflush": int64(18194),
"vfsfsync": int64(29294718),
"vfslock": int64(0),
"vfsrelease": int64(18279),
"congestionwait": int64(0),
"setattrtrunc": int64(2),
"extendwrite": int64(785551),
"sillyrenames": int64(0),
"shortreads": int64(0),
"shortwrites": int64(0),
"delay": int64(0),
"pnfsreads": int64(0),
"pnfswrites": int64(0),
}
fields_bytes := map[string]interface{}{
"normalreadbytes": int64(204440464584),
"normalwritebytes": int64(110857586443),
"directreadbytes": int64(783170354688),
"directwritebytes": int64(296174954496),
"serverreadbytes": int64(1134399088816),
"serverwritebytes": int64(407107155723),
"readpages": int64(85749323),
"writepages": int64(30784819),
}
fields_xprt_tcp := map[string]interface{}{
"bind_count": int64(1),
"connect_count": int64(1),
"connect_time": int64(0),
"idle_time": int64(0),
"rpcsends": int64(96172963),
"rpcreceives": int64(96172963),
"badxids": int64(0),
"inflightsends": int64(620878754),
"backlogutil": int64(0),
}
acc.AssertContainsFields(t, "nfs_events", fields_events)
acc.AssertContainsFields(t, "nfs_bytes", fields_bytes)
acc.AssertContainsFields(t, "nfs_xprt_tcp", fields_xprt_tcp)
}