| 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) |
| } |