package org.ovirt.engine.core.bll.validator;
import static org.junit.Assert.assertThat;
import static org.ovirt.engine.core.bll.validator.ValidationResultMatchers.failsWith;
import static org.ovirt.engine.core.bll.validator.ValidationResultMatchers.isValid;
import org.junit.Before;
import org.junit.Test;
import org.ovirt.engine.core.common.businessentities.VDS;
import org.ovirt.engine.core.common.businessentities.VDSStatus;
import org.ovirt.engine.core.common.businessentities.VDSType;
import org.ovirt.engine.core.common.errors.EngineMessage;
import org.ovirt.engine.core.utils.RandomUtils;
public class UpgradeHostValidatorTest {
private VDS host;
private UpgradeHostValidator validator;
@Before
public void setup() {
host = new VDS();
validator = new UpgradeHostValidator(host);
}
@Test
public void hostExists() {
assertThat(validator.hostExists(), isValid());
}
@Test
public void hostDoesNotExist() {
validator = new UpgradeHostValidator(null);
assertThat(validator.hostExists(), failsWith(EngineMessage.VDS_INVALID_SERVER_ID));
}
@Test
public void maintenanceStatusIsSupportedForHostUpgrade() {
host.setStatus(VDSStatus.Maintenance);
assertThat(validator.statusSupportedForHostUpgrade(), isValid());
}
@Test
public void statusNotSupportedForHostUpgrade() {
VDS host = new VDS();
host.setStatus(VDSStatus.Unassigned);
assertThat(new UpgradeHostValidator(host).statusSupportedForHostUpgrade(),
failsWith(EngineMessage.CANNOT_UPGRADE_HOST_STATUS_ILLEGAL));
}
@Test
public void statusSupportedForHostUpgradeInternal() {
host.setStatus(VDSStatus.Maintenance);
assertThat(validator.statusSupportedForHostUpgradeInternal(), isValid());
}
@Test
public void statusNotSupportedForHostUpgradeInternal() {
host.setStatus(VDSStatus.Unassigned);
assertThat(validator.statusSupportedForHostUpgradeInternal(),
failsWith(EngineMessage.CANNOT_UPGRADE_HOST_STATUS_ILLEGAL));
}
@Test
public void updatesAvailable() {
host.getDynamicData().setUpdateAvailable(true);
assertThat(validator.updatesAvailable(), isValid());
}
@Test
public void updatesUnavailableForUpgradingOvirtNode() {
mockOvirtNode();
assertThat(validator.updatesAvailable(), isValid());
}
private void mockOvirtNode() {
host.setVdsType(VDSType.oVirtVintageNode);
}
@Test
public void updatesUnavailable() {
assertThat(validator.updatesAvailable(), failsWith(EngineMessage.NO_AVAILABLE_UPDATES_FOR_HOST));
}
@Test
public void imageProvidedForOvirtNode() {
String imageName = RandomUtils.instance().nextString(20);
assertThat(validator.imageProvidedForOvirtNode(imageName), isValid());
}
@Test
public void imageNotProvidedForOvirtNode() {
mockOvirtNode();
assertThat(validator.imageProvidedForOvirtNode(null),
failsWith(EngineMessage.VDS_CANNOT_INSTALL_MISSING_IMAGE_FILE));
}
@Test
public void hostWasInstalled() {
host.setHostOs(RandomUtils.instance().nextString(20));
assertThat(validator.hostWasInstalled(), isValid());
}
@Test
public void hostWasNotInstalled() {
assertThat(validator.hostWasInstalled(), failsWith(EngineMessage.CANNOT_UPGRADE_HOST_WITHOUT_OS));
}
}