package org.ovirt.engine.api.restapi.types; import java.math.BigDecimal; import java.util.Arrays; import org.junit.Test; import org.ovirt.engine.api.model.Host; import org.ovirt.engine.api.model.HostedEngine; import org.ovirt.engine.api.model.PmProxies; import org.ovirt.engine.api.model.PmProxyType; import org.ovirt.engine.api.model.Ssh; import org.ovirt.engine.api.model.User; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VdsStatic; import org.ovirt.engine.core.common.businessentities.pm.FenceProxySourceType; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.RpmVersion; public class HostMapperTest extends AbstractInvertibleMappingTest<Host, VdsStatic, VDS> { public HostMapperTest() { super(Host.class, VdsStatic.class, VDS.class); } @Override protected Host postPopulate(Host from) { while (from.getPort() == 0) { from.setPort(MappingTestHelper.rand(65535)); } from.getSpm().setPriority(3); from.getPowerManagement().setPmProxies(new PmProxies()); return from; } @Override protected VDS getInverse(VdsStatic to) { VDS inverse = new VDS(); inverse.setId(to.getId()); inverse.setVdsName(to.getName()); inverse.setHostName(to.getHostName()); inverse.setClusterId(to.getClusterId()); inverse.setPort(to.getPort()); inverse.setSshKeyFingerprint(to.getSshKeyFingerprint()); inverse.setHostProviderId(to.getHostProviderId()); inverse.setSshPort(to.getSshPort()); inverse.setSshUsername(to.getSshUsername()); inverse.setVdsSpmPriority(to.getVdsSpmPriority()); inverse.setConsoleAddress(to.getConsoleAddress()); inverse.setComment(to.getComment()); return inverse; } @Override protected void verify(Host model, Host transform) { assertNotNull(transform); assertEquals(model.getName(), transform.getName()); assertEquals(model.getComment(), transform.getComment()); assertEquals(model.getId(), transform.getId()); assertNotNull(transform.getCluster()); assertEquals(model.getCluster().getId(), transform.getCluster().getId()); assertEquals(model.getAddress(), transform.getAddress()); assertEquals(model.getPort(), transform.getPort()); assertEquals(model.getSpm().getPriority(), transform.getSpm().getPriority()); assertEquals(model.getDisplay().getAddress(), transform.getDisplay().getAddress()); } @Test public void testCpuMapping() { VDS vds = new VDS(); vds.setId(Guid.Empty); vds.setCpuCores(6); vds.setCpuSockets(3); vds.setCpuThreads(12); vds.setCpuModel("some cpu model"); vds.setCpuSpeedMh(5.5); Host host = HostMapper.map(vds, (Host) null); assertNotNull(host.getCpu()); assertEquals(Integer.valueOf(2), host.getCpu().getTopology().getCores()); assertEquals(Integer.valueOf(3), host.getCpu().getTopology().getSockets()); assertEquals(Integer.valueOf(2), host.getCpu().getTopology().getThreads()); assertEquals("some cpu model", host.getCpu().getName()); assertEquals(new BigDecimal(5.5), host.getCpu().getSpeed()); } @Test public void testVmSummaryMapping() { VDS vds = new VDS(); vds.setId(Guid.Empty); vds.setVmCount(2); vds.setVmActive(1); vds.setVmMigrating(1); Host host = HostMapper.map(vds, (Host) null); assertEquals(Integer.valueOf(2), host.getSummary().getTotal()); assertEquals(Integer.valueOf(1), host.getSummary().getActive()); assertEquals(Integer.valueOf(1), host.getSummary().getMigrating()); } @Test public void testMemoryMapping() { VDS vds = new VDS(); vds.setId(Guid.Empty); vds.setPhysicalMemMb(4000); Host host = HostMapper.map(vds, (Host) null); assertNotNull(host.getMemory()); assertEquals(Long.valueOf(4194304000L), host.getMemory()); } @Test public void testMaxSchedulingMemory() { VDS vds = new VDS(); vds.setId(Guid.Empty); vds.setPhysicalMemMb(4000); vds.setMemCommited(1000); vds.setMaxVdsMemoryOverCommit(150); vds.setReservedMem(65); Host host = HostMapper.map(vds, (Host) null); long vdsValue = (long) vds.getMaxSchedulingMemory(); Long hostValue = host.getMaxSchedulingMemory() / HostMapper.BYTES_IN_MEGABYTE; assertTrue(vdsValue > 0 && hostValue > 0 && vdsValue == hostValue); } @Test public void testHostOs() { VDS vds = new VDS(); vds.setId(Guid.Empty); vds.setHostOs("Fedora - 17 - 1"); Host host = HostMapper.map(vds, (Host) null); assertNotNull(host.getOs()); assertTrue(host.getOs().isSetVersion()); assertEquals("Fedora", host.getOs().getType()); assertEquals("17 - 1", host.getOs().getVersion().getFullVersion()); assertEquals(Long.valueOf(17), Long.valueOf(host.getOs().getVersion().getMajor())); assertEquals(Long.valueOf(1), Long.valueOf(host.getOs().getVersion().getMinor())); } @Test public void testVersion() { VDS vds = new VDS(); vds.setId(Guid.Empty); vds.setVersion(new RpmVersion("vdsm-4.10.0-10.fc17", "vdsm-", true)); Host host = HostMapper.map(vds, (Host) null); assertNotNull(host.getVersion()); assertEquals(Long.valueOf(4), Long.valueOf(host.getVersion().getMajor())); assertEquals(Long.valueOf(10), Long.valueOf(host.getVersion().getMinor())); assertEquals(Long.valueOf(0), Long.valueOf(host.getVersion().getRevision())); assertEquals(Long.valueOf(0), Long.valueOf(host.getVersion().getBuild())); assertEquals("vdsm-4.10.0-10.fc17", host.getVersion().getFullVersion()); } @Test public void testPmProxyPreferences() { VDS vds = new VDS(); vds.setId(Guid.Empty); vds.setFenceProxySources(Arrays.asList(FenceProxySourceType.CLUSTER, FenceProxySourceType.DC)); Host host = HostMapper.map(vds, (Host) null); assertEquals(2, host.getPowerManagement().getPmProxies().getPmProxies().size()); assertEquals(PmProxyType.CLUSTER, host.getPowerManagement().getPmProxies().getPmProxies().get(0).getType()); assertEquals(PmProxyType.DC, host.getPowerManagement().getPmProxies().getPmProxies().get(1).getType()); } @Test public void testUpdateSshHost() { Ssh sshConf = new Ssh(); sshConf.setPort(22); sshConf.setUser(new User()); sshConf.getUser().setUserName("root"); sshConf.setFingerprint("1234"); VdsStatic vdsStatic = new VdsStatic(); vdsStatic.setSshUsername("root"); vdsStatic.setSshPort(22); vdsStatic.setSshKeyFingerprint("1234"); VdsStatic mappedVdsStatic = HostMapper.map(sshConf, vdsStatic); assertEquals(22, mappedVdsStatic.getSshPort()); assertEquals("1234", mappedVdsStatic.getSshKeyFingerprint()); assertEquals("root", mappedVdsStatic.getSshUsername()); } @Test public void testLibvirtVersion() { VDS vds = new VDS(); vds.setId(Guid.Empty); vds.setLibvirtVersion(new RpmVersion("libvirt-0.9.10-21.el6_3.4", "libvirt-", true)); Host host = HostMapper.map(vds, (Host) null); assertNotNull(host.getLibvirtVersion()); assertEquals(Long.valueOf(0), Long.valueOf(host.getLibvirtVersion().getMajor())); assertEquals(Long.valueOf(9), Long.valueOf(host.getLibvirtVersion().getMinor())); assertEquals(Long.valueOf(0), Long.valueOf(host.getLibvirtVersion().getRevision())); assertEquals(Long.valueOf(10), Long.valueOf(host.getLibvirtVersion().getBuild())); assertEquals("libvirt-0.9.10-21.el6_3.4", host.getLibvirtVersion().getFullVersion()); } @Test public void testHostedEngineMapping() { VDS vds = new VDS(); vds.setId(Guid.Empty); vds.setHighlyAvailableIsConfigured(true); vds.setHighlyAvailableIsActive(false); vds.setHighlyAvailableScore(123); vds.setHighlyAvailableGlobalMaintenance(true); vds.setHighlyAvailableLocalMaintenance(false); HostedEngine hostedEngine = HostMapper.map(vds, (HostedEngine) null); assertNotNull(hostedEngine); assertEquals(Boolean.TRUE, hostedEngine.isConfigured()); assertEquals(Boolean.FALSE, hostedEngine.isActive()); assertEquals(Integer.valueOf(123), hostedEngine.getScore()); assertEquals(Boolean.TRUE, hostedEngine.isGlobalMaintenance()); assertEquals(Boolean.FALSE, hostedEngine.isLocalMaintenance()); } @Test public void testDevicePassthroughMapping() { VDS vds = new VDS(); vds.setId(Guid.Empty); vds.setHostDevicePassthroughEnabled(true); Host host = HostMapper.map(vds, (Host) null); assertNotNull(host); assertNotNull(host.getDevicePassthrough()); assertTrue(host.getDevicePassthrough().isEnabled()); } }