package org.ovirt.engine.core.dao;
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 static org.junit.Assert.assertTrue;
import java.util.List;
import org.junit.Test;
import org.ovirt.engine.core.common.businessentities.StorageFormatType;
import org.ovirt.engine.core.common.businessentities.StoragePoolStatus;
import org.ovirt.engine.core.common.businessentities.StorageType;
import org.ovirt.engine.core.common.businessentities.storage_pool;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.compat.Version;
public class StoragePoolDAOTest extends BaseDAOTestCase {
private StoragePoolDAO dao;
private storage_pool existingPool;
private Guid vds;
private Guid vdsGroup;
private Guid storageDomain;
private storage_pool newPool;
@Override
public void setUp() throws Exception {
super.setUp();
dao = prepareDAO(dbFacade.getStoragePoolDAO());
existingPool = dao
.get(new Guid("6d849ebf-755f-4552-ad09-9a090cda105d"));
existingPool.setstatus(StoragePoolStatus.Up);
vds = new Guid("afce7a39-8e8c-4819-ba9c-796d316592e6");
vdsGroup = new Guid("b399944a-81ab-4ec5-8266-e19ba7c3c9d1");
storageDomain = new Guid("72e3a666-89e1-4005-a7ca-f7548004a9ab");
newPool = new storage_pool();
newPool.setname("newPoolDude");
newPool.setcompatibility_version(new Version("3.0"));
}
/**
* Ensures that an invalid id results in a null pool.
*/
@Test
public void testGetWithInvalidId() {
storage_pool result = dao.get(Guid.NewGuid());
assertNull(result);
}
/**
* Ensures the right object is returned by id.
*/
@Test
public void testGet() {
storage_pool result = dao.get(existingPool.getId());
assertNotNull(result);
assertEquals(existingPool, result);
}
/**
* Ensures an invalid name returns null.
*/
@Test
public void testGetByNameWithInvalidName() {
storage_pool result = dao.getByName("farkle");
assertNull(result);
}
/**
* Ensures retrieving by name works as expected.
*/
@Test
public void testGetByName() {
storage_pool result = dao.getByName(existingPool.getname());
assertNotNull(result);
assertEquals(existingPool, result);
}
/**
* Ensures the right pool is retrieves for the given VDS.
*/
@Test
public void testGetForVds() {
storage_pool result = dao.getForVds(vds);
assertNotNull(result);
}
/**
* Ensures the right pool is returned.
*/
@Test
public void testGetForVdsGroup() {
storage_pool result = dao.getForVdsGroup(vdsGroup);
assertNotNull(result);
}
/**
* Ensures that a collection of pools are returned.
*/
@Test
public void testGetAll() {
List<storage_pool> result = dao.getAll();
assertNotNull(result);
assertFalse(result.isEmpty());
}
/**
* Ensures that all storage pools for the given domain are returned.
*/
@Test
public void testGetAllForStorageDomain() {
List<storage_pool> result = dao.getAllForStorageDomain(storageDomain);
assertNotNull(result);
assertFalse(result.isEmpty());
}
/**
* Ensures that an empty collection is returned for a type that's not in the database.
*/
@Test
public void testGetAllOfTypeForUnrepresentedType() {
List<storage_pool> result = dao.getAllOfType(StorageType.UNKNOWN);
assertNotNull(result);
assertTrue(result.isEmpty());
}
/**
* Ensures that only pools of the given type are returned.
*/
@Test
public void testGetAllOfType() {
List<storage_pool> result = dao.getAllOfType(StorageType.ISCSI);
assertNotNull(result);
assertFalse(result.isEmpty());
for (storage_pool pool : result) {
assertEquals(StorageType.ISCSI, pool.getstorage_pool_type());
}
}
@Test
public void testSave() {
dao.save(newPool);
storage_pool result = dao.getByName(newPool.getname());
assertNotNull(result);
assertEquals(newPool, result);
}
/**
* Ensures that updating a storage pool works as expected.
*/
@Test
public void testUpdate() {
existingPool.setdescription("Farkle");
existingPool.setStoragePoolFormatType(StorageFormatType.V1);
dao.update(existingPool);
storage_pool result = dao.get(existingPool.getId());
assertNotNull(result);
assertEquals(existingPool, result);
}
/**
* Ensures that partial updating a storage pool works as expected.
*/
@Test
public void testPartialUpdate() {
existingPool.setdescription("NewFarkle");
dao.updatePartial(existingPool);
storage_pool result = dao.get(existingPool.getId());
assertNotNull(result);
assertEquals(existingPool, result);
}
/**
* Ensures that updating a storage pool status works as expected.
*/
@Test
public void testUpdateStatus() {
dao.updateStatus(existingPool.getId(), StoragePoolStatus.NotOperational);
existingPool.setstatus(StoragePoolStatus.NotOperational);
storage_pool result = dao.get(existingPool.getId());
assertNotNull(result);
assertEquals(existingPool, result);
}
/**
* Ensures that removing a storage pool works as expected.
*/
@Test
public void testRemove() {
dao.remove(existingPool.getId());
storage_pool result = dao.get(existingPool.getId());
assertNull(result);
}
}