Moti Asayag has uploaded a new change for review. Change subject: engine: Simplify HostValidator hierarchy and cover with tests ......................................................................
engine: Simplify HostValidator hierarchy and cover with tests There isn't a good reason for UpgradeHostValidator to extend HostValidator. It also deserves its testing. Change-Id: I2f7e396e6523010d1deda9213de70beeaa38c074 Signed-off-by: Moti Asayag <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/hostdeploy/UpgradeHostCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/hostdeploy/UpgradeHostInternalCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/HostValidator.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/UpgradeHostValidator.java A backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/UpgradeHostValidatorTest.java 5 files changed, 138 insertions(+), 12 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/26/40926/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/hostdeploy/UpgradeHostCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/hostdeploy/UpgradeHostCommand.java index e11c342..ce96f6b 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/hostdeploy/UpgradeHostCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/hostdeploy/UpgradeHostCommand.java @@ -38,7 +38,7 @@ @Override protected boolean canDoAction() { - UpgradeHostValidator validator = new UpgradeHostValidator(getDbFacade(), getVds()); + UpgradeHostValidator validator = new UpgradeHostValidator(getVds()); return validate(validator.hostExists()) && validate(validator.statusSupportedForHostUpgrade()) diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/hostdeploy/UpgradeHostInternalCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/hostdeploy/UpgradeHostInternalCommand.java index 777e049..4d509d8 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/hostdeploy/UpgradeHostInternalCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/hostdeploy/UpgradeHostInternalCommand.java @@ -52,7 +52,7 @@ @Override protected boolean canDoAction() { - UpgradeHostValidator validator = new UpgradeHostValidator(getDbFacade(), getVds()); + UpgradeHostValidator validator = new UpgradeHostValidator(getVds()); return validate(validator.hostExists()) && validate(validator.statusSupportedForHostUpgradeInternal()); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/HostValidator.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/HostValidator.java index 8ab13dc..c8d6662 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/HostValidator.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/HostValidator.java @@ -29,6 +29,10 @@ this.host = host; } + public ValidationResult hostExists() { + return ValidationResult.failWith(VdcBllMessages.VDS_INVALID_SERVER_ID).when(getHost() == null); + } + public ValidationResult nameNotEmpty() { return ValidationResult.failWith(VdcBllMessages.ACTION_TYPE_FAILED_NAME_MAY_NOT_BE_EMPTY) .when(StringUtils.isEmpty(host.getName())); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/UpgradeHostValidator.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/UpgradeHostValidator.java index 117c692..5dbc881 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/UpgradeHostValidator.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/UpgradeHostValidator.java @@ -10,40 +10,41 @@ import org.ovirt.engine.core.common.businessentities.VDSStatus; import org.ovirt.engine.core.common.businessentities.VDSType; import org.ovirt.engine.core.common.errors.VdcBllMessages; -import org.ovirt.engine.core.dal.dbbroker.DbFacade; -public class UpgradeHostValidator extends HostValidator { +public class UpgradeHostValidator { - public UpgradeHostValidator(DbFacade dbFacade, VDS host) { - super(dbFacade, host); + private VDS host; + + public UpgradeHostValidator(VDS host) { + this.host = host; } public ValidationResult hostExists() { - return ValidationResult.failWith(VdcBllMessages.VDS_INVALID_SERVER_ID).when(getHost() == null); + return ValidationResult.failWith(VdcBllMessages.VDS_INVALID_SERVER_ID).when(host == null); } public ValidationResult statusSupportedForHostUpgrade() { return ValidationResult.failWith(VdcBllMessages.VDS_CANNOT_INSTALL_STATUS_ILLEGAL) - .unless(VdcActionUtils.canExecute(Arrays.asList(getHost()), VDS.class, VdcActionType.UpgradeHost)); + .unless(VdcActionUtils.canExecute(Arrays.asList(host), VDS.class, VdcActionType.UpgradeHost)); } public ValidationResult statusSupportedForHostUpgradeInternal() { return ValidationResult.failWith(VdcBllMessages.VDS_CANNOT_INSTALL_STATUS_ILLEGAL) - .when(getHost().getStatus() != VDSStatus.Maintenance); + .when(host.getStatus() != VDSStatus.Maintenance); } public ValidationResult updatesAvailable() { return ValidationResult.failWith(VdcBllMessages.NO_AVAILABLE_UPDATES_FOR_HOST) - .unless(getHost().getVdsType() == VDSType.oVirtNode || getHost().isUpdateAvailable()); + .unless(host.getVdsType() == VDSType.oVirtNode || host.isUpdateAvailable()); } public ValidationResult imageProvidedForOvirtNode(String image) { return ValidationResult.failWith(VdcBllMessages.VDS_CANNOT_INSTALL_MISSING_IMAGE_FILE) - .when(getHost().getVdsType() == VDSType.oVirtNode && StringUtils.isBlank(image)); + .when(host.getVdsType() == VDSType.oVirtNode && StringUtils.isBlank(image)); } public ValidationResult hostWasInstalled() { return ValidationResult.failWith(VdcBllMessages.CANNOT_UPGRADE_HOST_WITHOUT_OS) - .when(getHost().getHostOs() == null); + .when(host.getHostOs() == null); } } diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/UpgradeHostValidatorTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/UpgradeHostValidatorTest.java new file mode 100644 index 0000000..17a6cc6 --- /dev/null +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/UpgradeHostValidatorTest.java @@ -0,0 +1,121 @@ +package org.ovirt.engine.core.bll.validator; + +import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.when; +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.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; +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.VdcBllMessages; +import org.ovirt.engine.core.utils.RandomUtils; + +@RunWith(MockitoJUnitRunner.class) +public class UpgradeHostValidatorTest { + + @Mock + private VDS host; + + private UpgradeHostValidator validator; + + @Before + public void setup() { + validator = new UpgradeHostValidator(host); + } + + @Test + public void hostExists() { + assertThat(validator.hostExists(), isValid()); + } + + @Test + public void hostDoesNotExist() { + validator = new UpgradeHostValidator(null); + + assertThat(validator.hostExists(), failsWith(VdcBllMessages.VDS_INVALID_SERVER_ID)); + } + + @Test + public void statusSupportedForHostUpgrade() { + when(host.getStatus()).thenReturn(VDSStatus.Maintenance); + + assertThat(validator.statusSupportedForHostUpgrade(), isValid()); + } + + @Test + public void statusNotSupportedForHostUpgrade() { + VDS host = new VDS(); + host.setStatus(VDSStatus.Unassigned); + + assertThat(new UpgradeHostValidator(host).statusSupportedForHostUpgrade(), + failsWith(VdcBllMessages.VDS_CANNOT_INSTALL_STATUS_ILLEGAL)); + } + + @Test + public void statusSupportedForHostUpgradeInternal() { + when(host.getStatus()).thenReturn(VDSStatus.Maintenance); + + assertThat(validator.statusSupportedForHostUpgradeInternal(), isValid()); + } + + @Test + public void statusNotSupportedForHostUpgradeInternal() { + when(host.getStatus()).thenReturn(VDSStatus.Unassigned); + + assertThat(validator.statusSupportedForHostUpgradeInternal(), + failsWith(VdcBllMessages.VDS_CANNOT_INSTALL_STATUS_ILLEGAL)); + } + + @Test + public void updatesAvailable() { + when(host.isUpdateAvailable()).thenReturn(true); + + assertThat(validator.updatesAvailable(), isValid()); + } + + @Test + public void updatesUnavailableForUpgradingOvirtNode() { + when(host.getVdsType()).thenReturn(VDSType.oVirtNode); + + assertThat(validator.updatesAvailable(), isValid()); + } + + @Test + public void updatesUnavailable() { + assertThat(validator.updatesAvailable(), failsWith(VdcBllMessages.NO_AVAILABLE_UPDATES_FOR_HOST)); + } + + @Test + public void imageProvidedForOvirtNode() { + when(host.getVdsType()).thenReturn(VDSType.oVirtNode); + String imageName = RandomUtils.instance().nextString(20); + + assertThat(validator.imageProvidedForOvirtNode(imageName), isValid()); + } + + @Test + public void imageNotProvidedForOvirtNode() { + when(host.getVdsType()).thenReturn(VDSType.oVirtNode); + + assertThat(validator.imageProvidedForOvirtNode(null), + failsWith(VdcBllMessages.VDS_CANNOT_INSTALL_MISSING_IMAGE_FILE)); + } + + @Test + public void hostWasInstalled() { + when(host.getHostOs()).thenReturn(RandomUtils.instance().nextString(20)); + + assertThat(validator.hostWasInstalled(), isValid()); + } + + @Test + public void hostWasNotInstalled() { + assertThat(validator.hostWasInstalled(), failsWith(VdcBllMessages.CANNOT_UPGRADE_HOST_WITHOUT_OS)); + } +} -- To view, visit https://gerrit.ovirt.org/40926 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2f7e396e6523010d1deda9213de70beeaa38c074 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Moti Asayag <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
