package org.ovirt.engine.core.dao.qos;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.ovirt.engine.core.common.businessentities.qos.StorageQos;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.BaseDaoTestCase;
import org.ovirt.engine.core.dao.FixturesTool;
public class StorageQosDaoTest extends BaseDaoTestCase {
private StorageQosDao dao;
@Override
@Before
public void setUp() throws Exception {
super.setUp();
dao = getDbFacade().getStorageQosDao();
}
/**
* Ensures that retrieving with an invalid ID returns null.
*/
@Test
public void testGetWithInvalidId() {
assertNull(dao.get(Guid.newGuid()));
}
@Test
public void getStorageQos() {
StorageQos storageQos = new StorageQos();
storageQos.setId(FixturesTool.QOS_ID_1);
storageQos.setName("qos_a");
storageQos.setDescription("You don't understand. There's relationship George, and then there's the George you know. Baudy George, Funny George");
storageQos.setStoragePoolId(FixturesTool.STORAGE_POOL_MIXED_TYPES);
storageQos.setMaxThroughput(1000);
storageQos.setMaxReadThroughput(2000);
storageQos.setMaxWriteThroughput(500);
storageQos.setMaxIops(1000);
storageQos.setMaxReadIops(2000);
storageQos.setMaxWriteIops(500);
StorageQos fetched = dao.get(FixturesTool.QOS_ID_1);
assertNotNull(fetched);
assertEquals(storageQos, fetched);
}
@Test
public void updateStorageQos() {
StorageQos storageQos = dao.get(FixturesTool.QOS_ID_2);
assertNotNull(storageQos);
storageQos.setName("newB");
storageQos.setDescription("If I owned a company, my employees would love me. They’d have huge pictures of me up the walls and in their home, like Lenin.");
storageQos.setMaxThroughput(30);
storageQos.setMaxReadThroughput(30);
storageQos.setMaxWriteThroughput(30);
storageQos.setMaxIops(30);
storageQos.setMaxReadIops(30);
storageQos.setMaxWriteIops(30);
assertFalse(storageQos.equals(dao.get(FixturesTool.QOS_ID_2)));
dao.update(storageQos);
StorageQos fetched = dao.get(FixturesTool.QOS_ID_2);
assertNotNull(fetched);
assertEquals(storageQos, fetched);
}
@Test
public void removeStorageQos() {
assertNotNull(dao.get(FixturesTool.QOS_ID_3));
dao.remove(FixturesTool.QOS_ID_3);
assertNull(dao.get(FixturesTool.QOS_ID_3));
}
@Test
public void saveStorageQos() {
StorageQos storageQos = new StorageQos();
storageQos.setId(Guid.newGuid());
assertNull(dao.get(storageQos.getId()));
storageQos.setName("qos_d");
storageQos.setDescription("bla bla");
storageQos.setStoragePoolId(FixturesTool.STORAGE_POOL_MIXED_TYPES);
storageQos.setMaxThroughput(200);
storageQos.setMaxReadThroughput(200);
storageQos.setMaxWriteThroughput(200);
storageQos.setMaxIops(200);
storageQos.setMaxReadIops(200);
storageQos.setMaxWriteIops(200);
dao.save(storageQos);
StorageQos fetched = dao.get(storageQos.getId());
assertNotNull(fetched);
assertEquals(storageQos, fetched);
}
@Test
public void getAllStorageQosForStoragePool() {
List<StorageQos> allForStoragePoolId = dao.getAllForStoragePoolId(FixturesTool.STORAGE_POOL_MIXED_TYPES);
assertNotNull(allForStoragePoolId);
assertEquals(2, allForStoragePoolId.size());
}
@Test
public void getQosByDiskProfileId() {
StorageQos qos = dao.getQosByDiskProfileId(FixturesTool.DISK_PROFILE_1);
assertNotNull(qos);
assertEquals(FixturesTool.QOS_ID_1, qos.getId());
}
@Test
public void getQosByDiskProfileIds() {
Map<Guid, StorageQos> qosMap = dao.getQosByDiskProfileIds(Collections.singleton(FixturesTool.DISK_PROFILE_1));
assertNotNull(qosMap);
assertEquals(FixturesTool.QOS_ID_1, qosMap.get(FixturesTool.DISK_PROFILE_1).getId());
}
}