package org.ovirt.engine.core.utils.ovf;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.ovirt.engine.core.utils.MockConfigRule.mockConfig;
import java.util.ArrayList;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.ovirt.engine.core.common.businessentities.OriginType;
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.core.common.businessentities.storage.DiskImage;
import org.ovirt.engine.core.common.config.ConfigValues;
import org.ovirt.engine.core.common.osinfo.OsRepository;
import org.ovirt.engine.core.common.utils.SimpleDependencyInjector;
import org.ovirt.engine.core.compat.Version;
import org.ovirt.engine.core.utils.MockConfigRule;
@RunWith(MockitoJUnitRunner.class)
public class HostedEngineOvfWriterTest {
private VM vm;
private ArrayList<DiskImage> images;
private String emulatedMachine;
private Version version = Version.getLast();
private String cpuId;
private HostedEngineOvfWriter underTest;
@Mock
private OsRepository osRepository;
@Rule
public MockConfigRule mockConfigRule = new MockConfigRule(
mockConfig(ConfigValues.VdcVersion, version.getValue()),
mockConfig(ConfigValues.MaxNumOfVmCpus, version, 160),
mockConfig(ConfigValues.MaxNumOfVmSockets, version, 4));
@Before
public void setup() {
SimpleDependencyInjector.getInstance().bind(OsRepository.class, osRepository);
initVm();
images = new ArrayList<>();
emulatedMachine = "pc";
cpuId = "SandyBridge";
underTest = new HostedEngineOvfWriter(
vm,
images,
version,
emulatedMachine,
cpuId);
}
@Test
public void clusterEmulatedMachineIsBuilt() {
assertThat(underTest.build().getStringRepresentation().contains("<CustomEmulatedMachine>pc</CustomEmulatedMachine>"))
.isTrue();
}
@Test
public void clusterEmulatedMachineIsNull() {
emulatedMachine = null;
assertThatThrownBy(
() -> new HostedEngineOvfWriter(vm, images, version, emulatedMachine, cpuId))
.isInstanceOf(NullPointerException.class)
.hasMessageContaining("emulated machine");
}
@Test
public void cpuNameIsBuild() {
assertThat(underTest.build().getStringRepresentation().contains("<CustomCpuName>SandyBridge</CustomCpuName>"))
.isTrue();
}
@Test
public void cpuIdIsNull() {
cpuId = null;
assertThatThrownBy(
() -> new HostedEngineOvfWriter(vm, images, version, emulatedMachine, cpuId))
.isInstanceOf(NullPointerException.class)
.hasMessageContaining("cpuId");
}
@Test
public void notHostedEngineVM() {
vm.setOrigin(OriginType.OVIRT);
assertThatThrownBy(
() -> new HostedEngineOvfWriter(vm, images, version, emulatedMachine, cpuId))
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining("Hosted Engine");
}
private void initVm() {
vm = new VM();
vm.setName("Hosted Engine");
vm.setOrigin(OriginType.MANAGED_HOSTED_ENGINE);
vm.setVmOs(OsRepository.DEFAULT_X86_OS);
vm.setCpuPerSocket(4);
vm.setThreadsPerCpu(2);
}
}