blob: 7f848191524aff732601d78d1d21cd4a9528ab5c [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package org.apache.cloudstack.outofbandmanagement;
import com.cloud.utils.exception.CloudRuntimeException;
import com.google.common.collect.ImmutableMap;
import org.apache.cloudstack.outofbandmanagement.driver.OutOfBandManagementDriverResponse;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class OutOfBandManagementServiceTest {
OutOfBandManagementServiceImpl oobmService = new OutOfBandManagementServiceImpl();
@Test
public void testOutOfBandManagementDriverResponseEvent() {
OutOfBandManagementDriverResponse r = new OutOfBandManagementDriverResponse("some result", "some error", false);
r.setSuccess(false);
r.setAuthFailure(false);
Assert.assertEquals(r.toEvent(), OutOfBandManagement.PowerState.Event.Unknown);
r.setSuccess(false);
r.setAuthFailure(true);
Assert.assertEquals(r.toEvent(), OutOfBandManagement.PowerState.Event.AuthError);
r.setAuthFailure(false);
r.setSuccess(true);
r.setPowerState(OutOfBandManagement.PowerState.On);
Assert.assertEquals(r.toEvent(), OutOfBandManagement.PowerState.Event.On);
r.setPowerState(OutOfBandManagement.PowerState.Off);
Assert.assertEquals(r.toEvent(), OutOfBandManagement.PowerState.Event.Off);
r.setPowerState(OutOfBandManagement.PowerState.Disabled);
Assert.assertEquals(r.toEvent(), OutOfBandManagement.PowerState.Event.Disabled);
}
private ImmutableMap<OutOfBandManagement.Option, String> buildRandomOptionsMap() {
ImmutableMap.Builder<OutOfBandManagement.Option, String> builder = new ImmutableMap.Builder<>();
builder.put(OutOfBandManagement.Option.ADDRESS, "localhost");
builder.put(OutOfBandManagement.Option.DRIVER, "ipmitool");
return builder.build();
}
@Test
public void testUpdateOutOfBandManagementConfigValid() {
OutOfBandManagement config = new OutOfBandManagementVO(123L);
Assert.assertEquals(config.getPowerState(), OutOfBandManagement.PowerState.Disabled);
config = oobmService.updateConfig(config, buildRandomOptionsMap());
Assert.assertEquals(config.getAddress(), "localhost");
Assert.assertEquals(config.getDriver(), "ipmitool");
Assert.assertEquals(config.getPowerState(), OutOfBandManagement.PowerState.Disabled);
}
@Test(expected = CloudRuntimeException.class)
public void testUpdateOutOfBandManagementNullConfigValidOptions() {
oobmService.updateConfig(null, buildRandomOptionsMap());
Assert.fail("CloudRuntimeException was expect for out-of-band management not configured for the host");
}
@Test(expected = CloudRuntimeException.class)
public void testUpdateOutOfBandManagementNullConfigNullOptions() {
oobmService.updateConfig(null, null);
Assert.fail("CloudRuntimeException was expect for out-of-band management not configured for the host");
}
@Test
public void testUpdateOutOfBandManagementValidConfigValidOptions() {
OutOfBandManagement config = new OutOfBandManagementVO(123L);
config.setAddress(null);
config = oobmService.updateConfig(config, null);
Assert.assertEquals(config.getAddress(), null);
Assert.assertEquals(config.getPowerState(), OutOfBandManagement.PowerState.Disabled);
}
@Test
public void testGetOutOfBandManagementOptionsValid() {
OutOfBandManagement configEmpty = new OutOfBandManagementVO(123L);
ImmutableMap<OutOfBandManagement.Option, String> optionsEmpty = oobmService.getOptions(configEmpty);
Assert.assertEquals(optionsEmpty.size(), 0);
OutOfBandManagement config = new OutOfBandManagementVO(123L);
config.setAddress("localhost");
config.setDriver("ipmitool");
config.setPort("1234");
ImmutableMap<OutOfBandManagement.Option, String> options = oobmService.getOptions(config);
Assert.assertEquals(options.get(OutOfBandManagement.Option.ADDRESS), "localhost");
Assert.assertEquals(options.get(OutOfBandManagement.Option.DRIVER), "ipmitool");
Assert.assertEquals(options.get(OutOfBandManagement.Option.PORT), "1234");
}
@Test(expected = CloudRuntimeException.class)
public void testGetOutOfBandManagementOptionsInvalid() {
oobmService.getOptions(null);
Assert.fail("CloudRuntimeException was expected for finding options of host with out-of-band management configuration");
}
}