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 java.util.Arrays;
import java.util.List;
import org.junit.Test;
import org.ovirt.engine.core.common.businessentities.DiskImage;
import org.ovirt.engine.core.common.businessentities.DiskImageDynamic;
import org.ovirt.engine.core.common.businessentities.DiskInterface;
import org.ovirt.engine.core.common.businessentities.DiskType;
import org.ovirt.engine.core.common.businessentities.VolumeFormat;
import org.ovirt.engine.core.common.businessentities.VolumeType;
import org.ovirt.engine.core.compat.Guid;
public class DiskImageDynamicDAOTest extends BaseDAOTestCase{
private static final Guid EXISTING_IMAGE_ID = new Guid("42058975-3d5e-484a-80c1-01c31207f578");
private static final int TOTAL_DYNAMIC_DISK_IMAGES = 3;
private static final Guid EXISTING_VM_ID = new Guid("77296e00-0cad-4e5a-9299-008a7b6f4355");
private static final Guid EXISTING_IMAGE_DISK_TEMPLATE = new Guid("42058975-3d5e-484a-80c1-01c31207f578");
private DiskImageDynamicDAO dao;
private DiskImageDAO diskImageDao;
private DiskImageDynamic existingDynamic;
@Override
public void setUp() throws Exception {
super.setUp();
dao = prepareDAO(dbFacade.getDiskImageDynamicDAO());
diskImageDao = prepareDAO(dbFacade.getDiskImageDAO());
existingDynamic = dao.get(EXISTING_IMAGE_ID);
}
/**
* Ensures that retrieving with an incorrect ID returns null.
*/
@Test
public void testGetWithInvalidId() {
DiskImageDynamic result = dao.get(Guid.NewGuid());
assertNull(result);
}
/**
* Ensures that retrieving the dynamic image works as expected.
*/
@Test
public void testGet() {
DiskImageDynamic result = dao.get(existingDynamic.getId());
assertNotNull(result);
assertEquals(existingDynamic, result);
}
/**
* Ensures that retrieving all dynamic disk images works.
*/
@Test
public void testGetAll() {
List<DiskImageDynamic> result = dao.getAll();
assertNotNull(result);
assertFalse(result.isEmpty());
assertEquals(TOTAL_DYNAMIC_DISK_IMAGES, result.size());
}
/**
* Ensures that updating a dynamic image works.
*/
@Test
public void testUpdate() {
existingDynamic.setactual_size(existingDynamic.getactual_size() * 10);
dao.update(existingDynamic);
DiskImageDynamic result = dao.get(existingDynamic.getId());
assertNotNull(result);
assertEquals(existingDynamic, result);
}
/**
* Ensures that updating a dynamic image works.
*/
@Test
public void testUpdateLatency() {
existingDynamic.setReadLatency(0.000000001d);
existingDynamic.setWriteLatency(0.000000002d);
existingDynamic.setFlushLatency(0.999999999d);
dao.update(existingDynamic);
DiskImageDynamic result = dao.get(existingDynamic.getId());
assertNotNull(result);
assertEquals(existingDynamic, result);
}
@Test
public void testSave() {
DiskImage newImage = new DiskImage();
newImage = new DiskImage();
newImage.setId(Guid.NewGuid());
newImage.setinternal_drive_mapping("4");
newImage.setvolume_format(VolumeFormat.COW);
newImage.setvolume_type(VolumeType.Sparse);
newImage.setdisk_interface(DiskInterface.IDE);
newImage.setdisk_type(DiskType.Data);
newImage.setactive(true);
newImage.setvm_guid(EXISTING_VM_ID);
newImage.setit_guid(EXISTING_IMAGE_DISK_TEMPLATE);
newImage.setimage_group_id(Guid.NewGuid());
diskImageDao.save(newImage);
DiskImageDynamic dynamic = new DiskImageDynamic();
dynamic.setread_rate(5);
dynamic.setwrite_rate(6);
dynamic.setReadLatency(0d);
dynamic.setFlushLatency(0.0202020d);
dynamic.setWriteLatency(null);
dynamic.setId(newImage.getId());
dao.save(dynamic);
DiskImageDynamic result = dao.get(dynamic.getId());
assertNotNull(result);
assertEquals(dynamic,result);
}
/**
* Ensures that removing a dynamic image works as expected.
*/
@Test
public void testRemove() {
dao.remove(existingDynamic.getId());
DiskImageDynamic result = dao.get(existingDynamic.getId());
assertNull(result);
}
@Test
public void testUpdateAll() throws Exception {
DiskImageDynamic existingDynamic2 = dao.get(Guid.createGuidFromString("42058975-3d5e-484a-80c1-01c31207f579"));
existingDynamic.setactual_size(100);
existingDynamic2.setread_rate(120);
existingDynamic.setReadLatency(100d);
existingDynamic2.setReadLatency(0.00001d);
dao.updateAll(Arrays.asList(new DiskImageDynamic[] { existingDynamic, existingDynamic2 }));
assertEquals(existingDynamic, dao.get(existingDynamic.getId()));
assertEquals(existingDynamic2, dao.get(existingDynamic2.getId()));
}
}