package org.ovirt.engine.core.dao.network;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import org.ovirt.engine.core.common.businessentities.network.HostNetworkQos;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.BaseDaoTestCase;
import org.ovirt.engine.core.dao.FixturesTool;
public class HostNetworkQosDaoTest extends BaseDaoTestCase {
private HostNetworkQosDao dao;
@Override
public void setUp() throws Exception {
super.setUp();
dao = getDbFacade().getHostNetworkQosDao();
}
/**
* Ensures that retrieving with an invalid ID returns null.
*/
@Test
public void testGetWithInvalidId() {
assertNull(dao.get(FixturesTool.NETWORK_ENGINE)); // GUID used by network, not QoS
}
/**
* Ensures that the number of QoS entities returned for each data center is consistent.
*/
@Test
public void testGetAllForDc() {
assertEquals(3, dao.getAllForStoragePoolId(FixturesTool.STORAGE_POOL_MIXED_TYPES).size());
assertTrue(dao.getAllForStoragePoolId(FixturesTool.STORAGE_POOL_NFS).isEmpty());
}
/**
* Ensures that retrieving host network QoS by ID works as expected.
*/
@Test
public void testGet() {
HostNetworkQos persistedQos = dao.get(FixturesTool.HOST_NETWORK_QOS_A);
HostNetworkQos referenceQos = new HostNetworkQos();
referenceQos.setId(FixturesTool.HOST_NETWORK_QOS_A);
referenceQos.setName("host_network_qos_a");
referenceQos.setStoragePoolId(FixturesTool.STORAGE_POOL_MIXED_TYPES);
referenceQos.setOutAverageLinkshare(1000);
referenceQos.setOutAverageUpperlimit(2000);
referenceQos.setOutAverageRealtime(500);
assertNotNull(persistedQos);
assertEquals(referenceQos, persistedQos);
}
/**
* Ensures that after an update, the QoS entity is indeed persisted with new values.
*/
@Test
public void testUpdate() {
HostNetworkQos updatedQos = new HostNetworkQos();
updatedQos.setId(FixturesTool.HOST_NETWORK_QOS_B);
updatedQos.setName("host_network_qos_b");
updatedQos.setStoragePoolId(FixturesTool.STORAGE_POOL_MIXED_TYPES);
updatedQos.setOutAverageLinkshare(1000);
updatedQos.setOutAverageUpperlimit(2000);
updatedQos.setOutAverageRealtime(500);
assertNotEquals(updatedQos, dao.get(FixturesTool.HOST_NETWORK_QOS_B));
dao.update(updatedQos);
assertEquals(updatedQos, dao.get(FixturesTool.HOST_NETWORK_QOS_B));
}
/**
* Ensures that a pre-existing host network QoS entity is removed.
*/
@Test
public void testRemoveNetworkQos() {
assertNotNull(dao.get(FixturesTool.HOST_NETWORK_QOS_C));
dao.remove(FixturesTool.HOST_NETWORK_QOS_C);
assertNull(dao.get(FixturesTool.HOST_NETWORK_QOS_C));
}
/**
* Ensures that a newly-created host network QoS entity is properly persisted.
*/
@Test
public void testSaveNetworkQos() {
HostNetworkQos newQos = new HostNetworkQos();
newQos.setId(new Guid("de956031-6be2-43d6-bb90-5191c9253321"));
newQos.setName("host_network_qos_d");
newQos.setStoragePoolId(FixturesTool.STORAGE_POOL_NO_DOMAINS);
newQos.setOutAverageLinkshare(1000);
newQos.setOutAverageUpperlimit(2000);
newQos.setOutAverageRealtime(500);
assertNull(dao.get(newQos.getId()));
dao.save(newQos);
assertEquals(newQos, dao.get(newQos.getId()));
}
}