99 lines
1.8 KiB
Go
99 lines
1.8 KiB
Go
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
|
|
}
|