package org.ovirt.engine.api.restapi.types; import java.util.List; import java.util.Random; import org.junit.Test; import org.ovirt.engine.api.model.BootProtocol; import org.ovirt.engine.api.model.Ip; import org.ovirt.engine.api.model.IpAddressAssignment; import org.ovirt.engine.api.model.IpVersion; import org.ovirt.engine.api.model.QosType; import org.ovirt.engine.api.restapi.utils.CustomPropertiesParser; import org.ovirt.engine.core.common.businessentities.network.IpV6Address; import org.ovirt.engine.core.common.businessentities.network.Ipv6BootProtocol; import org.ovirt.engine.core.common.businessentities.network.NetworkAttachment; public class NetworkAttachmentMapperTest extends AbstractInvertibleMappingTest<org.ovirt.engine.api.model.NetworkAttachment, NetworkAttachment, NetworkAttachment> { private static final String ADDRESS = "address"; private static final String GATEWAY = "gateway"; private static final int PREFIX = 77; private static final String PREFIX_STR = String.valueOf(PREFIX); public NetworkAttachmentMapperTest() { super(org.ovirt.engine.api.model.NetworkAttachment.class, NetworkAttachment.class, NetworkAttachment.class); } @Test public void testMapFromEntityIpv6Assignment() { final IpV6Address entity = new IpV6Address(); entity.setBootProtocol(Ipv6BootProtocol.AUTOCONF); entity.setAddress(ADDRESS); entity.setGateway(GATEWAY); entity.setPrefix(PREFIX); final IpAddressAssignment actual = NetworkAttachmentMapper.mapIpv6AddressAssignment(entity); assertEquals(BootProtocol.AUTOCONF, actual.getAssignmentMethod()); assertEquals(ADDRESS, actual.getIp().getAddress()); assertEquals(GATEWAY, actual.getIp().getGateway()); assertEquals(PREFIX_STR, actual.getIp().getNetmask()); } @Test public void testMapFromModelIpv6Assignment() { final IpAddressAssignment model = new IpAddressAssignment(); model.setAssignmentMethod(BootProtocol.STATIC); final Ip ip = new Ip(); ip.setAddress(ADDRESS); ip.setGateway(GATEWAY); ip.setNetmask(PREFIX_STR); model.setIp(ip); final IpV6Address actual = NetworkAttachmentMapper.mapIpv6AddressAssignment(model); assertEquals(Ipv6BootProtocol.STATIC_IP, actual.getBootProtocol()); assertEquals(ADDRESS, actual.getAddress()); assertEquals(GATEWAY, actual.getGateway()); assertEquals(Integer.valueOf(PREFIX), actual.getPrefix()); } @Override protected void verify(org.ovirt.engine.api.model.NetworkAttachment model, org.ovirt.engine.api.model.NetworkAttachment transform) { assertNotNull(transform); assertEquals(model.getId(), transform.getId()); assertNotNull(transform.getNetwork()); assertEquals(model.getNetwork().getId(), transform.getNetwork().getId()); assertNotNull(transform.getHostNic()); assertEquals(model.getHostNic().getId(), transform.getHostNic().getId()); assertNotNull(transform.getProperties()); assertEquals(CustomPropertiesParser.toMap(model.getProperties()), CustomPropertiesParser.toMap(transform.getProperties())); assertNotNull(transform.getIpAddressAssignments()); List<IpAddressAssignment> transformAddresses = transform.getIpAddressAssignments().getIpAddressAssignments(); assertNotNull(transformAddresses); List<IpAddressAssignment> modelAddresses = model.getIpAddressAssignments().getIpAddressAssignments(); assertEquals(modelAddresses.size(), transformAddresses.size()); for (int i = 0; i < modelAddresses.size(); i++) { assertEquals(modelAddresses.get(i).getAssignmentMethod(), transformAddresses.get(i).getAssignmentMethod()); Ip modelAddress = modelAddresses.get(i).getIp(); Ip transformAddress = transformAddresses.get(i).getIp(); assertEquals(modelAddress.getAddress(), transformAddress.getAddress()); assertEquals(modelAddress.getNetmask(), transformAddress.getNetmask()); assertEquals(modelAddress.getGateway(), transformAddress.getGateway()); } } @Override protected org.ovirt.engine.api.model.NetworkAttachment postPopulate(org.ovirt.engine.api.model.NetworkAttachment model) { model.getIpAddressAssignments().getIpAddressAssignments().get(0).setAssignmentMethod(BootProtocol.DHCP); model.getQos().setType(QosType.HOSTNETWORK); for (IpAddressAssignment ipAddressAssignment : model.getIpAddressAssignments().getIpAddressAssignments()) { if (IpVersion.V6 == ipAddressAssignment.getIp().getVersion()) { ipAddressAssignment.getIp().setNetmask(String.valueOf(new Random().nextInt(128))); } } return super.postPopulate(model); } }