mirror of https://github.com/apache/cloudstack.git
117 lines
5.3 KiB
Java
117 lines
5.3 KiB
Java
// 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");
|
|
}
|
|
}
|