@Test public void canDoActionSpaceValidationSucceeds() { Guid storageId = Guid.newGuid(); initializeCommand(storageId, VolumeType.Preallocated); mockVm(); mockEntities(storageId); doReturn(mockStorageDomainValidatorWithSpace()).when(command).createStorageDomainValidator(); assertTrue(command.canDoAction()); }
@Test public void canDoActionSucceedsOnDiskDomainCheckWhenStorageGuidInParamsMismatches() throws Exception { Guid storageId = Guid.newGuid(); initializeCommand(storageId); mockVmWithDisk(Guid.newGuid()); mockStorageDomain(storageId); mockStoragePoolIsoMap(); mockInterfaceList(); mockMaxPciSlots(); assertTrue(command.canDoAction()); }
/** CanDoAction should fail when the requested disk space is larger than 'MaxBlockDiskSize' */ @Test public void canDoActionMaxBlockDiskSizeCheckFails() { Guid storageId = Guid.newGuid(); AddDiskParameters parameters = createParameters(); parameters.setDiskInfo(createDiskImage(MAX_BLOCK_SIZE * 2)); initializeCommand(storageId, parameters); mockVm(); mockStorageDomain(storageId, StorageType.ISCSI); mockStoragePoolIsoMap(); mockMaxPciSlots(); assertFalse(command.canDoAction()); assertTrue( command .getReturnValue() .getCanDoActionMessages() .contains(EngineMessage.ACTION_TYPE_FAILED_DISK_MAX_SIZE_EXCEEDED.toString())); }
@Test public void canDoActionSpaceValidationFails() { Guid storageId = Guid.newGuid(); initializeCommand(storageId, VolumeType.Sparse); mockVm(); mockStorageDomain(storageId); mockStoragePoolIsoMap(); mockMaxPciSlots(); doReturn(mockStorageDomainValidatorWithoutSpace()).when(command).createStorageDomainValidator(); assertFalse(command.canDoAction()); assertTrue( command .getReturnValue() .getCanDoActionMessages() .contains( EngineMessage.ACTION_TYPE_FAILED_DISK_SPACE_LOW_ON_STORAGE_DOMAIN.toString())); }
/** CanDoAction should fail when creating a Shareable Disk with COW volume format */ @Test public void canDoActionShareableDiskVolumeFormatFails() { DiskImage image = createShareableDiskImage(); image.setvolumeFormat(VolumeFormat.COW); AddDiskParameters parameters = createParameters(); parameters.setDiskInfo(image); Guid storageId = Guid.newGuid(); initializeCommand(storageId, parameters); mockVm(); mockStorageDomain(storageId, Version.v3_1); mockStoragePoolIsoMap(); mockMaxPciSlots(); assertFalse(command.canDoAction()); assertTrue( command .getReturnValue() .getCanDoActionMessages() .contains(EngineMessage.SHAREABLE_DISK_IS_NOT_SUPPORTED_BY_VOLUME_FORMAT.toString())); }
@Test public void canDoActionFailWithUnsupportedDiskInterface() throws Exception { Guid storageId = Guid.newGuid(); initializeCommand(storageId); mockVm(); mockStorageDomain(storageId); mockStoragePoolIsoMap(); mockMaxPciSlots(); when(diskValidator.isReadOnlyPropertyCompatibleWithInterface()) .thenReturn(ValidationResult.VALID); when(diskValidator.isDiskInterfaceSupported(any(VM.class))) .thenReturn(new ValidationResult(EngineMessage.ACTION_TYPE_DISK_INTERFACE_UNSUPPORTED)); when(diskValidator.isVirtIoScsiValid(any(VM.class))).thenReturn(ValidationResult.VALID); when(command.getDiskValidator(any(Disk.class))).thenReturn(diskValidator); assertFalse(command.canDoAction()); assertTrue( command .getReturnValue() .getCanDoActionMessages() .contains(EngineMessage.ACTION_TYPE_DISK_INTERFACE_UNSUPPORTED.toString())); }
@Test public void canDoActionShareableDiskOnGlusterFails() { DiskImage image = createShareableDiskImage(); image.setvolumeFormat(VolumeFormat.RAW); AddDiskParameters parameters = createParameters(); parameters.setDiskInfo(image); Guid storageId = Guid.newGuid(); initializeCommand(storageId, parameters); mockVm(); mockStorageDomain(storageId, StorageType.GLUSTERFS, Version.v3_1); mockStoragePoolIsoMap(); mockMaxPciSlots(); assertFalse(command.canDoAction()); assertTrue( command .getReturnValue() .getCanDoActionMessages() .contains( EngineMessage.ACTION_TYPE_FAILED_SHAREABLE_DISKS_NOT_SUPPORTED_ON_GLUSTER_DOMAIN .toString())); }
/** Run the canDoAction and assert that it succeeds */ private void runAndAssertCanDoActionSuccess() { boolean canDoAction = command.canDoAction(); log.info("{}", command.getReturnValue().getCanDoActionMessages()); assertTrue(canDoAction); }