blob: 7b40886e98f3944836d1f5e5c153e975a9f89ccc [file] [log] [blame]
package powercycle
import (
"context"
"fmt"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.skia.org/infra/go/testutils/unittest"
"go.skia.org/infra/machine/go/machine"
"go.skia.org/infra/machine/go/machineserver/rpc"
)
func TestControllerFromJSON5_ConfigIsNonEmpty(t *testing.T) {
unittest.MediumTest(t)
allMachines := []DeviceID{}
controllerInitCallback := func(update rpc.UpdatePowerCycleStateRequest) error {
for _, m := range update.Machines {
allMachines = append(allMachines, DeviceID(m.MachineID))
require.Equal(t, machine.Available, m.PowerCycleState)
}
return nil
}
agg, err := ControllerFromJSON5(context.Background(), "./example.json5", false, controllerInitCallback)
require.NoError(t, err)
assert.ElementsMatch(t, []DeviceID{
"skia-e-linux-001",
"skia-e-linux-002",
"skia-e-linux-003",
"skia-e-linux-004",
"skia-e-linux-010",
"skia-e-linux-011",
"skia-e-linux-012",
"skia-e-linux-013",
"test-relay-1",
"skia-rpi-003-device",
"skia-i-rpi-096",
"skia-i-rpi-097",
"skia-i-rpi-098",
"skia-i-rpi-099",
"skia-i-rpi-196",
"skia-i-rpi-197",
"skia-i-rpi-198",
"skia-i-rpi-199",
"skia-i-rpi-296",
"skia-i-rpi-297",
"skia-i-rpi-298",
"skia-i-rpi-299",
"skia-rpi-1-TEST",
"skia-rpi-2-TEST",
"skia-rpi-TEST",
}, agg.DeviceIDs())
assert.ElementsMatch(t, allMachines, agg.DeviceIDs(), "All machines are passed to ControllerInitCB.")
conf, err := readConfig("./example.json5")
require.NoError(t, err)
for _, oneConf := range conf.EdgeSwitch {
require.NotEqual(t, "", oneConf.Address)
require.NotEmpty(t, oneConf.DevPortMap)
}
for _, oneConf := range conf.MPower {
require.NotEqual(t, "", oneConf.Address)
require.NotEqual(t, "", oneConf.User)
require.NotEmpty(t, oneConf.DevPortMap)
}
}
func TestControllerFromJSON5_ControllerInitCBReturnsError_ControllerFromJSON5ReturnsError(t *testing.T) {
unittest.MediumTest(t)
controllerInitCallback := func(update rpc.UpdatePowerCycleStateRequest) error {
return fmt.Errorf("my fake error")
}
_, err := ControllerFromJSON5(context.Background(), "./example.json5", false, controllerInitCallback)
require.Error(t, err)
}
func TestUpdatePowerCycleStateRequestFromController_ControllerIsNil_StillReturnsValidUpdatePowerCycleStateRequest(t *testing.T) {
unittest.SmallTest(t)
actual := updatePowerCycleStateRequestFromController(nil, machine.Available)
require.NotNil(t, actual)
}