117 lines
1.9 KiB
Go
117 lines
1.9 KiB
Go
package hddtemp
|
|
|
|
import (
|
|
"net"
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestFetch(t *testing.T) {
|
|
l := serve(t, []byte("|/dev/sda|foobar|36|C|"))
|
|
defer l.Close()
|
|
|
|
disks, err := Fetch(l.Addr().String())
|
|
|
|
if err != nil {
|
|
t.Error("expecting err to be nil")
|
|
}
|
|
|
|
expected := []disk{
|
|
{
|
|
DeviceName: "sda",
|
|
Model: "foobar",
|
|
Temperature: 36,
|
|
Unit: "C",
|
|
},
|
|
}
|
|
|
|
if !reflect.DeepEqual(expected, disks) {
|
|
t.Error("disks' slice is different from expected")
|
|
}
|
|
}
|
|
|
|
func TestFetchWrongAddress(t *testing.T) {
|
|
_, err := Fetch("127.0.0.1:1")
|
|
|
|
if err == nil {
|
|
t.Error("expecting err to be non-nil")
|
|
}
|
|
}
|
|
|
|
func TestFetchStatus(t *testing.T) {
|
|
l := serve(t, []byte("|/dev/sda|foobar|SLP|C|"))
|
|
defer l.Close()
|
|
|
|
disks, err := Fetch(l.Addr().String())
|
|
|
|
if err != nil {
|
|
t.Error("expecting err to be nil")
|
|
}
|
|
|
|
expected := []disk{
|
|
{
|
|
DeviceName: "sda",
|
|
Model: "foobar",
|
|
Temperature: 0,
|
|
Unit: "C",
|
|
Status: "SLP",
|
|
},
|
|
}
|
|
|
|
if !reflect.DeepEqual(expected, disks) {
|
|
t.Error("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 := Fetch(l.Addr().String())
|
|
|
|
if err != nil {
|
|
t.Error("expecting err to be nil")
|
|
}
|
|
|
|
expected := []disk{
|
|
{
|
|
DeviceName: "hda",
|
|
Model: "ST380011A",
|
|
Temperature: 46,
|
|
Unit: "C",
|
|
},
|
|
{
|
|
DeviceName: "hdd",
|
|
Model: "ST340016A",
|
|
Temperature: 0,
|
|
Unit: "*",
|
|
Status: "SLP",
|
|
},
|
|
}
|
|
|
|
if !reflect.DeepEqual(expected, disks) {
|
|
t.Error("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")
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
go func(t *testing.T) {
|
|
conn, err := l.Accept()
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
conn.Write(data)
|
|
conn.Close()
|
|
}(t)
|
|
|
|
return l
|
|
}
|