package org.ovirt.engine.api.restapi.types;
import org.junit.Test;
import org.ovirt.engine.api.model.Bonding;
import org.ovirt.engine.api.model.BootProtocol;
import org.ovirt.engine.api.model.HostNic;
import org.ovirt.engine.api.model.HostNics;
import org.ovirt.engine.api.model.Qos;
import org.ovirt.engine.api.model.QosType;
import org.ovirt.engine.core.common.businessentities.network.Bond;
import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.utils.RandomUtils;
public class HostNicMapperTest extends AbstractInvertibleMappingTest<HostNic, VdsNetworkInterface, VdsNetworkInterface> {
public HostNicMapperTest() {
super(HostNic.class, VdsNetworkInterface.class, VdsNetworkInterface.class);
}
@Override
protected void verify(HostNic model, HostNic transform) {
assertNotNull(transform);
assertEquals(model.getName(), transform.getName());
assertEquals(model.getId(), transform.getId());
assertNotNull(transform.getNetwork());
assertEquals(model.getNetwork().getName(), transform.getNetwork().getName());
assertNotNull(transform.getIp());
assertEquals(model.getIp().getAddress(), transform.getIp().getAddress());
assertEquals(model.getIp().getNetmask(), transform.getIp().getNetmask());
assertEquals(model.getIp().getGateway(), transform.getIp().getGateway());
assertNotNull(transform.getMac());
assertEquals(model.getMac().getAddress(), transform.getMac().getAddress());
assertNotNull(model.getBonding());
assertEquals(model.getBonding().getOptions().getOptions().size(), transform.getBonding()
.getOptions()
.getOptions()
.size());
for (int i = 0; i < model.getBonding().getOptions().getOptions().size(); i++) {
assertEquals(model.getBonding().getOptions().getOptions().get(i).getName(), transform.getBonding()
.getOptions()
.getOptions()
.get(i)
.getName());
assertEquals(model.getBonding().getOptions().getOptions().get(i).getValue(), transform.getBonding()
.getOptions()
.getOptions()
.get(i)
.getValue());
}
assertNotNull(model.getProperties());
}
@Test
public void testCustomNetworkConfigurationMapped() throws Exception {
VdsNetworkInterface entity = new VdsNetworkInterface();
HostNic model = HostNicMapper.map(entity, null);
assertFalse(model.isSetCustomConfiguration());
entity.setNetworkImplementationDetails(new VdsNetworkInterface.NetworkImplementationDetails(false, true));
model = HostNicMapper.map(entity, null);
assertEquals(entity.getNetworkImplementationDetails().isInSync(), !model.isCustomConfiguration());
entity.setNetworkImplementationDetails(new VdsNetworkInterface.NetworkImplementationDetails(true, true));
model = HostNicMapper.map(entity, null);
assertEquals(entity.getNetworkImplementationDetails().isInSync(), !model.isCustomConfiguration());
}
@Test
public void testBondMapping() {
HostNic model = new HostNic();
model.setId(Guid.newGuid().toString());
model.setName(RandomUtils.instance().nextString(10));
model.setBonding(new Bonding());
model.getBonding().setSlaves(new HostNics());
HostNic slaveA = new HostNic();
slaveA.setName(RandomUtils.instance().nextString(10));
model.getBonding().getSlaves().getHostNics().add(slaveA);
Bond entity = HostNicMapper.map(model, null);
assertNotNull(entity);
assertEquals(model.getId(), entity.getId().toString());
assertEquals(model.getName(), entity.getName());
assertEquals(model.getBonding().getSlaves().getHostNics().size(), entity.getSlaves().size());
for (HostNic slave : model.getBonding().getSlaves().getHostNics()) {
assertTrue(entity.getSlaves().contains(slave.getName()));
}
}
@Override
protected HostNic postPopulate(HostNic model) {
HostNic hostNIC = super.postPopulate(model);
Qos qos = hostNIC.getQos();
qos.setType(QosType.HOSTNETWORK);
qos.setName(null);
qos.setDataCenter(null);
model.setBootProtocol(MappingTestHelper.shuffle(BootProtocol.class, BootProtocol.AUTOCONF));
return hostNIC;
}
}