package org.ovirt.engine.core.bll;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.ovirt.engine.core.common.action.ImportVmParameters;
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.core.common.config.Config;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dal.VdcBllMessages;
@RunWith(PowerMockRunner.class)
@PrepareForTest({ Config.class, ImportExportCommon.class })
public class ImportVmCommandTest {
@Test
public void insufficientDiskSpace() {
final int lotsOfSpace = 1073741824;
final int diskSpacePct = 0;
final ImportVmCommand<ImportVmParameters> c = setupDiskSpaceTest(lotsOfSpace, diskSpacePct);
assertFalse(c.canDoAction());
assertTrue(c.getReturnValue()
.getCanDoActionMessages()
.contains(VdcBllMessages.ACTION_TYPE_FAILED_DISK_SPACE_LOW.toString()));
}
@Test
public void sufficientDiskSpace() {
final int extraDiskSpaceRequired = 0;
final int diskSpacePct = 0;
final ImportVmCommand<ImportVmParameters> c = setupDiskSpaceTest(extraDiskSpaceRequired, diskSpacePct);
assertTrue(c.canDoAction());
}
private ImportVmCommand<ImportVmParameters> setupDiskSpaceTest(final int diskSpaceRequired, final int diskSpacePct) {
ConfigMocker cfgMocker = new ConfigMocker();
cfgMocker.mockConfigLowDiskSpace(diskSpaceRequired);
cfgMocker.mockConfigLowDiskPct(diskSpacePct);
cfgMocker.mockLimitNumberOfNetworkInterfaces(Boolean.TRUE);
mockImportExportCommonAlwaysTrue();
return new TestHelperImportVmCommand(createParameters());
}
protected ImportVmParameters createParameters() {
final VM v = createVM();
v.setvm_name("testVm");
final ImportVmParameters p =
new ImportVmParameters(v, Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid());
return p;
}
protected VM createVM() {
final VM v = new VM();
v.setvm_guid(Guid.NewGuid());
v.setDiskSize(2);
return v;
}
protected static void mockImportExportCommonAlwaysTrue() {
ImportExportCommonMocker mocker = new ImportExportCommonMocker();
mocker.mockCheckStorageDomain(true);
mocker.mockCheckStoragePool(true);
}
}