package org.ovirt.engine.api.restapi.types;
import java.util.List;
import org.ovirt.engine.api.model.BootDevice;
import org.ovirt.engine.api.model.BootProtocol;
import org.ovirt.engine.api.model.DisplayDisconnectAction;
import org.ovirt.engine.api.model.InheritableBoolean;
import org.ovirt.engine.api.model.NicConfiguration;
import org.ovirt.engine.api.model.SerialNumberPolicy;
import org.ovirt.engine.api.model.Template;
import org.ovirt.engine.api.model.TimeZone;
import org.ovirt.engine.api.model.VmType;
import org.ovirt.engine.api.restapi.utils.OsTypeMockUtils;
import org.ovirt.engine.core.common.businessentities.OriginType;
import org.ovirt.engine.core.common.businessentities.VmTemplate;
public class TemplateMapperTest
extends AbstractInvertibleMappingTest<Template, VmTemplate, VmTemplate> {
public TemplateMapperTest() {
super(Template.class, VmTemplate.class, VmTemplate.class);
}
@Override
public void setUp() {
super.setUp();
OsTypeMockUtils.mockOsTypes();
}
@Override
protected Template postPopulate(Template from) {
from.setType(MappingTestHelper.shuffle(VmType.class));
from.setOrigin(OriginType.VMWARE.name().toLowerCase());
List<BootDevice> devices = from.getOs().getBoot().getDevices().getDevices();
for (int i = 0; i < devices.size(); i++) {
devices.set(i, MappingTestHelper.shuffle(BootDevice.class));
}
while (from.getCpu().getTopology().getSockets() == 0) {
from.getCpu().getTopology().setSockets(MappingTestHelper.rand(100));
}
while (from.getCpu().getTopology().getCores() == 0) {
from.getCpu().getTopology().setCores(MappingTestHelper.rand(100));
}
from.setTimeZone(new TimeZone());
from.getTimeZone().setName("Australia/Darwin");
from.getSerialNumber().setPolicy(SerialNumberPolicy.CUSTOM);
from.getMigration().setAutoConverge(InheritableBoolean.TRUE);
from.getMigration().setCompressed(InheritableBoolean.TRUE);
from.getDisplay().setDisconnectAction(DisplayDisconnectAction.LOCK_SCREEN.toString());
for (NicConfiguration nicConfiguration : from.getInitialization().getNicConfigurations().getNicConfigurations()) {
nicConfiguration.setBootProtocol(MappingTestHelper.shuffle(BootProtocol.class, BootProtocol.AUTOCONF));
}
return from;
}
@Override
protected void verify(Template model, Template transform) {
assertNotNull(transform);
assertEquals(model.getName(), transform.getName());
assertEquals(model.getId(), transform.getId());
assertEquals(model.getDescription(), transform.getDescription());
assertEquals(model.getComment(), transform.getComment());
assertEquals(model.getType(), transform.getType());
assertEquals(model.getOrigin(), transform.getOrigin());
assertTrue(Math.abs(model.getMemory() - transform.getMemory()) <= (1024 * 1024));
assertNotNull(transform.getCluster());
assertEquals(model.getCluster().getId(), transform.getCluster().getId());
assertNotNull(transform.getCpu());
assertNotNull(transform.getCpu().getTopology());
assertTrue(Math.abs(model.getCpu().getTopology().getCores() -
transform.getCpu().getTopology().getCores()) < model.getCpu().getTopology().getSockets());
assertEquals(model.getCpu().getTopology().getSockets(),
transform.getCpu().getTopology().getSockets());
assertNotNull(transform.isSetOs());
assertEquals(model.getBios().getBootMenu().isEnabled(), transform.getBios().getBootMenu().isEnabled());
assertTrue(transform.getOs().isSetBoot());
assertEquals(model.getOs().getBoot().getDevices().getDevices(),
transform.getOs().getBoot().getDevices().getDevices());
assertEquals(model.getOs().getKernel(), transform.getOs().getKernel());
assertEquals(model.getOs().getInitrd(), transform.getOs().getInitrd());
assertEquals(model.getOs().getCmdline(), transform.getOs().getCmdline());
assertNotNull(model.getDisplay());
assertEquals(model.getDisplay().getMonitors(), transform.getDisplay().getMonitors());
assertEquals(model.getDisplay().isSingleQxlPci(), transform.getDisplay().isSingleQxlPci());
assertEquals(model.getDisplay().isAllowOverride(), transform.getDisplay().isAllowOverride());
assertEquals(model.getDisplay().getKeyboardLayout(), transform.getDisplay().getKeyboardLayout());
assertEquals(model.getTimeZone().getName(), transform.getTimeZone().getName());
assertEquals(model.getDisplay().isSmartcardEnabled(), transform.getDisplay().isSmartcardEnabled());
assertEquals(model.isDeleteProtected(), transform.isDeleteProtected());
assertEquals(model.isTunnelMigration(), transform.isTunnelMigration());
assertEquals(model.getMigrationDowntime(), transform.getMigrationDowntime());
assertEquals(model.getVersion().getVersionName(), transform.getVersion().getVersionName());
assertEquals(model.getVersion().getBaseTemplate().getId(), transform.getVersion().getBaseTemplate().getId());
assertEquals(model.getSerialNumber().getPolicy(), transform.getSerialNumber().getPolicy());
assertEquals(model.getSerialNumber().getValue(), transform.getSerialNumber().getValue());
assertEquals(model.getDisplay().isFileTransferEnabled(), transform.getDisplay().isFileTransferEnabled());
assertEquals(model.getDisplay().isCopyPasteEnabled(), transform.getDisplay().isCopyPasteEnabled());
assertEquals(model.isStartPaused(), transform.isStartPaused());
assertEquals(model.getMigration().getAutoConverge(), transform.getMigration().getAutoConverge());
assertEquals(model.getMigration().getCompressed(), transform.getMigration().getCompressed());
assertEquals(model.getDisplay().getDisconnectAction(), transform.getDisplay().getDisconnectAction());
}
}