1
0
Fork 0
telegraf/plugins/inputs/hddtemp/go-hddtemp/hddtemp_test.go

100 lines
1.8 KiB
Go
Raw Permalink Normal View History

package hddtemp
import (
"net"
"testing"
"github.com/stretchr/testify/require"
)
func TestFetch(t *testing.T) {
l := serve(t, []byte("|/dev/sda|foobar|36|C|"))
defer l.Close()
disks, err := New().Fetch(l.Addr().String())
require.NoError(t, err)
expected := []Disk{
{
DeviceName: "sda",
Model: "foobar",
Temperature: 36,
Unit: "C",
},
}
require.Equal(t, expected, disks, "disks' slice is different from expected")
}
func TestFetchWrongAddress(t *testing.T) {
_, err := New().Fetch("127.0.0.1:1")
require.Error(t, err)
}
func TestFetchStatus(t *testing.T) {
l := serve(t, []byte("|/dev/sda|foobar|SLP|C|"))
defer l.Close()
disks, err := New().Fetch(l.Addr().String())
require.NoError(t, err)
expected := []Disk{
{
DeviceName: "sda",
Model: "foobar",
Temperature: 0,
Unit: "C",
Status: "SLP",
},
}
require.Equal(t, expected, disks, "disks' slice is different from expected")
}
func TestFetchTwoDisks(t *testing.T) {
l := serve(t, []byte("|/dev/hda|ST380011A|46|C||/dev/hdd|ST340016A|SLP|*|"))
defer l.Close()
disks, err := New().Fetch(l.Addr().String())
require.NoError(t, err)
expected := []Disk{
{
DeviceName: "hda",
Model: "ST380011A",
Temperature: 46,
Unit: "C",
},
{
DeviceName: "hdd",
Model: "ST340016A",
Temperature: 0,
Unit: "*",
Status: "SLP",
},
}
require.Equal(t, expected, disks, "disks' slice is different from expected")
}
func serve(t *testing.T, data []byte) net.Listener {
l, err := net.Listen("tcp", "127.0.0.1:0")
require.NoError(t, err)
go func(t *testing.T) {
conn, err := l.Accept()
if err != nil {
t.Error(err)
return
}
if _, err = conn.Write(data); err != nil {
t.Error(err)
return
}
if err = conn.Close(); err != nil {
t.Error(err)
return
}
}(t)
return l
}